深入淺出各種邊緣檢測算子及其推導_第1頁
深入淺出各種邊緣檢測算子及其推導_第2頁
深入淺出各種邊緣檢測算子及其推導_第3頁
深入淺出各種邊緣檢測算子及其推導_第4頁
深入淺出各種邊緣檢測算子及其推導_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

一.前言首先我們先來簡單了解一下什么是數(shù)字圖像處理(DigitalImageProcessing),先看一下數(shù)字圖像主要的兩個應(yīng)用領(lǐng)域:1.改善圖示信息以便人們解釋;2.為存儲、傳輸和表示而對圖像數(shù)據(jù)進行處理,以便于機器自動理解。我們可以簡單理解為就將一幅原始圖像,使用計算機處理為更為我們所能理解或所需要的形式,如圖1-1所示,為基于邊緣檢測的免疫細胞圖像自動分割過程示意圖圖1-1克隆細胞圖像自動分割過程示意圖讓我們再看一個例子,如圖1-2,為經(jīng)典的車牌檢測算法,將原始圖像進行灰度圖轉(zhuǎn)換、邊緣檢測、形態(tài)學腐蝕膨脹等操作,得到車牌區(qū)域,隨后將車牌區(qū)域進行切割(這個是筆者剛?cè)腴T時做的小demo,還沒有用到深度學習模型,用的是knn,因此識別結(jié)果很差。圖1

-2車牌檢測在我們大致了解了數(shù)字圖像處理之后,接下來介紹數(shù)字圖像處理一些基本的算法。二.數(shù)字圖像處理基礎(chǔ)知識與算法接下來先簡單介紹一下一些學習數(shù)字圖像處理的基礎(chǔ)知識與算法1).數(shù)字圖像數(shù)字圖像指的是現(xiàn)在的圖像都是以二維數(shù)字表示,每個像素的灰度值均由一個數(shù)字表示,范圍為0-255(2^8)。2).二值圖像、灰度圖像、彩色圖像二值圖像(BinaryImage):

圖像中每個像素的灰度值僅可取0或1,即不是取黑,就是取白,二值圖像可理解為黑白圖像?;叶葓D像(GrayScaleImage):

圖像中每個像素可以由0-255的灰度值表示,具體表現(xiàn)為從全黑到全白中間有255個介于中間的灰色值可以取。彩色圖像(ColorImage):

每幅圖像是由三幅灰度圖像組合而成,依次表示紅綠藍三通道的灰度值,即我們熟知的RGB,此時彩色圖像要視為三維的[height,width,3]下面用一張圖來感受一下灰度圖與彩色圖像之間的聯(lián)系與差別圖2-1RGB圖像的分解其中還有一個很重要的公式,即彩色圖像轉(zhuǎn)為灰度圖的計算公式:

GGray表示灰度圖像,RGB則表示彩色圖像的紅(red)、綠(green)、藍(blue)三通道灰度值。3).鄰接性、連通性4鄰域:

假設(shè)有一點像素p坐標為(x,y),則它的4領(lǐng)域是(x+1,y),(x-1,y),(x,y+1),(x,y-1)D鄰域:

假設(shè)有一點像素p坐標為(x,y),則它的D領(lǐng)域是(x+1,y+1),(x+1,y-1),(x-1,y+1)(x-1,y-1)8鄰域:

將4領(lǐng)域與D領(lǐng)域的集合取并集,即表示為8鄰域4連通:

對于在像素點p的4鄰域內(nèi)的像素均與像素點p形成4連通8連通:

對于在像素點p的8鄰域內(nèi)的像素均與像素點p形成8連通4).濾波濾波的目的主要兩個:1.通過濾波來提取圖像特征,簡化圖像所帶的信息作為后續(xù)其它的圖像處理;2.為適應(yīng)圖像處理的需求,通過濾波消除圖像數(shù)字化時所混入的噪聲。其中第一點就是邊緣檢測中所使用的基本思想,即簡化圖像信息,使用邊緣線代表圖像所攜帶信息。濾波可理解為濾波器(通常為3*3、5*5矩陣)在圖像上進行從上到下,從左到右的遍歷,計算濾波器與對應(yīng)像素的值并根據(jù)濾波目的進行數(shù)值計算返回值到當前像素點,如圖2-3所示,藍色塊表示濾波器,對圖像進行點積運算并賦值到圖像。具體公式表示為:(其中

表示當前像素點,

表示當前像素與濾波器對應(yīng)值相乘的值,n為濾波器大小,舉例來說如若此濾波器值全為1,則此公式計算的是當前像素點的8連通像素點的平均值,因此濾波完后的圖像應(yīng)表現(xiàn)為模糊的效果,模糊程度取決于濾波器的大小,濾波器大小(size)越大,模糊效果越明顯)三.邊緣檢測(Sobel、Prewitt、Roberts、Canny、Marr-Hildreth)1.基本邊緣檢測算子在介紹完濾波的知識后,學習基本邊緣檢測算法是一件很輕松的事情,因為邊緣檢測本質(zhì)上就是一種濾波算法,區(qū)別在于濾波器的選擇,濾波的規(guī)則是完全一致的。為了更好理解邊緣檢測算子,我們引入梯度(gradient)

