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. 輸入權重後執行轉換(執行結果在右圖中的中間下方的影像)。

1 則留言:

  1. 這些作業的程式要寫出來, 其實是不難的。然而, 弄懂這些濾波器背後理論的意義, 將來才有能力隨心所欲的運用, 我覺得這是最重要的! 不來上課沒關係, 至少要像小天一樣, 把課本內容看懂吧!

    回覆刪除