中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++?opencv圖像平滑濾波器如何使用

發布時間:2022-05-13 09:18:36 來源:億速云 閱讀:127 作者:zzz 欄目:開發技術

這篇文章主要介紹“C++ opencv圖像平滑濾波器如何使用”,在日常操作中,相信很多人在C++ opencv圖像平滑濾波器如何使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”C++ opencv圖像平滑濾波器如何使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

一、均值濾波

歸一化方框濾波器是很簡單的濾波器,輸出像素值是核窗口內像素值的均值,如果使用歸一化處理,方框濾波就是均值濾波,實際上均值濾波是方框濾波歸一化后的特殊情況。均值不能很好的保護細節。

1.均值濾波函數

opencv提供了blur函數來實現均值濾波,函數聲明如下:

void blur(InputArray src, OutputArray dst,
		Size ksize, Point anchor = Point(-1, -1),
		int borderType = BORDER_DEFAULT);
	src 輸入圖像
	dst 輸出圖像
	Ksize 內核的大小
	anchor 錨點 默認值Point(-1, - 1)表示錨位于內核中心。
	bordertype 邊界像素模式

2.均值濾波代碼

#include<iostream>
#include<opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
	Mat img1, img2;
	img1 = imread("貓1.jpg");
	imshow("原圖", img1);
	blur(img1, img2, Size(20, 20));
	imshow("線性濾波", img2);
	waitKey(0);
}

效果如下:

C++?opencv圖像平滑濾波器如何使用

二、高斯濾波

高斯濾波是一種線性平滑濾波,對于除去高斯噪聲有很好的效果,高斯濾波是對輸入數組的每個點與輸入的高斯濾波模板執行卷積計算,然后精這些結果一塊組成濾波后的輸出數組,具體操作是,用一個模板(或者卷積,掩模)掃描圖像中的每一個像素,用模板確定的鄰域內像素的加權平均灰度值,去代替模板中心像素點的值。

1.高斯濾波函數

opencv提供了GaussianBlur函數來實現均值濾波,函數聲明如下:

void GaussianBlur(InputArray src, OutputArray dst, Size ksize,
		double sigmaX, double sigmaY = 0,
		int borderType = BORDER_DEFAULT);
	src 輸入圖像
	dst 輸出圖像
	ksize 高斯核大小  他們必須是奇數
	sigmax x方向上是高斯核標準差
	sigmay y方向上是高斯核標準差
	bordertype 邊界像素模式

2.高斯濾波代碼

int main()
{
	Mat img1, img2;
	img1 = imread("貓1.jpg");
	imshow("原圖", img1);
	GaussianBlur(img1, img2, Size(35, 35),0);
	imshow("高斯濾波", img2);
	waitKey(0);
}

效果圖:

C++?opencv圖像平滑濾波器如何使用

三、中值濾波

中值濾波是用像素點領域灰度值的中值來代替該像素點的灰度值,也就是說用一片區域的中間值來代替所有值,可以去除最大值和最小值 ,它的優點是對去除斑點噪聲和椒鹽噪聲很有用,缺點是中值濾波時間是均值濾波的5倍以上

1.中值濾波函數

opencv提供了medianBlur函數來實現均值濾波,函數聲明如下:

void medianBlur(InputArray src, OutputArray dst, int ksize);
	src 輸入
	dst 輸出
	Ksize 孔徑線性尺寸 它必須是奇數且大于1

2.中值濾波代碼

int main()
{
	Mat img1, img2;
	img1 = imread("貓1.jpg");
	imshow("原圖", img1);
	medianBlur(img1, img2,9);
	imshow("中值濾波", img2);
	waitKey(0);
}

效果如下:

C++?opencv圖像平滑濾波器如何使用

四、雙邊濾波

之前所說的濾波器都是為了平滑圖像,問題是有些時候這些濾波器不僅削弱了噪聲,連帶著吧邊緣也磨掉了,為了避免這樣的情形(至少在一定程度上),我們可以使用雙邊濾波,它是一種非線性濾波器,它可以達到邊緣,降噪平滑的效果,也是采用加權平均的方法,用周邊像素亮度值的加權平均代表某個像素的強度。雙邊濾波與高斯濾波相比,對于圖像的邊緣信息能夠更好的保存

1.雙邊濾波函數

opencv提供了bilateralFilter函數來實現均值濾波,函數聲明如下:

	void bilateralFilter(InputArray src, OutputArray dst, int d,
		double sigmaColor, double sigmaSpace,
		int borderType = BORDER_DEFAULT);
	src 輸入
	dst 輸出
	d 濾波時所用的每個像素鄰域的直徑
	sigmaColor 在顏色空間中過濾。 
	sigmaSpace 在坐標空間中過濾 
	borderType 邊界像素模式

2.雙邊濾波代碼

int main()
{
	Mat img1, img2;
	img1 = imread("貓1.jpg");
	imshow("原圖", img1);
	bilateralFilter(img1, img2, 30,30,30);
	imshow("雙邊濾波", img2);
	waitKey(0);
}

效果如下:

C++?opencv圖像平滑濾波器如何使用

到此,關于“C++ opencv圖像平滑濾波器如何使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

武义县| 靖远县| 利川市| 吉林市| 浮梁县| 托克托县| 南通市| 谷城县| 德兴市| 扎鲁特旗| 玉溪市| 合山市| 巧家县| 乌海市| 温州市| 民县| 三原县| 阿瓦提县| 克山县| 泸定县| 庄浪县| 珠海市| 东港市| 江山市| 杭州市| 栾川县| 霍邱县| 永年县| 大同市| 西乌| 灵武市| 陵水| 平南县| 舒城县| 克什克腾旗| 平昌县| 新沂市| 陈巴尔虎旗| 东方市| 布尔津县| 汉沽区|