中值濾波原理
? ? ?中值濾波原理與均值濾波相似。在濾波器的范圍內(nèi),將濾波器所覆蓋的圖像的像素,進(jìn)行排序后,選取序列中中間位置的數(shù)值作為濾波后的結(jié)果,此過程不含任何線性操作,所以稱為非線性濾波,對(duì)圖像中數(shù)據(jù)進(jìn)行排序可以很好的移除掉某些區(qū)域中突然出現(xiàn)的較大值。例如在下圖中3*3的區(qū)域內(nèi),即使存在著椒鹽濾波255,排序后選取中位數(shù)可以有效的篩除最大值。即使有兩個(gè)最大值,也不會(huì)出現(xiàn)遠(yuǎn)大于或遠(yuǎn)偏離于期望中的數(shù)值。所以中值濾波可以很好的濾除突然出現(xiàn)的較大值,也就是我們的椒鹽噪聲。
中值濾波步驟
Step1:濾波器內(nèi)像素排序。
Step2:尋找中位數(shù)。
Step3:替換像素。
中值濾波函數(shù)?
medianBlur()
由于中值濾波是一個(gè)非線性濾波,因此沒有濾波模板,如果想用圖像進(jìn)行中值濾波,必須使用此函數(shù)。否則就需要對(duì)每一個(gè)像素進(jìn)行操作,比較,排序,最后得到一個(gè)順序選取中間的值,這個(gè)過程比線性濾波可以通過卷積來實(shí)現(xiàn)復(fù)雜很多。
void cv::medianBlur(InputArray src,
OutputArray dst,
int ksize
)
·src:待中值濾波的圖像,可以是單通道,三通道和四通道,數(shù)據(jù)類型與濾波器的尺寸相關(guān),當(dāng)濾波器尺寸為3或5時(shí),圖像可以是CV_8U,CV_16U或CV_32F類型,對(duì)于較大尺寸的濾波器,數(shù)據(jù)類型只能是CV_8U。
·dst:輸出圖像,與輸入圖像src具有相同的尺寸和數(shù)據(jù)類型。
·ksize:濾波器尺寸,必須是大于1的奇數(shù),例如:3,5,7...。文章來源:http://www.zghlxwxcb.cn/news/detail-819485.html
示例
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv; //opencv的命名空間
using namespace std;
//主函數(shù)
int main()
{
Mat img = imread("E:/opencv/opencv-4.6.0-vc14_vc15/opencv/lena3Salt.png");//讀取含有椒鹽噪聲的彩色圖像
Mat gray = imread("E:/opencv/opencv-4.6.0-vc14_vc15/opencv/equalLena_S.png");//讀取含有椒鹽噪聲的灰度圖像
Mat gray_g = imread("E:/opencv/opencv-4.6.0-vc14_vc15/opencv/equalLena_G.png");//讀取含有高斯噪聲的灰度圖像
Mat imgResult3, imgResult9, grayResult3, grayResult9, gray_gResult3, gray_gResult9;//用于存放中值濾波結(jié)果
medianBlur(img, imgResult3, 3);
medianBlur(gray, grayResult3, 3);
medianBlur(gray_g, gray_gResult3, 3);
medianBlur(img, imgResult9, 9);
medianBlur(gray, grayResult9, 9);
medianBlur(gray_g, gray_gResult9, 9);
imshow("imgResult3", imgResult3);
imshow("grayResult3", grayResult3);
imshow("gray_gResult3", gray_gResult3);
imshow("imgResult9", imgResult9);
imshow("grayResult9", grayResult9);
imshow("gray_gResult9", gray_gResult9);
waitKey(0);//等待函數(shù)用于顯示圖像,按下鍵盤任意鍵后退出
return 0;
}
運(yùn)行程序后可以發(fā)現(xiàn),濾波后,含有椒鹽噪聲的彩色圖像已經(jīng)去除椒鹽噪聲了,當(dāng)尺寸擴(kuò)大后,圖像會(huì)模糊?;叶葓D像中的椒鹽噪聲也很好去除,尺寸較大時(shí)也產(chǎn)生模糊效果,對(duì)于高斯噪聲,進(jìn)行中值濾波后還是含有高斯噪聲,中值濾波沒有辦法很好的處理高斯噪聲,即使中值濾波尺寸擴(kuò)大,還是有噪聲的存在。文章來源地址http://www.zghlxwxcb.cn/news/detail-819485.html
到了這里,關(guān)于opencv#31 非線性濾波——中值濾波的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!