這次的作業一共有三個項目
分別是
平滑化、
銳化以及
中值濾波器這些都是對圖像內部的pixel做調整、來達到影像處理的效果
接下來就開始分析這三樣處理方式吧!
不過在介紹之前,我先說明一下我第一個遭遇到的
錯誤

這些是compile之後、按下任一功能按鈕所跳出的視窗
這意味著你所要處理圖像的位子已超過你實際上影像的大小
會發生這個問題是因為通常我們在設定迴圈範圍時
往往是使用Image1->Height,這樣會有個問題
倘若起初Image1的框線被拉的比讀入的圖像還要大
那麼這樣的迴圈範圍便會造成error
如果要改善這樣的情況,必須要換個撰寫方式
Image1->Picture->Bitmap->Height
如此一來,便精確的訂定了迴圈的範圍必須是圖像本身的大小
那麼出現錯誤的狀況就消失囉!
好~那麼就開始這次的作業介紹
首先是平滑化
正如其名,就是把整體圖像變得柔順平滑
甚至是模糊
從以下的蓮花圖就可以明顯感受出差別
(左為原圖,右為平滑過後)

而平滑化的原理在於將
圖像九宮格的pixel值相加做平均
使得相鄰九宮格的pixel變得相近
原本較精細的色彩變成了粗獷的色塊
這也是圖像會變得
平滑模糊的關係或許將圖像變模糊這樣的功能聽起來似乎是物得其反
不過其實也是有他的
妙用所在
以下灑滿白點雜訊的
萊娜圖
經過平滑化之後,雖然圖像變得較不清晰
但是
白點雜訊明顯少了很多!

除了去雜訊
若是想做出
意境朦朧的效果
那麼對圖像平滑化會是很好的選擇

接下來是
銳化和
平滑化正好相反
銳化會使得影像的
邊緣變得清晰銳利請參考以下的
比較圖 
銳化的原理比平滑化還要再更複雜一點
其演算法即為
取九宮格正中間的pixel值將該值乘上九並減去相鄰的八格之pixel值把相減過後所得到的數值全部丟進九宮格
倘若那個值超過255則直接設值為255
反之小於0就設值為0
能將圖像變得銳利相當
神奇
於是乎我找了一張有
焦點的圖片來做銳化

原先有聚焦的花銳化後依然清晰
甚至有點過頭
而後頭模糊的草經過銳化後
也只是稍微險露出一點輪廓
效果沒有我所期望的好之後我又找了一張雜訊很多的圖像來測試

其實我只是好奇他會變成怎樣
在測試過過無數張圖後,這張不得不放上來
因為他有種很奇妙的變化
避開雜訊變得更明顯不說
那棵樹和左下角的樹葉清晰到不行
銳化真的非常有趣最後,就是
中值濾波囉!
中值濾波這個名子包含了做法和效果
他可以
去除圖像中簡單的雜訊(胡椒鹽)
而且效果比平滑化還要好唷!
他的做法和前兩者大同小異
先取九宮格的pixel值
然後將其九個值拿來排序
將排序過後正中間的那個值取代九宮格的所有pixel
RGB三原色皆要做此動作
即可完成中值濾波
用文字敘述或許艱澀難懂
因此我用小畫家把他繪成
意示圖
為了要測試中值濾波的功能
必須要先在原圖灑上胡椒鹽
而胡椒鹽只是以隨機的方式灑上黑白點
在此就不多贅述
見以下灑胡椒鹽及中值濾波的圖

雖然有些圖像變模糊的副作用
但是雜訊去除得更徹底~
無法盡善盡美
不過
效果已經非常的好
然而為什麼不能做到滴水不漏
可能是因為
九宮格中有五個或超過五個是黑點或是白點導致排序後取中間依然還是黑、白點
因此會發生除不乾淨的情況
以下是我再
灑了更多的胡椒鹽
然後做中值濾波

再灑更多胡椒鹽、再做中值濾波

很明顯的發現了有越多胡椒鹽在上面
中值濾波的效果就越差
原因是胡椒鹽過於密集
導致上述"九宮格中有五格或更多的點是黑色或白色"
之情況發生率提高
因此中值濾波過後的圖就會不乾淨
心得感想:
經過實際程式碼的撰寫及多次丟圖進去測試
原先覺得複雜難懂的平滑化、銳化、中值濾波變得簡單
加上原圖去比較結果就非常的有感覺
在撰寫過程中所遇到的問題就只有因為不夠細心
而造成的semantic error,導致圖像跑出來的結果是錯的
但回頭看看程式碼再稍微想一下演算法原理
這些錯誤很快就能夠修正
正如同我第一次作業所說
再加上這三樣功能,我離自製小小PHOTOSHOP的目標又更進一步了!