<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

OpenCV圖像卷積與濾波詳解

OpenCV學堂 ? 來源:OpenCV學堂 ? 2024-03-26 14:57 ? 次閱讀

1. 圖像的卷積

1.1 卷積

卷積是一種數學運算,它將兩個函數(或矩陣)結合起來,生成一個第三個函數。在圖像處理中,卷積通常用于將一個濾波器與圖像進行運算。

圖像的濾波器是一種用于增強或抑制圖像中特定特征的工具。它通常是一個小矩陣,定義了如何對圖像中的像素進行操作。

卷積在圖像處理中有很多應用,包括圖像平滑、圖像銳化、邊緣檢測和圖像分割。

1.2 卷積的原理

在泛函分析中,卷積(convolution),或譯為疊積、褶積旋積,是透過兩個函數 f 和 g 生成第三個函數的一種數學算子,表征函數 f 與經過翻轉和平移的 g 的乘積函數所圍成的曲邊梯形的面積。

卷積可分為一維卷積、二維卷積、三維卷積和多維卷積等。

1.2.1 一維卷積

一維卷積在數學上的定義: f 和 g 是實數 R 上的兩個可積函數,我們稱 (f*g)(n) 為 f、g 的卷積。

其連續的定義為:

其離散的定義為:

1.2.2 二維卷積

在圖像處理中,我們常用的是二維卷積。其原理是將一個稱為卷積核(濾波器)的矩陣與圖像進行滑動運算,從而得到一個新的圖像。

8ee88bfa-eabd-11ee-a297-92fbcf53809c.gif

2D_Convolution_Animation.gif

滑動運算是指將卷積核在圖像上逐個像素移動,并對每個位置進行卷積操作。

在圖像的二維卷積中,如果把圖像矩陣簡寫為 I 把卷積核 Kernal 簡寫為 K,則目標圖像的第 (i,j) 個像素的卷積值為:

其中,I 是一個二維矩陣,K 是一個大小為 mxn 的卷積核?;诰矸e的可交換性,可以把上述公式改成:

與之類似的還有互相關函數(corresponding function):

它在很多圖像處理庫和深度學習庫中,經常會用到。

上圖實質上是二維單通道的卷積,對于二維多通道的卷積如下圖所示,將每個卷積核應用到每一個通道上。

8eef7aa0-eabd-11ee-a297-92fbcf53809c.gif

將filters中的每個kernels分別應用于三個通道.gif

然后將每個通道處理后的每個加在一起以形成單個輸出通道。

8ef3d244-eabd-11ee-a297-92fbcf53809c.gif

將這三個通道加在一起(逐元素加法)以形成一個單個通道.gif

1.2.3 三維卷積

三維卷積是卷積在三維空間上的推廣。它將一個三維的濾波器與一個三維的輸入數據進行卷積運算,得到一個三維的輸出數據,以提取三維數據中的特征。主流的深度學習框架,都提供了三維卷積的實現。

8f008336-eabd-11ee-a297-92fbcf53809c.gif

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
#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)<
下面簡單解釋一下 filter2D() 函數:
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 空間域濾波

空間域濾波直接對圖像中的像素進行操作,根據濾波器與圖像像素之間的空間關系來計算輸出像素的值??臻g域濾波的計算量通常較小,但濾波效果往往比較局限。

空間域濾波按濾波器的線性特性又可分為:

線性濾波:濾波器輸出與輸入之間呈線性關系。

常用的線性濾波器包括:

a 均值濾波:用于去除圖像噪聲,具有平滑圖像的效果。

b 高斯濾波:具有平滑圖像和邊緣保持的效果。

c 中值濾波:具有去除椒鹽噪聲和保持邊緣細節的效果。

d 拉普拉斯濾波:用于邊緣檢測。

非線性濾波:濾波器輸出與輸入之間不呈線性關系。

常用的非線性濾波器包括:

a 中值濾波:用于去除椒鹽噪聲和保持邊緣細節。

b 雙邊濾波:具有平滑圖像和保持邊緣細節的效果。

c 自適應濾波:根據圖像局部特性進行濾波,具有較好的濾波效果。

2.2.2 頻域濾波

頻域濾波是將圖像傅里葉變換到頻域,然后對頻譜進行濾波,最后再將頻譜逆傅里葉變換回空間域得到濾波后的圖像。頻域濾波的計算量通常較大,但濾波效果往往比較靈活。

頻域濾波按濾波器的作用方式又可分為:

低通濾波:濾除圖像中的高頻成分,具有平滑圖像的效果。

高通濾波:濾除圖像中的低頻成分,具有銳化圖像的效果。

帶通濾波:濾除圖像中的特定頻段成分,具有增強圖像紋理的效果。

3. 總結

圖像卷積和圖像濾波是圖像處理中兩個密切相關的概念。它們都涉及到使用濾波器對圖像進行操作,以獲得新的圖像。

圖像卷積是圖像濾波的基礎,圖像濾波可以通過圖像卷積來實現,但圖像濾波也可以使用其他方法來實現。

