2010年1月8日 星期五
HW6
hw6 : 空間濾波器
效果:
可以使影像變模糊化或銳利化。
規則:
輸入數值完畢後,會先判斷是灰階影像還是彩色影像,再一判斷的結果決定要由哪一個 Image(#number) 元件執行轉換動作。
執行成果:
1. 當輸入是一張灰階影像時 :
開啟一張灰階影像後,手動輸入一個 3 * 3 的陣列值使其影像轉換。
2. 當輸入是一張彩色影像時 :
開啟一張色彩影像,先做色彩變灰階影像轉換後輸出在另一個 Image(#number) 上,假設該 Image(#number) -> Name -> Image_Trans ,後在輸入 3 * 3 數值按下轉換按鈕時,會先判斷 Image_Trans 是否存在,存在代表已轉換成灰階影像,就可由 Image_Trans 的圖來做轉換。
其判斷圖像的程式碼如下:
Graphics::TBitmap *Bmp = new Graphics::TBitmap();
//先判斷 Image2 是否有開啟一張影像圖。
//當 Image2->Picture->Bitmap->Empty==true 時,代表還未開啟一張圖像!
if (Image2->Picture->Bitmap->Empty==true)
ShowMessage("請載入圖檔!!");
//若以 Image2 已存在時。
else
//開始判斷開啟的影像是否由彩色轉成灰階值,由於這個地方我是以手動操作色彩轉灰階,所以假若開啟的圖像是彩色的,若是直接由彩色圖像做權重加成的轉換,則輸出的圖就會以灰階的型態呈現,但是因為權重是由輸入者輸入,所以輸出的影像也可能會有變成類似紅外線感熱器所呈現的效果,但是是以灰階的型態呈現就是了!
{
if(Image17->Picture->Bitmap->Empty==false) //當有轉換成灰階值時
Bmp->Assign(Image_Trans -> Picture -> Bitmap);
else //當開啟的圖是灰階時
Bmp->Assign(Image2 -> Picture -> Bitmap);
}
執行結果圖片說明:
在右邊上面的圖是以一張黑白影像執行的結果。
現在右手邊的圖則是以一張彩色影像執行的結果。
1. 先開啟一張彩色影像(如右圖中的左上方影像)。
2. 做灰階轉換處理(執行結果在右圖中右下方的影像)。
3. 輸入權重後執行轉換(執行結果在右圖中的中間下方的影像)。
這些作業的程式要寫出來, 其實是不難的。然而, 弄懂這些濾波器背後理論的意義, 將來才有能力隨心所欲的運用, 我覺得這是最重要的! 不來上課沒關係, 至少要像小天一樣, 把課本內容看懂吧!
回覆刪除