上一次的影像處理是說細線化,把物件的邊界更分明
這一次再介紹一種影像處理的方式
面對一些影像的雜訊(通常雜訊為高頻,即白點),我們可以利用排序統計濾波器(又名:中值濾波法)
這方式處理影像也是類似利用遮罩的方式處理,我們以3x3的遮罩為例
1)從整個影像左上角開始處理
2)中間像素開始,往八方面延伸,形成3x3的遮罩
3)把3x3遮罩中,9個像素從小至大排順序
4)把順序第5位的像素,代替並更新中間像素
目的:因為雜訊為高頻,即像素會突然上升,形成白點
因此以3x3遮罩,並按小至大排順序,是希望把雜訊分割
按遮罩中的像素比率,平滑影像
======================分格線======================
上圖為3x3的遮罩
我們可以看到整個影像明顯是較為暗沉(像素較低)
因此可以明顯知道遮罩中有2處雜訊(分別為231,211)
把這9個像素取出
6,8,2,4,231,4,211,7,5
再按小至大排順序
2,4,4,5,6,7,8,231,211
把順序第5位的像素,代替並更新中間像素
因此「6」便會代替「231」
好處:解決輸出影像模糊化的問題
缺點:1)因為處理是用排順序方式,因此如果在遮罩中出現多次高頻雜訊,便無法使用
2)3x3的遮罩最高只可以容納4個高頻雜訊
3)正常影像要與高頻雜訊產生較明顯的差距
======================分格線======================
概念是這樣,程式碼如下
我先大概解說
int median(int *sort)
{
int i,j,n;
int max;
for( i=0; i<5; i++ ){
for( j=1, n=0, max=sort[0]; j<9; j++ ){
if( max<sort[j] ){
max = sort[j];
n = j;
}
}
sort[n] = -1;
}
return max;
}
sort:為輸入function的像素
max:為排順序後第5位最高的像素
i:為找出排順序後的中位數
======================分格線======================
上圖為原始影像
影像有許多雜訊
上圖為利用3x3遮罩處理後之影像
例子2
上圖為原始影像
可以觀看到不同程度的雜訊
上圖為利用3x3遮罩處理後之影像
對於不同程度的雜訊,也有不同程度的影響
======================心得======================
一直打混是不行的,要開始研究一下新程式
今天先到這,程式解說、優缺點、優化方式,請大家耐心等待...
又面對畢業專題、期未考...希望還可以堅持30天
可以在這裡宣傳的嗎?我最近缺實習跟公司的訓練營....(希望不要因為學校被優先刷走