圖像處理-4 圖像濾波

圖像濾波算法介紹

  • 均值濾波算法
  • 方框濾波算法
  • 高斯濾波算法
  • 雙邊濾波(有空在寫)
  • 導向濾波(有空再寫)

圖像濾波的作用:
1、消除圖像中混入的噪聲;
2、爲圖像識別抽取出圖像特徵

均值濾波

首先看均值濾波的計算公式:

g(x,y)爲該鄰域的中心像素,n跟係數模版大小有關,一般3*3鄰域的模板,n取爲9,如:

當然,模板是可變的,一般取奇數,如5 * 5 , 7 * 7等等。

其實結果就是取領域的灰度值進行平均。

優點 :均值濾波算法比較簡單,計算速度快,均值濾波對週期性的干擾噪聲有很好的抑制作用。
缺點 :但是均值濾波本身存在着固有的缺陷,即它不能很好地保護圖像細節,在圖像去噪的同時,也破壞了圖像的細節部分,從而使圖像變得模糊,不能很好地去除噪聲點。

方框濾波

方框濾波在原理上是指,採用一個卷積覈對圖像進行卷積

其中:
當採用歸一化之後其實就是均值濾波。 ### 中值濾波 中值濾波是指將圖像的每個像素用鄰域 (以當前像素爲中心的正方形區域)像素的中值代替。常用於消除圖像中的椒鹽噪聲。

與低通濾波不同的是,中值濾波對脈衝噪聲有良好的濾除作用,特別是在濾除噪聲的同時,能夠保護信號的邊緣,使之不被模糊,但它會洗去均勻介質區域中的紋理。這些優良特性是線性濾波方法所不具有的。
中值濾波能減弱或消除傅里葉空間的高頻分量,同時也影響低頻分量。中值濾波去除噪聲的效果依賴於兩個要素:鄰域的空間範圍和中值計算中涉及的像素數。一般說來,小於濾波器面積一半的亮或暗的物體基本上會被濾除,而較大的物體幾乎會原封不動地保存下來,因此中值濾波器的空間尺寸必須根據現有的問題來進行調整。

高斯濾波

應用:** 高斯濾波是一種線性平滑濾波器,對於服從正態分佈的噪聲有很好的抑制作用。在實際場景中,我們通常會假定圖像包含的噪聲爲高斯白噪聲,所以在許多實際應用的預處理部分,都會採用高斯濾波抑制噪聲,如傳統車牌識別等。

高斯濾波和均值濾波一樣,都是利用一個掩膜和圖像進行卷積求解。不同之處在於:均值濾波器的模板係數都是相同的爲1,而高斯濾波器的模板係數,則隨着距離模板中心的增大而係數減小(服從二維高斯分佈)。所以,高斯濾波器相比於均值濾波器對圖像個模糊程度較小,更能夠保持圖像的整體細節。

二維高斯分佈
高斯分佈公式終於要出場了!

在這裏插入圖片描述
其中不必糾結於係數,因爲它只是一個常數!並不會影響互相之間的比例關係,並且最終都要進行歸一化,所以在實際計算時我們是忽略它而只計算後半部分:
在這裏插入圖片描述
其中(x,y)爲掩膜內任一點的座標,(ux,uy)爲掩膜內中心點的座標,在圖像處理中可認爲是整數;σ是標準差。

例如:要產生一個3×3的高斯濾波器模板,以模板的中心位置爲座標原點進行取樣。模板在各個位置的座標,如下所示(x軸水平向右,y軸豎直向下)。

在這裏插入圖片描述
這樣,將各個位置的座標帶入到高斯函數中,得到的值就是模板的係數。
對於窗口模板的大小爲 (2k+1)×(2k+1),模板中各個元素值的計算公式如下:

在這裏插入圖片描述
這樣計算出來的模板有兩種形式:小數和整數。

  • 小數形式的模板,就是直接計算得到的值,沒有經過任何的處理;
  • 整數形式的,則需要進行歸一化處理,將模板左上角的值歸一化爲1,具體介紹請看這篇博文。使用整數的模板時,需要在模板的前面加一個係數,係數爲模板係數和的倒數。

生成高斯掩膜(小數形式)
知道了高斯分佈原理,實現起來也就不困難了。

首先我們要確定我們生產掩模的尺寸wsize,然後設定高斯分佈的標準差。生成的過程,我們首先根據模板的大小,找到模板的中心位置center。 然後就是遍歷,根據高斯分佈的函數,計算模板中每個係數的值。

最後模板的每個係數要除以所有係數的和。這樣就得到了小數形式的模板。

實現示例(c++)

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
 
using namespace cv;
 
int main()
{
	//載入圖像
	Mat image = imread("1.jpg");
	Mat dst1 , dst2,dst3;
	 //均值濾波
	blur(image, dst1, Size(7, 7));
	//方框濾波
	cv::boxFilter(image, dst2, -1, cv::Size(7, 7), cv::Point(-1, -1), true, cv::BORDER_CONSTANT);
	//高斯濾波
	cv:: GaussianBlur(image, dst3,cv::Size(7, 7),0.8);
	
    //創建窗口並顯示
	imshow("均值濾波效果圖", dst1);
    imshow("方框濾波效果圖", dts2);
    imshow("高斯濾波效果圖", dts3);
	waitKey(0);
	return 0;
}

雙邊濾波

導向濾波

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章