這一概念,梯度是人工智能(artificialintelligence)

非常重要的一個概念,遍布機器學習、深度學習領(lǐng)域,學過微積分的同學應(yīng)該知道一維函數(shù)的一階微分基本定義為:而我們剛才也提到了,圖像的濾波一般是基于灰度圖進行的,因此圖像此時是二維的,因此我們在看一下二維函數(shù)的微分,即偏微分方程:由上面的公式我們可以看到,圖像梯度即當前所在像素點對于X軸、Y軸的偏導數(shù),所以梯度在圖像處理領(lǐng)域我們可以也理解為像素灰度值變化的速度,下面我們舉一個簡單的例子:圖3-1圖中我們可以看到,100與90之間相差的灰度值為10,即當前像素點在X軸方向上的梯度為10,而其它點均為90,則求導后發(fā)現(xiàn)梯度全為0,因此我們可以發(fā)現(xiàn)在數(shù)字圖像處理,因其像素性質(zhì)的特殊性,微積分在圖像處理表現(xiàn)的形式為計算當前像素點沿偏微分方向的差值,所以實際的應(yīng)用是不需要用到求導的,只需進行簡單的加減運算。而另一個概念梯度的模則表示f(x,y),在其最大變化率方向上的單位距離所增加的量,即:在了解完梯度的概念之后呢,下面我們先介紹一下幾種基本邊緣檢測濾波器:Sobel、Prewitt、Roberts算子。我們以Sobel為例,其中

分別表示對于X軸、Y軸的邊緣檢測算子,從

算子結(jié)構(gòu)可以很清楚發(fā)現(xiàn),這個濾波器是計算當前像素點右邊與左邊8連通像素灰度值的差值,我們先通過一維的概念來理解一下:如現(xiàn)在有一個一維數(shù)組長度為10,值為:[8,6,2,4,9,1,3,5,10,6]此時我們的一維邊緣檢測算子則表現(xiàn)為[-1,0,1],現(xiàn)在我們把邊緣檢測算子放在數(shù)組上面進行點積(即對應(yīng)點相乘之后的和),得到結(jié)果為:[6,-6,-2,7,-3,-6,4,7,1,-10]可以發(fā)現(xiàn)得到的值出現(xiàn)了負數(shù),但我們之前的定義則聲明了像素灰度值定義域為0-255范圍內(nèi),因此這里一般的操作為將負數(shù)截斷到0-255以內(nèi)或者直接取絕對值,因此現(xiàn)在我們得到的是[6,6,2,7,3,6,4,7,1,10]其中數(shù)字的大小則表示了當前像素點梯度的模大小,即灰度變化的速度有多大,值越大,我們一定程度上就可以確信當前點為我們所要找的邊緣點,通過一維的例子我們可以更好理解二維的邊緣檢測思想,即沿著X軸、Y軸進行兩次濾波操作,得到的結(jié)果進行平方求和加根號的操作得出當前像素點的圖像梯度,我們來通過一張圖理解一下這個過程:圖3-4原圖像、沿X軸梯度圖像、沿Y軸梯度圖像、梯度圖像的可視化圖中(a)為原始的灰度圖像,(b)和(c)為使用圖3-3中Sobel算子的

、

兩種形式分別對原始圖像進行的濾波結(jié)果,即表示為分別沿X、Y軸的梯度圖,最后將兩個圖融合在一起則得到了我們所需的梯度圖像(d),在給大家一張圖來幫助理解Sobel算法?,F(xiàn)在我們已經(jīng)大致了解了邊緣檢測的基本思想了,看著圖3-4(d)是不是覺得它挺好看的呢,但是好看不一定說明它就是我們所需要的邊緣圖,直接用基本的邊緣算子如Sobel求得的邊緣圖存在很多問題,如噪聲污染沒有被排除、邊緣線太過于粗寬等,因此我們接下來要介紹兩個先進的邊緣檢測算子:Canny算子和Marr-Hildreth算子。2.較為先進的邊緣檢測算子1).Canny算子Canny算子是澳洲計算機科學家約翰·坎尼(JohnF.Canny)于1986年開發(fā)出來的一個多級。邊緣檢測算法,其目標是找到一個最優(yōu)的邊緣,其最優(yōu)邊緣的定義是:1.好的檢測

--算法能夠盡可能多地標示出圖像中的實際邊緣2.好的定位

--標識出的邊緣要與實際圖像中的實際邊緣盡可能接近3.最小響應(yīng)

--圖像中的邊緣只能標識一次,并且可能存在的圖像噪聲不應(yīng)該標識為邊緣所以接下來我們來介紹一下目前流行的Canny算法的具體步驟(1).高斯(Gaussian)濾波高斯濾波目前是最為流行的去噪濾波算法,高斯與我們學的概率論中正態(tài)分布中正態(tài)一詞指的是同一個意思,其原理為根據(jù)待濾波的像素點及其鄰域點的灰度值按照高斯公式生成的參數(shù)規(guī)則進行加權(quán)平均,這樣可以有效濾去理想圖像中疊加的高頻噪聲(noise)二維高斯公式為:常見的高斯濾波器有:圖3-5常見的高斯濾波器其實高斯濾波器很像一個金字塔結(jié)構(gòu),其濾波器的值大小我們可以理解為權(quán)重(weight),值越大對應(yīng)的像素點權(quán)重越大,分量也就越大,因此從高斯濾波器我們可以看出對應(yīng)當前像素點,距離越遠權(quán)重越小,對灰度值的貢獻也就越小。讓我們舉個例子來理解一下高斯濾波,如圖3-5中左邊的高斯濾波器,其中心點4我們可以把它看成是'主人公',其周圍的點看成是'鄰居',噪聲我們把它看成是'壞人',現(xiàn)在我們假設(shè)這9個人里面,有一個人是'壞人',我們也知道壞人是肯定會說自己是好人的,但要是我們有投票機制決定一個人是否為'壞人'呢,其中權(quán)重(weight)則對應(yīng)每個人說話的分量,投票機制就為我們所說的加權(quán)平均策略,現(xiàn)在我們可以很直觀地發(fā)現(xiàn),其實高斯濾波就是一個會考慮其周圍像素點的濾波器,即使當前點位為噪聲點,高斯濾波器也會通過周圍點的灰度值來制約噪聲的影響,生成高斯濾波器與濾波的代碼如下:(其中g(shù)aussKernel'表示對gaussKernel進行轉(zhuǎn)置)(2).計算梯度圖像與角度圖像計算梯度圖像我們剛才基本也有理解了一下,無非就是用各種邊緣檢測算子進行梯度的檢測,但Canny中使用的梯度檢測算子有點高級,是使用高斯濾波器進行梯度計算得到的濾波器,得到的結(jié)果也類似于Sobel算子,即距離中心點越近的像素點權(quán)重越大,代碼如下:角度圖像的計算則較為簡單,其作用為非極大值抑制的方向提供指導,公式如下:(3).對梯度圖像進行非極大值抑制從上一步得到的梯度圖像存在邊緣粗寬、弱邊緣干擾等眾多問題,現(xiàn)在我們可以使用非極大值抑制來尋找像素點局部最大值,將非極大值所對應(yīng)的灰度值置0,這樣可以剔除一大部分非邊緣的像素點。如圖3-6所示,C表示為當前非極大值抑制的點,g1-4為它的8連通鄰域點,圖中藍色線段表示上一步計算得到的角度圖像C點的值,即梯度方向,第一步先判斷C灰度值在8值鄰域內(nèi)是否最大,如是則繼續(xù)檢查圖中梯度方向交點dTmp1,dTmp2值是否大于C,如C點大于dTmp1,dTmp2點的灰度值,則認定C點為極大值點,置為1,因此最后生成的圖像應(yīng)為一副二值圖像,邊緣理想狀態(tài)下都為單像素邊緣。圖3-6非極大值抑制(其中需要注意的是梯度方向交點并不一定落在8領(lǐng)域所在8個點的位置,因此dTmp1和dTmp2實際應(yīng)用中是使用相鄰兩個點的雙線性插值所形成的灰度值)。最后在上一張圖幫助大家理解,如圖3-7所示,其中梯度方向均為垂直向上,經(jīng)過非極大值抑制后取梯度方向上最大值為邊緣點,形成細且準確的單像素邊緣。圖3-7(4).使用雙閾值進行邊緣連接經(jīng)過以上三步之后得到的邊緣質(zhì)量已經(jīng)很高了,但還是存在很多偽邊緣,因此Canny算法中所采用的算法為雙閾值法,具體思路為選取兩個閾值,將小于低閾值的點認為是假邊緣置0,將大于高閾值的點認為是強邊緣置1,介于中間的像素點需進行進一步的檢查。根據(jù)高閾值圖像中把邊緣鏈接成輪廓,當?shù)竭_輪廓的端點時,該算法會在斷點的8鄰域點中尋找滿足低閾值的點,再根據(jù)此點收集新的邊緣,直到整個圖像閉合,具體代碼為:但由于尋找弱邊緣點的計算代價過大,因為使用的是遞歸思維,且所找尋到的弱邊緣點為數(shù)不多,因此實際應(yīng)用中常常舍去這一步驟,取而代之的是基于形態(tài)學的邊緣細化操作,具體思想我們以后還會提到,具體代碼為:至此,我們已經(jīng)深度理解了Canny算法的思想與實現(xiàn)手段,實際應(yīng)用中Canny一般是邊緣檢測的首選項,其算法思想也非常值得我們學習,接下來我們在簡單介紹基于二階導數(shù)法的Marr-Hildreth邊緣檢測算子。1).Marr-Hildreth算子在學習Marr-Hildreth算子之前我們先來理解一下為什么要用二階導數(shù)法。如圖3-8所示,左邊表示的是一副灰度圖像,從左到右從黑色(0)慢慢變?yōu)榘咨?255),現(xiàn)在我們來看它的水平灰度剖面,灰度值從小到大平穩(wěn)上升,其一階導數(shù)表示為在上升區(qū)域為不變的值,其中得到的信息是圖像灰度值是平穩(wěn)過渡的,即梯度值相等,接下來在將其求二次導數(shù),得到的圖像為在開始過渡的起點為正數(shù),其值為一階導數(shù)在此點的梯度值,結(jié)束點也和起點一樣,現(xiàn)在重點來了,我們將這兩點連起來得到一個與X軸的交叉點,這一點就是我們所認為的邊緣點,這就是二階導數(shù)應(yīng)用在邊緣檢測領(lǐng)域的奇妙之處(第一次接觸的時候覺得巨神奇)。在看一下marr和hildreth的證明結(jié)論:1.灰度變化與圖像尺寸無關(guān),因此他們的檢測要求使用不同尺寸的算子2.灰度的突然變換會在一階導數(shù)中引起波峰或波谷,在二階導數(shù)中等效引起零交叉圖3-8零交叉原理學習了基于二階導數(shù)的馬爾哈希算法原理之后,我們來看一下它的思路:(1).高斯濾波對你沒看錯,還是高斯濾波,基本所有邊緣檢測算法前面都會加一個高斯濾波來去除高頻噪聲,所以這里不在多說了,大家往前回顧一下就好了。(2).計算拉普拉斯(Laplacian)二階導Marr-Hildreth證明,最滿足圖像處理需求的算子是濾波器拉普拉斯高斯(Log)算子,具體原理我們不在多做闡述,這里我們來看一下它的公式:由其生成的拉普拉斯濾波器也被稱為墨西哥草帽算子,因為其中間一般為較大的正數(shù),8鄰域連通點為較小的負數(shù)值,常用的濾波器如圖3-9所示:圖3-9拉普拉斯濾波器之后就是使用拉普拉斯濾波器進行圖像的濾波操作,得到待計算圖像。(3).計算零交叉(Zerocrossing)零交叉的實現(xiàn)較為簡單,由于零交叉點意味著至少兩個相鄰的像素點的像素值異號,一共有四種需要檢測的情況:左右,上下,兩個對角,其中如果濾波后的圖像g(x,y)的任意像素p處的四種情況其中一組的差值的絕對值超過了設(shè)定的閾值,則我們可以稱p為一個零交叉像素,示例如下:圖3-10此為Marr-Hildreth其中一小部分,檢測[-+]這一情況是否滿足,其中thresh為提到的閾值。到這里我們就學習了兩種最為流行且經(jīng)典的先

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論