圖像平滑的目的
- 模糊:在提取較大目標前,去除太小細節,或將目標內的小間斷連接起來。
- 消除噪聲:改善圖像質量,降低干擾。
平滑處濾波對圖像的低頻分量增強,同時削弱高頻分量,用於消除圖像中的隨機噪聲,起到平滑作用。
圖像平滑處理的基本方法
- 領域平均法
- 領域加權平均法
- 選擇式掩模法
- 中值濾波
領域平均法
模板在圖像上移動,模板的中心對應目標像素點,在模板范圍內對目標像素點進行卷積運算(對應系數乘對應像素點),然后相加除上模板大小得到均值,這個均值就是目標像素點處理后的值。
如圖,對5行四列的圖像進行3*3模板的鄰域平均法處理:
鄰域平均法存在的問題
抑制了高頻成分,使用圖像變得模糊,平滑效果不好,減少噪音的同時,損失了高頻信息。
注意:模板不宜過大,因為模板越大對速度有直接影響,且模板大小越大變換后圖像越模糊,特別是在邊緣和細節處
優點:算法簡答,計算速度快。
缺點:造成圖像一定程度上的模糊。
3*3模板鄰域平均法示例:
Use_ROWS:行
Use_Line:列
圖像邊界不處理:只處理1-----n-1。
int count = 0; for(int i = 1; i < Use_ROWS-1; i++) { for(int j = 1; j < Use_Line-1; j++) { //鄰域平均法 count=0; count = Image_Use[i][j]+Image_Use[i][j-1]+Image_Use[i][j+1]+Image_Use[i-1][j]+Image_Use[i-1][j-1]+Image_Use[i-1][j+1]+Image_Use[i+1][j]+Image_Use[i+1][j-1]+Image_Use[i+1][j+1]; Image_Use[i][j] = (int)(count/9); } }
鄰域加權平均法
加權:系數不再全部為1。
選擇式掩模法
中值濾波
中值濾波器,使用濾波器窗口包含區域的像素值的中值來得到窗口中心的像素值,本質上是一種非線性平滑濾波器。
中值濾波:抑制噪聲又可以盡量保持圖像細節,對濾除脈沖干擾及圖像掃描噪聲最為有效。不
注意:對一些細節多,特別是點,線,尖頂細節多的圖像不宜采用中值濾波。
不同的窗口選擇
常用窗口
復合型中值濾波介紹
3*3模板的中值濾波處理
int cmp(const void *a,const void *b) { return *(int *)a-*(int *)b;//這是從小到大排序,若是從大到小改成: return *(int *)b-*(int *)a; }
int temp[9],index=0; for(int i = 1; i < Use_ROWS-1; i++) { for(int j = 1; j < Use_Line-1; j++) { //中值濾波 memset(temp, 0, sizeof(temp)); temp[index]=Image_Use[i][j]; temp[index+1]=Image_Use[i-1][j]; temp[index+2]=Image_Use[i-1][j-1]; temp[index+3]=Image_Use[i-1][j+1]; temp[index+4]=Image_Use[i][j-1]; temp[index+5]=Image_Use[i][j+1]; temp[index+6]=Image_Use[i+1][j]; temp[index+7]=Image_Use[i+1][j-1]; temp[index+8]=Image_Use[i+1][j+1]; qsort(temp,9,sizeof(temp[0]),cmp);//(數組,需要排序的數字個數,單個數字所占內存大小,比較函數) Image_Use[i][j] = temp[4]; } }