Visual Studio Community 2015 工程和代碼:http://pan.baidu.com/s/1Qia0Q
內容
在這篇文章中將提到以下內容:
- 中值模糊
- 高斯模糊
圖像模糊能有效的去除圖像的噪點。
“平滑處理也稱模糊處理,是一項簡單且使用頻率很高的圖像處理方法。平滑處理的用途有很多,但最常見的是用來減少圖像
上的噪點或者失真。”——《學習OpenCV(中文版)》
中值模糊
中值濾波是指以一個像素點為中心點,在這個中心點的正方形鄰域內求所有像素的中間值,然后用這個中間值替換鄰域內所有
點的像素值。中值濾波器可以有效的去除圖像中的椒鹽噪聲和斑點噪聲。
Emgu的Image類提供了SmoothMedian方法,這個方法只需要一個參數,即在執行中值濾波時的卷積核的大小。卷積核是
一個奇數行和列的矩陣,卷積核越大,濾波器的效果越明顯。以下是使用SmoothMedian方法對一張滿是椒鹽噪聲的圖片進行處
理的代碼和結果:
1 var image = new Image<Bgr, byte>(Properties.Resources.ai); 2 imageBox1.Image = image;//顯示原圖像 3 imageBox2.Image = image.SmoothMedian(5);//使用5*5的卷積核
代碼效果如下:
高斯模糊
高斯濾波用卷積核與輸入圖像的每個點進行卷積,將最終計算的結果作為這個點的值。也就是說圖像的每個點都是由其本身和
鄰域內的點經過高斯濾波卷積核進行加權平均得到的。
高斯核其實就是一個矩陣,這個矩陣符合高斯分布,即矩陣中心的值最大,其余根據距離中心元素的距離遞減,構成一個高斯
小山包:
在使用高斯模糊的方法時,我們需要指定高斯卷積核的高度和寬度(必須是奇數),還有高斯小山包的坡度參數,坡度參數分
為X方向和Y方向。如果坡度參數為0,那么方法會根據核的大小自動幫我們計算,如果只設置了X方向的值,那么Y方向采用X方向
的值。
Emgu的Image類提供了SmoothGaussian方法進行高斯模糊,SmoothGaussian有兩種重載實現,一種我們只需要傳入
卷積核大小參數,另外一個我們還需要傳入X、Y方向的坡度參數。
1 var image = new Image<Bgr, byte>(Properties.Resources.ai); 2 imageBox1.Image = image;//顯示原圖像 3 imageBox1.Image = image.SmoothGaussian(5);
執行效果: