空間濾波with C++ Builder 6
我們今天來討論一下濾波器和圖片之間的關係
濾波器是一個九宮格的表格,而九宮格的正中心就是我們現在掃描到的pixel
而我們通常會拿正中心色彩值和四周圍比較、調整之間的比例...等等
而當我們掃描到邊界時會有pixel不足放滿九宮格的問題
這時有3種最法:1.補零 2.鏡像放入色彩值 3.忽略不看,而下面的討論都是採用第三種方法
--------------------------------------------------------------------------------------------------------------------------
首先是中值濾波器
中值濾波器就是把九宮格中間的數值替換成九宮格內全部的數值排序過後取最中間的值
可以有效地解決胡椒鹽雜訊的問題
我們以Sheep.bmp為例
(Sheep.bmp)
(胡椒鹽雜訊5%)
這邊提一下我產生胡椒鹽雜訊的方法
首先在每個pixel random產生1~100的數值,接下來如果<=5就把那格的色彩值設為255
這是我們用中值濾波器做完的結果,可以看到大部分胡椒鹽雜訊都被去掉了
不過還是有一點點沒被去掉,是因為九宮格內有超過一半是雜訊,所以替換後還是雜訊
還有一個值得注意的是邊界,因為上面我們採取邊界不理,所以邊界的雜訊無法完全去除
--------------------------------------------------------------------------------------------------------------------------
接下來是平滑濾波器(Smoothing)
我們直接來看結果
平滑濾波器就是把九宮格中間的數值替換成九宮格內所有的數值相加除以9
由上圖我們可以看出,在那隻綿羊的邊邊跟原圖比平滑了許多
--------------------------------------------------------------------------------------------------------------------------
最後是銳化濾波器(Sharping)
一樣我們先看結果
銳化的濾波器所帶的數值是經由一連串數學式子導出來的,我們這裡不多作探討
我是把九宮格內中間的數值替換成把周圍乘以 -1 相加後再加上中間值乘以 9 後替換
注意如果大於255要換成255,小於0要換成0
沒有留言:
張貼留言