用 C++ Builder 撰寫一個 3*3 的濾鏡處理程式, 功能包括:
1. 平滑化 (smoothing)。
2. 銳利化 (sharping)
3. 中位數濾鏡處理 (medium filtering), 去除胡椒鹽雜訊。
-----------------------------------------------------------------------------------
由於某次上課當天剛好是12/31日
沒有跟著大家一起認真的討論程式細節
只好翻書自己領悟了
也上網找的一些跟[空間濾波]有關的資料
終於大致上知道演算的方法!
▼我選的原圖,Google上找到的,上面的胡椒鹽看起來應該是後來灑上去的
就開始第一步吧!
有關平滑化的處理方式
我也是用老師的方法,用九宮格的區域去做的(就是3x3均值濾波器)
將九宮格內的數值相加然後乘以九分之一
又因為是彩色的圖,所以用最笨又最簡單的方法做三次同樣的動作
▼經過 平滑化 處理,可以看到胡椒鹽模糊了
接著是銳利化的處理
[據說]銳利化的方式是...
喔,直接用圖解釋好了
意思就是
在所選的九宮格區域內的[十字區域],就是上圖有數字的那五個洞
乘上相對應的數值然後加起來
就是我們要的新數值了
不過要小心
因為數字有可能會超過255色,也可能低於0
▼經過 銳利化 處理,可以看到胡椒鹽跟人物的輪廓變明顯了
最後就是要把胡椒鹽給拿掉啦!
有關於他的學術名詞[中位數濾鏡處理]
意思就是把所選的九宮格內的數字
依照大小排序之後取出中間值
然後在把九宮格最中間的洞換成我們剛剛排序完之後得到的中間值
如果這張圖沒有什麼雜訊
九宮格最中間的數值因該跟我們排序完之後得到的數值差不多
也就是不會有太大的影響
如果這張圖有很嚴重的雜訊
那這樣就可以利用排序完的中間值
讓這張圖看起來更"均勻"(我想不到形容詞...)
▼經過 中位數濾鏡 處理,可以看到胡椒鹽不見了!
喔我原本有用部落格上的圖來做實驗
灰色調色盤寫上去
再把迴圈內的三色改成單色
得到了這樣的結果...
▼怎會有規矩投降輸一半這麼怪的?
後來才發現
是我的排序法那邊超過陣列索引值了XD
九宮格竟然有十個數值
沒有留言:
張貼留言