圖像卷積和圖像濾波具有廣泛的應用,通過使用不同的濾波器,可以實現各種圖像處理效果。

審核編輯:黃飛

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 濾波器
    +關注

    關注

    158

    文章

    7401

    瀏覽量

    175444
  • 圖像處理
    +關注

    關注

    26

    文章

    1241

    瀏覽量

    56088
  • 函數
    +關注

    關注

    3

    文章

    4117

    瀏覽量

    61507
  • OpenCV
    +關注

    關注

    29

    文章

    612

    瀏覽量

    40891

原文標題:OpenCV筑基之圖像的卷積與濾波

文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學堂】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    OpenCV圖像

    之前學過一段時間OpenCV,跟著網上的資料,自己瞎搞了個上位機,可以對攝像頭采集的圖像簡單處理,在此獻丑了,hhhhhh
    發表于 07-11 19:07

    CNN之卷積

    到不同的輸出數據,比如顏色深淺、輪廓。相當于如果想提取圖像的不同特征,則用不同的濾波器filter,提取想要的關于圖像的特定信息:顏色深淺或輪廓。一張動圖詳解
    發表于 10-17 10:15

    卷積神經網絡為什么適合圖像處理?

    卷積神經網絡為什么適合圖像處理?
    發表于 09-08 10:23

    使用opencv進行圖像處理

    使用opencv進行圖像處理_于仕琪,感興趣的可以看看。
    發表于 05-03 14:45 ?0次下載

    線性圖像濾波綜合示例_《OpenCV3編程入門》書本配套源代碼

    OpenCV3編程入門》書本配套源代碼:線性圖像濾波綜合示例
    發表于 06-06 15:52 ?8次下載

    圖像濾波綜合示例_《OpenCV3編程入門》書本配套源代碼

    OpenCV3編程入門》書本配套源代碼:圖像濾波綜合示例
    發表于 06-06 15:52 ?6次下載

    圖像濾波綜合示例_OpenCV3編程入門-源碼例程全集

    OpenCV3編程入門-源碼例程全集-圖像濾波綜合示例,感興趣的小伙伴們可以瞧一瞧。
    發表于 09-18 16:55 ?0次下載

    線性圖像濾波綜合示例_OpenCV3編程入門-源碼例程

    OpenCV3編程入門-源碼例程全集-線性圖像濾波綜合示例,感興趣的小伙伴們可以瞧一瞧。
    發表于 09-18 16:55 ?0次下載

    圖像處理中濾波卷積有什么區別?

    圖像處理中濾波卷積是常用到的操作。兩者在原理上相似,但是在實現的細節上存在一些區別。這篇博文主要敘述這兩者之間的區別。
    的頭像 發表于 07-09 10:30 ?7448次閱讀
    <b class='flag-5'>圖像</b>處理中<b class='flag-5'>濾波</b>與<b class='flag-5'>卷積</b>有什么區別?

    四種常見的圖像濾波算法介紹

    濾波算法,并附上源碼,包括自適應中值濾波、高斯濾波、雙邊濾波和導向濾波。 前言 本文介紹四種常見的圖像
    的頭像 發表于 02-15 09:50 ?9576次閱讀

    一文吃透:圖像卷積、邊緣提取和濾波去噪

    本文通過通俗易懂的文字解釋了圖像卷積、邊緣提取以及濾波去燥的概念及其分類。? 一、圖像卷積 現在有一張圖片 f(x,y) 和一個kernel
    的頭像 發表于 04-30 09:38 ?4865次閱讀
    一文吃透:<b class='flag-5'>圖像</b><b class='flag-5'>卷積</b>、邊緣提取和<b class='flag-5'>濾波</b>去噪

    線性濾波卷積的概述與應用研究

    圖像濾波矩陣進行逐個元素相乘再求和的操作就相當于將一個二維的函數移動到另一個二維函數的所有位置,這個操作就叫卷積或者協相關。卷積和協相關的差別是,
    的頭像 發表于 07-06 10:51 ?783次閱讀

    OpenCV種支持標準卷積邊緣填充做法

    OpenCV在使用卷積進行圖像處理過程種,如何處理邊緣像素與錨定輸出兩個技術細節一直是很多人求而不得的疑惑。其實OpenCV在做卷積
    的頭像 發表于 07-12 14:18 ?1325次閱讀

    圖像處理技術之濾波去噪

    圖像處理領域中,在真正的應用過程前,通常需要對圖像進行預先處理,達到去除干擾項的目的。濾波去噪就是其中的一項圖像預處理工作。 在.NET下常用
    的頭像 發表于 02-08 16:34 ?982次閱讀

    卷積神經網絡詳解 卷積神經網絡包括哪幾層及各層功能

    卷積神經網絡詳解 卷積神經網絡包括哪幾層及各層功能 卷積神經網絡(Convolutional Neural Networks, CNNs)是一個用于
    的頭像 發表于 08-21 16:41 ?5475次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>