1. 圖像的卷積
1.1 卷積
卷積是一種數學運算,它將兩個函數(或矩陣)結合起來,生成一個第三個函數。在圖像處理中,卷積通常用于將一個濾波器與圖像進行運算。
圖像的濾波器是一種用于增強或抑制圖像中特定特征的工具。它通常是一個小矩陣,定義了如何對圖像中的像素進行操作。
卷積在圖像處理中有很多應用,包括圖像平滑、圖像銳化、邊緣檢測和圖像分割。
1.2 卷積的原理
在泛函分析中,卷積(convolution),或譯為疊積、褶積或旋積,是透過兩個函數 f 和 g 生成第三個函數的一種數學算子,表征函數 f 與經過翻轉和平移的 g 的乘積函數所圍成的曲邊梯形的面積。
卷積可分為一維卷積、二維卷積、三維卷積和多維卷積等。
1.2.1 一維卷積
一維卷積在數學上的定義: f 和 g 是實數 R 上的兩個可積函數,我們稱 (f*g)(n) 為 f、g 的卷積。
其連續的定義為:
其離散的定義為:
1.2.2 二維卷積
在圖像處理中,我們常用的是二維卷積。其原理是將一個稱為卷積核(濾波器)的矩陣與圖像進行滑動運算,從而得到一個新的圖像。
2D_Convolution_Animation.gif
滑動運算是指將卷積核在圖像上逐個像素移動,并對每個位置進行卷積操作。
在圖像的二維卷積中,如果把圖像矩陣簡寫為 I 把卷積核 Kernal 簡寫為 K,則目標圖像的第 (i,j) 個像素的卷積值為:
其中,I 是一個二維矩陣,K 是一個大小為 mxn 的卷積核。基于卷積的可交換性,可以把上述公式改成:
與之類似的還有互相關函數(corresponding function):
它在很多圖像處理庫和深度學習庫中,經常會用到。
上圖實質上是二維單通道的卷積,對于二維多通道的卷積如下圖所示,將每個卷積核應用到每一個通道上。
將filters中的每個kernels分別應用于三個通道.gif
然后將每個通道處理后的每個加在一起以形成單個輸出通道。
將這三個通道加在一起(逐元素加法)以形成一個單個通道.gif
1.2.3 三維卷積
三維卷積是卷積在三維空間上的推廣。它將一個三維的濾波器與一個三維的輸入數據進行卷積運算,得到一個三維的輸出數據,以提取三維數據中的特征。主流的深度學習框架,都提供了三維卷積的實現。
3D_Convolution_Animation.gif
1.3 卷積的性質
卷積具有交換律、結合律、分配律,以二維卷積為例它具有以下的性質:
交換律:f(x, y) * g(x, y) = g(x, y) * f(x, y)
結合律:(f(x, y) * g(x, y))* h(x, y) = f(x, y) * (g(x, y) * h(x, y))
分配律:f(x, y) * (g(x, y) + h(x, y)) = f(x, y) * g(x, y) + f(x, y) * h(x, y)
2. 圖像濾波
2.1 圖像濾波
圖像濾波是一種圖像處理技術,用于增強或抑制圖像中的特定特征,它可以看作是卷積的一種特殊情況。圖像濾波可以用圖像卷積來實現,但是圖像卷積不一定是圖像濾波。
在 OpenCV 中,提供了豐富的圖像濾波函數,可以滿足各種圖像處理需求。常用圖像濾波函數包括:
均值濾波: blur()、boxFilter()
高斯濾波: GaussianBlur()
中值濾波: medianBlur()
雙邊濾波: bilateralFilter()
非線性濾波: fastNlMeansDenoising()
邊緣檢測濾波: Sobel()、Scharr()、Laplacian()
形態學濾波: erode()、dilate()、morphologyEx()
頻域濾波: dft()、idft()
下面的例子,分別展示了原圖經過均值濾波、高斯濾波、中值濾波和雙邊濾波之后的效果圖。特別是雙邊濾波,對原圖中的美女進行了美顏和磨皮。
#include#include #include #include usingnamespacestd; usingnamespacecv; intmain(){ Matsrc=imread(".../girl.jpg"); //均值濾波 Matblurred_image; blur(src,blurred_image,Size(15,15)); //高斯濾波 Matgaussian_blurred_image; GaussianBlur(src,gaussian_blurred_image,Size(15,15),0); //中值濾波 Matmedian_blurred_image; medianBlur(src,median_blurred_image,15); //雙邊濾波 Matbilateral_filtered_image; bilateralFilter(src,bilateral_filtered_image,15,80,80); imshow("OriginalImage",src); imshow("BlurredImage",blurred_image); imshow("GaussianBlurredImage",gaussian_blurred_image); imshow("MedianBlurredImage",median_blurred_image); imshow("BilateralFilteredImage",bilateral_filtered_image); waitKey(0); return0; }
OpenCV 還提供了自定義的濾波器 filter2D() 函數,在該系列的第九篇文章中,曾經介紹過 filter2D() 函數。
下面的例子,展示了使用 filter2D() 函數對圖像進行模糊和銳化。
#include下面簡單解釋一下 filter2D() 函數:#include #include #include usingnamespacestd; usingnamespacecv; intmain(){ Matsrc=imread(".../girl.jpg"); imshow("src",src); Matblurred_image,sharpen_image; Matkernel1=Mat::ones(5,5,CV_32F)/(float)(25); Matkernel2=(Mat_ (3,3)<0,?-1,?0,?-1,?5,?-1,?0,?-1,?0); ????filter2D(src,?blurred_image,?-1,?kernel1); ????filter2D(src,?sharpen_image,?-1,?kernel2); ????imshow("Blurred?Image",?blurred_image); ????imshow("Sharpen?Image",?sharpen_image); ????waitKey(0); ????return?0; }
voidfilter2D(InputArraysrc,OutputArraydst,intddepth, InputArraykernel,Pointanchor=Point(-1,-1), doubledelta=0,intborderType=BORDER_DEFAULT);
第三個參數 ddepth: 輸出圖像的深度。當 ddepth 輸入值為 -1 時,目標圖像和原圖像深度保持一致。
第四個參數 kernel: 卷積核。
第五個參數 anchor: 卷積核的錨點。
第六個參數 delta: 卷積結果與原圖像相加的值。
第七個參數 borderType: 邊界處理方式。
2.2 圖像濾波的分類
根據濾波器在圖像域和頻域的操作方式,圖像濾波可以分為空間域濾波和頻域濾波。
2.2.1 空間域濾波
空間域濾波直接對圖像中的像素進行操作,根據濾波器與圖像像素之間的空間關系來計算輸出像素的值。空間域濾波的計算量通常較小,但濾波效果往往比較局限。
空間域濾波按濾波器的線性特性又可分為:
線性濾波:濾波器輸出與輸入之間呈線性關系。
常用的線性濾波器包括:
a 均值濾波:用于去除圖像噪聲,具有平滑圖像的效果。
b 高斯濾波:具有平滑圖像和邊緣保持的效果。
c 中值濾波:具有去除椒鹽噪聲和保持邊緣細節的效果。
d 拉普拉斯濾波:用于邊緣檢測。
非線性濾波:濾波器輸出與輸入之間不呈線性關系。
常用的非線性濾波器包括:
a 中值濾波:用于去除椒鹽噪聲和保持邊緣細節。
b 雙邊濾波:具有平滑圖像和保持邊緣細節的效果。
c 自適應濾波:根據圖像局部特性進行濾波,具有較好的濾波效果。
2.2.2 頻域濾波
頻域濾波是將圖像傅里葉變換到頻域,然后對頻譜進行濾波,最后再將頻譜逆傅里葉變換回空間域得到濾波后的圖像。頻域濾波的計算量通常較大,但濾波效果往往比較靈活。
頻域濾波按濾波器的作用方式又可分為:
低通濾波:濾除圖像中的高頻成分,具有平滑圖像的效果。
高通濾波:濾除圖像中的低頻成分,具有銳化圖像的效果。
帶通濾波:濾除圖像中的特定頻段成分,具有增強圖像紋理的效果。
3. 總結
圖像卷積和圖像濾波是圖像處理中兩個密切相關的概念。它們都涉及到使用濾波器對圖像進行操作,以獲得新的圖像。
圖像卷積是圖像濾波的基礎,圖像濾波可以通過圖像卷積來實現,但圖像濾波也可以使用其他方法來實現。
圖像卷積和圖像濾波具有廣泛的應用,通過使用不同的濾波器,可以實現各種圖像處理效果。
審核編輯:黃飛
-
濾波器
+關注
關注
161文章
7795瀏覽量
177994 -
圖像處理
+關注
關注
27文章
1289瀏覽量
56722 -
函數
+關注
關注
3文章
4327瀏覽量
62571 -
OpenCV
+關注
關注
31文章
634瀏覽量
41337
原文標題:OpenCV筑基之圖像的卷積與濾波
文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學堂】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論