本文通過(guò)通俗易懂的文字解釋了圖像卷積、邊緣提取以及濾波去燥的概念及其分類。
一、圖像卷積
現(xiàn)在有一張圖片 f(x,y) 和一個(gè)kernel核 w(a,b)。
卷積(Convolution):卷積運(yùn)算就是對(duì)于圖像 f(x,y) 中的每個(gè)像素,將其作為中心像素,計(jì)算它及其鄰域像素和kernel核 w(a,b)對(duì)應(yīng)位置元素的乘積,然后把結(jié)果相加到一起,得到的值就作為該中心像素的新值,這樣就完成了一次卷積運(yùn)算。然后將kernel向下或向左平移一位繼續(xù)計(jì)算每個(gè)像素的新值,直到遍歷完整個(gè)圖像。
如下圖所示:
卷積運(yùn)算的公式如下:
還有一個(gè)概念是互相關(guān)(Cross-correlation),流程和卷積類似,區(qū)別在于卷積在運(yùn)算前需要把kernel圍繞中心旋轉(zhuǎn)180度(即做一次上下翻轉(zhuǎn)(filp)和一次左右翻轉(zhuǎn)),而互相關(guān)則不需要。
互相關(guān)的公式如下:
兩者的具體區(qū)別可以查看 卷積運(yùn)算和相關(guān)運(yùn)算的區(qū)別與物理含義。
互相關(guān)主要用于計(jì)算兩個(gè)圖像的相關(guān)性(主要用于圖像配準(zhǔn))。因?yàn)槲覀兤綍r(shí)接觸的卷積核大都是關(guān)于x軸和y軸對(duì)稱的,所以卷積和互相關(guān)在這種情況下沒(méi)什么區(qū)別。
中心像素在圖像的邊緣時(shí),沒(méi)有足夠的像素與kernel進(jìn)行運(yùn)算,有兩個(gè)方法:
最外面的一圈像素不進(jìn)行計(jì)算,如果圖像非常大,丟掉圖像邊緣的一圈對(duì)結(jié)果影響不大。
更好的辦法是人為地在圖像四周插入一圈像素(比如最近鄰插值)。
圖像的處理結(jié)果可能超出值域范圍(0-255),則小于0的值視作0,大于255的視作255就行了。
二、圖像梯度
梯度的方向是函數(shù) f(x,y) 變化最快的方向,當(dāng)圖像中存在邊緣時(shí),有一些相鄰像素的灰度值變化比較大,即一定有較大的梯度值。所以可以求圖像的梯度來(lái)確定圖像的邊緣。
分別對(duì)圖像按照x方向和y方向進(jìn)行求偏導(dǎo),得到x梯度圖和y梯度圖。梯度是矢量,存在幅值和方向,下面這個(gè)公式表示了圖像的梯度:
梯度的幅值(magnitude)為:
梯度的方向(direction)為:
梯度方向會(huì)取絕對(duì)值,因此得到的角度范圍是 [0,180°]。
導(dǎo)數(shù)的含義就是計(jì)算像素灰度值的變化率,對(duì)于離散圖像而言,在圖像上使用一階差分來(lái)計(jì)算相鄰像素之間的差值,從而得到圖像的梯度。
也可以使用二階差分求梯度:
下面是一個(gè)邊緣的例子:
上面是對(duì)斜坡區(qū)域進(jìn)行求導(dǎo),斜坡區(qū)域是圖像中最常見(jiàn)的區(qū)域,因?yàn)閳D片中的大部分邊緣都不是突變的而是漸變的,對(duì)于斜坡區(qū)域,一階導(dǎo)數(shù)將斜坡變成了平坦區(qū)域即變成了粗線,二階導(dǎo)數(shù)將斜坡變成了兩條中間存在平臺(tái)區(qū)域的細(xì)線。
關(guān)于一階和二階導(dǎo)數(shù)總結(jié)如下:
一階導(dǎo)數(shù)在圖像中產(chǎn)生較粗的邊緣
二階導(dǎo)數(shù)對(duì)細(xì)節(jié)更敏感,如細(xì)線、噪聲等,它提取出來(lái)的邊緣更細(xì)更強(qiáng)(sharp)
二階導(dǎo)數(shù)在灰度斜坡和灰度臺(tái)階過(guò)度處會(huì)產(chǎn)生雙邊沿響應(yīng)
二階導(dǎo)數(shù)的符號(hào)可以確定邊緣的過(guò)渡是從亮到暗還是從暗到亮
根據(jù)導(dǎo)數(shù)提取邊緣之前最好對(duì)圖像做平滑處理,因?yàn)閷?dǎo)數(shù)對(duì)噪聲比較敏感,尤其是二階導(dǎo)數(shù)
二階導(dǎo)數(shù)會(huì)強(qiáng)化邊緣和其他區(qū)域的對(duì)比度,但是也會(huì)將灰度平滑區(qū)域的噪聲進(jìn)行放大,使其更明顯
三、邊緣提取
圖像梯度用于邊緣檢測(cè)。邊緣是像素值發(fā)生躍遷的地方,是圖像的顯著特征之一,在圖像特征提取、目標(biāo)檢測(cè)等方面都有重要的作用。
圖像中有灰度值的變化就會(huì)有梯度,從而產(chǎn)生邊緣,在邊緣處,具有變化的強(qiáng)弱及方向。這時(shí)一些常見(jiàn)的圖像識(shí)別算法的基礎(chǔ),比如 hog,sift,都是基于梯度的。
邊緣分為三類,step edge、ramp edge和peak edge,下面是三類邊緣的及其導(dǎo)數(shù)(一階或者二階)的形狀:
根據(jù)不同的圖像邊緣特征,來(lái)決定是使用一階還是二階導(dǎo)數(shù)來(lái)求梯度。對(duì)圖像求一階或者高階導(dǎo)數(shù),會(huì)得到一些峰值,當(dāng)這些峰值超過(guò)指定閾值時(shí),則認(rèn)為這些峰值對(duì)應(yīng)的像素是邊緣。
前面說(shuō)到在圖像上可以使用一階差分來(lái)計(jì)算相鄰像素之間的變化率,我們利用卷積和特定的算子來(lái)計(jì)算相鄰像素的變化率。prewitt算子和sobel算子可以計(jì)算相鄰三個(gè)點(diǎn)之間的變化率。它們用于一階算子的邊緣檢測(cè),利用像素點(diǎn)上下、左右相鄰點(diǎn)的灰度差求取邊緣。
求梯度有三種卷積核(robert,prewitt,sobel算子),每種卷積核有兩個(gè),對(duì)圖像分別做兩次卷積,一個(gè)代表水平梯度,一個(gè)代表垂直梯度。
3.1、Prewitt算子
下面是prewitt的兩個(gè)算子:
:計(jì)算水平梯度,檢測(cè)垂直邊緣
:計(jì)算垂直梯度,檢測(cè)水平邊緣
(梯度方向跟邊緣方向垂直)
3.2、Sobel算子
Sobel算子是在Prewitt算子的基礎(chǔ)上進(jìn)行改進(jìn),增強(qiáng)了中間這個(gè)位置的權(quán)重:
:計(jì)算水平梯度,檢測(cè)垂直邊緣
:計(jì)算垂直梯度,檢測(cè)水平邊緣
Sobel更強(qiáng)調(diào)了和邊緣相鄰的像素點(diǎn)對(duì)邊緣的影響。相比較Prewitt算子,Sobel模板能夠較好的抑制噪聲(平滑)效果。
3.3、Laplacian算子
上述兩個(gè)算子都是通過(guò)求一階導(dǎo)數(shù)來(lái)計(jì)算梯度的,用于線的檢測(cè),通常用于邊緣檢測(cè)。在圖像處理過(guò)程中,除了檢測(cè)線,有時(shí)候也需要檢測(cè)特殊點(diǎn),這就需要用二階導(dǎo)數(shù)進(jìn)行檢測(cè),著名的就是拉普拉斯(Laplacian)算子。
對(duì)圖像求兩次導(dǎo)數(shù),公式如下:
所以拉普拉斯算子為:
下面這個(gè)拉普拉斯算子提取邊緣更明顯:
拉普拉斯算子在邊緣檢測(cè)的應(yīng)用中并不局限于水平方向或垂直方向,這是Laplacian與soble的區(qū)別。
因?yàn)橐浑A二階導(dǎo)數(shù)都能放大孤立點(diǎn)和孤立線(噪聲)的影響,所以如果存在噪聲,那么一階二階導(dǎo)數(shù)處理過(guò)后的圖像將會(huì)有更多更大的噪聲。所以對(duì)圖像進(jìn)行一階二階導(dǎo)數(shù)運(yùn)算之前需要先對(duì)圖像做平滑去噪處理。
四、平滑去噪
噪聲的產(chǎn)生是因?yàn)閳D像中的某些像素的灰度值發(fā)生了突變,使得和周圍區(qū)域不和諧。除噪其實(shí)去除高頻噪聲,使得圖像中的噪聲像素的灰度值不那么突兀。
噪聲去除有基于卷積(高斯濾波,均值濾波,中值濾波等)和基于形態(tài)學(xué)(開(kāi)運(yùn)算、閉運(yùn)算)兩種方法。
用于平滑去噪和圖像銳化(之后會(huì)介紹)的卷積核所有的元素之和一般要等于1,這是為了原始圖像的能量(亮度)守恒。如果濾波器矩陣所有元素之和大于1,那么濾波后的圖像就會(huì)比原圖像更亮,反之,如果小于1,那么得到的圖像就會(huì)變暗。如果和為0,圖像不會(huì)完全黑,但只會(huì)突出一些邊緣。
從頻率域觀點(diǎn)來(lái)看這些濾波器是一種低通濾波器,高頻信號(hào)將會(huì)去掉,因此可以幫助消除圖像尖銳噪聲,實(shí)現(xiàn)圖像平滑,模糊等功能。
4.1、高斯濾波
高斯濾波就是對(duì)整幅圖像進(jìn)行加權(quán)平均數(shù)的過(guò)程,每一個(gè)像素點(diǎn)的值,都由其本身和鄰域內(nèi)的其他像素值經(jīng)過(guò)加權(quán)平均后得到。高斯濾波時(shí)水平和垂直方向呈現(xiàn)高斯分布,更突出了中心點(diǎn)在像素平滑后的權(quán)重。
高斯平滑中的濾波器是一個(gè)高斯核,二維零均值高斯函數(shù)為:
下面是高斯函數(shù)的形象表示:
常見(jiàn)的3x3高斯核(高斯核的寬和高必須是奇數(shù))為:
可以看到高斯核里的值符合高斯分布,中心的值最大,其他值根據(jù)距離中心元素的距離遞減,用高斯核對(duì)圖像進(jìn)行卷積運(yùn)算,會(huì)使圖像更模糊(平滑),而模糊的程度由高斯的標(biāo)準(zhǔn)方差 決定, 越大,平滑程度越大。高斯濾波可以有效的從圖像中去除高斯噪音。
高斯函數(shù)的值域在(0,1)之間,也就是說(shuō)高斯核的九個(gè)數(shù)加起來(lái)應(yīng)該等于1(也就是100%),把 1 這個(gè)數(shù)分?jǐn)偟骄艂€(gè)像素上,給了中間點(diǎn)更高的百分比。即高斯濾波對(duì)高斯核所覆蓋的像素點(diǎn)的灰度值做了一個(gè)權(quán)重平均,中間的點(diǎn)權(quán)重大,周圍的點(diǎn)權(quán)重小。
因?yàn)橹行狞c(diǎn)是正在處理的點(diǎn),也就是噪聲點(diǎn),給它更多的權(quán)重更能保持它自己的特性,從而使得平均運(yùn)算對(duì)周圍的像素影響更小。
4.2、均值濾波
使用進(jìn)行均值濾波操作來(lái)模糊圖像。輸出圖像的每一個(gè)像素灰度值是卷積核在輸入圖像中對(duì)應(yīng)的像素的平均值( 所有像素加權(quán)系數(shù)相等)。
均值濾波卷積核所覆蓋的九個(gè)像素點(diǎn)具有同樣權(quán)重, 該卷積核的作用在于取九個(gè)值的平均值代替中間像素值,所以起到的平滑的效果。
相比于高斯濾波,它不能很好地保護(hù)圖像細(xì)節(jié),在圖像去噪的同時(shí)也破壞了圖像的細(xì)節(jié)部分,丟失了圖像本身的一些屬性,從而使圖像變得模糊,不能很好地去除噪聲點(diǎn)。
均值濾波的卷積核為:
4.3、中值濾波
高斯濾波和均值濾波對(duì)去除高斯噪聲的效果比較好,但是在噪聲是椒鹽噪聲而不是高斯噪聲,即圖像偶爾會(huì)出現(xiàn)很大的噪聲點(diǎn)的時(shí)候,用高斯濾波和均值濾波對(duì)圖像進(jìn)行平滑模糊的話,噪聲像素是不會(huì)被去除的,它們只是轉(zhuǎn)換為更為柔和但仍然可見(jiàn)的散粒。
椒鹽噪聲(salt & pepper noise)(散粒噪聲)是數(shù)字圖像的一個(gè)常見(jiàn)噪聲,所謂椒鹽,椒就是黑,鹽就是白,椒鹽噪聲就是在圖像上隨機(jī)出現(xiàn)黑色白色的像素。椒鹽噪聲是一種因?yàn)樾盘?hào)脈沖強(qiáng)度引起的噪聲,要對(duì)椒鹽噪聲處理就需要用中值濾波。
其他濾波器都是用計(jì)算得到的一個(gè)新值來(lái)替代中心像素的值,而中值濾波是將周圍像素和中心像素九個(gè)值進(jìn)行排序以后,取中間值來(lái)替代中心像素。
中值濾波在一定的條件下可以克服常見(jiàn)線性濾波器帶來(lái)的圖像細(xì)節(jié)模糊,而且對(duì)濾除脈沖干擾及圖像掃描噪聲非常有效,也常用于保護(hù)邊緣信息,使得邊緣不會(huì)被模糊。但是對(duì)一些細(xì)節(jié)多,特別是線、尖頂?shù)燃?xì)節(jié)多的圖像不宜采用中值濾波。
總結(jié)
中值濾波器與均值濾波器的比較:在均值濾波器中,由于噪聲成分被放入平均計(jì)算中,所以輸出受到了噪聲的影響,但是在中值濾波器中,由于噪聲成分很難選上,所以幾乎不會(huì)影響到輸出。因此同樣用3x3區(qū)域進(jìn)行處理,中值濾波消除的噪聲能力更勝一籌。中值濾波無(wú)論是在消除噪聲還是保存邊緣方面都是一個(gè)不錯(cuò)的方法。
上面介紹的都是低通濾波器,使用低通濾波器可以圖像模糊,去除圖像中的高頻成分(包括噪音和邊界)。有一些去濾波技術(shù)不會(huì)模糊掉邊界,比如雙邊濾波。
編輯:jq
-
濾波器
+關(guān)注
關(guān)注
161文章
7834瀏覽量
178276 -
圖像處理
+關(guān)注
關(guān)注
27文章
1293瀏覽量
56781 -
計(jì)算
+關(guān)注
關(guān)注
2文章
450瀏覽量
38831 -
卷積
+關(guān)注
關(guān)注
0文章
95瀏覽量
18526
原文標(biāo)題:一文透徹理解:圖像卷積、邊緣提取和濾波去噪
文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺(jué)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論