2015年12月12日 星期六

資工四甲 01360912 陳奕穎 HW4

作業四要我們做三個濾波器,分別是平滑、中值、銳化,用處各不相同,平滑是為了移除影像中的一些小細節,中值是為了去除雜訊,銳化和平滑正好相反,銳化是用來凸顯細節,實作如下圖。

平滑(Normal)

我有 Mask 用 7 x 7 所以看起來模糊很多

平滑(Weight)

雖然有模糊,可是很不明顯

中值

先將圖片灑上胡椒鹽

去除 6% 的胡椒鹽,效果顯拔

銳化(Normal)

沒有考慮角落的銳化

有考慮角落,效果非常顯著



心得    

    作業四依舊花了我不少時間才完成,我花了好多時間在處理邊界值,在邊界的地方用九宮格會超出去,然後只取九宮格有的地方,權重要重算,而且我又不是很想用很多 if else 來做判斷,所以著實令我傷透了腦筋,大概有兩天多的時間都在想這個要怎麼解,最後才想出一個我比較滿意的方法。
   
    這關過了以後,就很順利的把三個濾波器都寫出來了,可是我的銳化濾波器一直會有奇怪的顏色,檢查了很久,公式都沒有錯,完全找不出哪裡有錯,所以我就想,肯定是我在哪裡老師有說但我又有漏掉沒聽到。
   
    於是我就去 blogger 裡面翻找之前有修這門課的人寫的程式碼出來參考,順便看看他們是怎麼解決邊界值問題的,不看沒事,一看晴天霹靂阿 !    原來只要忽略掉邊界值就好......,反正一張圖有沒有去改邊界值,人眼是看不出來的,這問題害我白白花了好多時間,結果只要這麼簡單就解決了,不過有看到跟我一樣在跟邊界值奮鬥的勇者,而且它還是用 if else ,我內心就比較沒那麼難受了,因為至少我知道了我不是孤獨的 !
   
    然後果不其然,我確實漏聽了,我的銳化濾波器少了判斷新的値是否大於 255 或者是小於 0 ,如果大於 255 就要等於 255 ,如果小於 0 就要等於 0 ,加上這個判斷式後,我的程式就很完美的呈現出我想要的結果了。

程式碼在這裡 :
標頭檔
程式碼

沒有留言:

張貼留言