国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于圖像邊緣提取的油水界面檢測算法的比較研究

2014-10-21 14:56郭宇高雁杰
科技視界 2014年36期
關(guān)鍵詞:邊緣檢測圖像處理

郭宇 高雁杰

【摘 要】圖像邊緣包含圖像的大量重要信息,它主要存在于目標(biāo)與目標(biāo)、目標(biāo)與背景、區(qū)域與區(qū)域之間。圖像邊緣的圖像的邊緣檢測是獲取圖像信息的一個(gè)重要環(huán)節(jié)。圖像邊緣的檢測結(jié)果的正確性和可靠性將直接影響到機(jī)器視覺系統(tǒng)對(duì)客觀世界的理解。本文將Sobel算子、形態(tài)學(xué)梯度、Canny算子三種邊緣提取方法應(yīng)用于油水界面檢測,實(shí)驗(yàn)對(duì)比了這三種方法的油水界面檢測效果,可以看出每一種算法的特性和他們各自的適用狀況。

【關(guān)鍵詞】邊緣檢測;圖像處理;油水界面

0 引言

圖像邊緣是圖像最基本的特征。邊緣是指圖像中周圍像素灰度變化不連續(xù)的那些像素的集合。圖像的邊緣部分集中了圖像的大部分信息,圖像邊緣的檢測與提取對(duì)于整個(gè)圖像的別與理解是非常重要的。我們將邊緣定義為圖像中灰度發(fā)生急劇變化的區(qū)域邊界,圖像灰度的變化情況可以用圖像灰度分布的梯度來反映,因此可以用局部圖像微分來獲得邊緣檢測算子[1]。

傳統(tǒng)的邊緣檢測算法包括空域微分算子和擬合曲面兩種方法??沼蛭⒎炙阕影≧oberts算子、Prewitt算子、Sobel算子、Laplace算子、Canny算子等;擬合曲面是利用當(dāng)前像素領(lǐng)域中的一些像素值擬合一個(gè)曲面,然后求這個(gè)連續(xù)曲面在當(dāng)前像素出的梯度,用微分算子的方法進(jìn)行邊緣檢測。除此以外,以數(shù)學(xué)形態(tài)學(xué)為基礎(chǔ)的形態(tài)學(xué)梯度算法在圖像處理中已經(jīng)得到了廣泛的應(yīng)用。形態(tài)學(xué)梯度能夠比較精確地反映圖像梯度的變化,梯度值的大小反映了原圖像信息中像素灰度值變化的劇烈程度。

圖像的邊緣檢測已經(jīng)廣泛應(yīng)用于各個(gè)領(lǐng)域當(dāng)中。針對(duì)油水分離問題,油水界面的邊緣檢測顯得尤為重要。工業(yè)上針對(duì)大型油田目前國內(nèi)普遍采用重力油水分離法,油水混合物具有復(fù)雜的物理特性,為了達(dá)到將油水較好地分離,油水界面檢測技術(shù)顯得尤為重要[2]。從測量原理的角度來看,目前已經(jīng)有浮子式、電容式、磁致伸縮式、光纖式及射線式等不同的界面檢測儀器,而這些儀器普遍存在非接觸性差、可維護(hù)性差、精度不高的缺點(diǎn)。

本文從計(jì)算機(jī)視覺角度出發(fā),利用邊緣檢測算法對(duì)油水界面實(shí)驗(yàn)圖像進(jìn)行檢測,并對(duì)傳統(tǒng)Sobel算子、形態(tài)學(xué)梯度和Canny算子對(duì)油水界面實(shí)驗(yàn)圖像的邊緣檢測的效果進(jìn)行各方面的對(duì)比,通過圖像效果的比較加深對(duì)三種方法的理解,對(duì)不同方法的優(yōu)缺點(diǎn)有一定的認(rèn)識(shí),在實(shí)際應(yīng)用中更為靈活地掌握,從而較為準(zhǔn)確地獲取圖像的邊緣信息。

1 幾種邊緣檢測算子的算法實(shí)現(xiàn)

1.1 Sobel算子的算法實(shí)現(xiàn)

對(duì)于數(shù)字圖像{f(i,j)},的每個(gè)像素,Sobel梯度算子首先進(jìn)行加權(quán)平均,再微分,然后進(jìn)行一階微分處理,檢測出邊緣點(diǎn)。

為了得到一幅圖像的梯度,在圖像的每一個(gè)像素位置處都需要計(jì)算偏導(dǎo)數(shù)?墜f/?墜x和?墜f/?墜y,因此,可以使用小區(qū)域模板卷積來進(jìn)行近似計(jì)算[3]。

卷積算子(左為垂直方向,右為水平方向)

使用卷積算子進(jìn)行卷積運(yùn)算,使用如公式(1),求出梯度值G(i,j)。

G(i,j)=|f(i-1,j+1)+2*f(i,j+1)+f(i+1,j+1)-f(i-1,j-1)-2*f(i,j-1)-f(i+1,j-1)|+|f(i-1,j-1)+2*f(i-1,j)+f(i-1,j+1)-f(i+1,j-1)-2*f(i+1,j)-f(i+1,j+1)| (1)

適當(dāng)選取閾值使圖像二值化Threshold,梯度值G(i,j)大于等于閾值Threshold的點(diǎn)為邊緣點(diǎn),反之則不是邊緣點(diǎn),從而實(shí)現(xiàn)邊緣檢測。

算法的主要步驟[3]:

(1)分別將兩個(gè)方向模板沿著圖像從一個(gè)像素移動(dòng)到另一個(gè)像素,并將像素的中心與圖像中的某個(gè)像素位置重合;

(2)將模板內(nèi)的系數(shù)與其圖像上相對(duì)應(yīng)的像素值f(x,y)相乘,并將所有相乘的值相加;

(3)計(jì)算梯度值作為新的灰度值;

(4)選取適當(dāng)?shù)拈撝礣hreshold,若新像素灰度值大于等于Threshold,則判斷該像素點(diǎn)為圖像邊緣點(diǎn)。

1.2 形態(tài)學(xué)梯度的邊緣檢測算法

數(shù)學(xué)形態(tài)學(xué)以形態(tài)為基礎(chǔ)對(duì)圖像進(jìn)行分析,其基本思想是用具有一定形態(tài)的結(jié)構(gòu)元素去量度和提取圖像中的對(duì)應(yīng)形狀以達(dá)到圖像分析和識(shí)別的目的。數(shù)學(xué)形態(tài)學(xué)的基本思想是利用結(jié)構(gòu)元素去探測圖像,討論是否能夠?qū)⑦@個(gè)結(jié)構(gòu)元素很好地放進(jìn)圖像內(nèi)部,同時(shí)驗(yàn)證填放結(jié)構(gòu)元素的方法是否有效。

定義1:圖像A被結(jié)構(gòu)元素B腐蝕[4]

(AΘB) (x,y)=min{A(x-s,y-t)-B(s,t)/(x-s,y-t)∈DA;(s,t)∈DB}(2)

腐蝕的基本目的在于標(biāo)記出圖像內(nèi)部可以將結(jié)構(gòu)元素填入的位置。如果結(jié)構(gòu)元素的原點(diǎn)在其內(nèi)部,經(jīng)過腐蝕處理的圖像作為原圖像的一個(gè)子集而存在;如果結(jié)構(gòu)元素的原點(diǎn)在其外部,腐蝕后的圖像極有可能不在原圖像的內(nèi)部。

定義2:圖像A被結(jié)構(gòu)元素B膨脹

(A⊕B)(x,y)=max{A(x-s,y-t)+B(s,t)|(x-s,y-t)∈DA;(s,t)∈DB}(3)

將以上所定義的腐蝕、膨脹運(yùn)算進(jìn)行組合可以實(shí)現(xiàn)對(duì)圖像的開運(yùn)算、閉運(yùn)算操作。

在圖像處理中,開運(yùn)算:

A?莓B =(AΘB)⊕B(4)

即先用結(jié)構(gòu)元素B對(duì)圖像進(jìn)行腐蝕,然后再用結(jié)構(gòu)元素B對(duì)腐蝕后的結(jié)果進(jìn)行膨脹。開運(yùn)算對(duì)去掉圖像輪廓上的毛刺、平滑圖像輪廓起到了很好的作用。

而閉運(yùn)算恰恰相反:

A·B=(A⊕B)ΘB=(AC?莓B)C(5)

即先用結(jié)構(gòu)元素B對(duì)圖像進(jìn)行膨脹,然后再用其對(duì)膨脹后的圖像進(jìn)行腐蝕。

圖1、圖2為開運(yùn)算和閉運(yùn)算的幾何解釋

(a)圖A和結(jié)構(gòu)元素B (b)B沿著A的內(nèi)部轉(zhuǎn)動(dòng) (c)開運(yùn)算結(jié)果

圖1

(c)圖A和結(jié)構(gòu)元素B (d)B沿著A的外部轉(zhuǎn)動(dòng) (e)閉運(yùn)算結(jié)果

圖2

形態(tài)學(xué)邊緣檢測算子是一種非線性差分算子,在以上定義的梯度算子中,腐蝕運(yùn)算和膨脹運(yùn)算都能保持圖像整體灰度和大的亮區(qū)域基本不受影響。該邊緣檢測算法大致如下:

(1)對(duì)數(shù)字圖像F進(jìn)行閉運(yùn)算,然后進(jìn)行開運(yùn)算,實(shí)現(xiàn)對(duì)圖像的預(yù)處理,以濾除圖像中的噪聲。即:

A=(F·B)?莓B(6)

其中,F(xiàn)表示數(shù)字圖像矩陣,B=■;

(2)將步驟(1)中得到的圖像做閉運(yùn)算,實(shí)現(xiàn)圖像的平滑運(yùn)算。即:

C=A·B(7)

(3)分別將圖像C及A進(jìn)行膨脹、腐蝕運(yùn)算。即:grad1=C⊕B;grad2=AΘB;

(4)將grad1與grad2相差,就可以得到較好的圖像邊緣E。

E=grad1-grad2(8)

(5)最后進(jìn)行對(duì)所得圖像進(jìn)行重建。

1.3 Canny算子的算法實(shí)現(xiàn)

高斯噪聲中,一個(gè)典型的邊緣代表一個(gè)階躍的強(qiáng)度變化。優(yōu)秀的邊緣算子應(yīng)滿足以下三個(gè)判斷準(zhǔn)則:信噪比準(zhǔn)則;定位精度準(zhǔn)則;單邊緣響應(yīng)準(zhǔn)則[5]。根據(jù)這三個(gè)準(zhǔn)則推導(dǎo)出了最佳邊緣檢測算子——Canny算子。

Canny算子的邊緣檢測算法如下:

(1)利用二維高斯函數(shù)的一階導(dǎo)數(shù),設(shè)二維高斯函數(shù)為

G(x,y)=■exp(-■)(9)

計(jì)算二維濾波器模板的一階偏導(dǎo),得到兩個(gè)一維濾波器,用標(biāo)準(zhǔn)卷積得到高斯平滑。其中σ是高斯函數(shù)的標(biāo)準(zhǔn)差,控制著平滑圖像的程度。

(2)計(jì)算梯度幅值和方向[6]

利用2×2鄰域一階偏導(dǎo)的有限差分來計(jì)算平滑后的數(shù)據(jù)陣列G(x,y)的梯度幅值和梯度方向。其中,x和y方向偏導(dǎo)數(shù)的2個(gè)陣列Px[i,j]和Py[i,j]分別為

Px[i,j]=[G(i,j+1)-G(i,j)+G(i+1,j+1)-G(i+1,j)]/2(10)

Py[i,j]=[G(i,j)-G(i+1,j)+G(i,j+1)-G(i+1,j+1)]/2(11)

像素的梯度幅值和梯度方向用以下公式計(jì)算

M[i,j]=(Px[i,j]2+Py[i,j]2)1/2(12)

梯度方向?yàn)?/p>

θ[i,j]=arctan(Py[i,j]/Px[i,j])(13)

(3)對(duì)梯度幅值進(jìn)行非極大值抑制。遍歷圖像,若某個(gè)像素的灰度值與其梯度方向上前后兩個(gè)像素的灰度值相比不是最大,就將像素值置為0,即不是邊緣。

(4)使用雙閾值算法檢測和連接邊緣。雙閾值算法[7]是對(duì)經(jīng)過非極大值抑制和梯度直方圖分類的子圖像I[i,j]分別使用高閾值和低閾值H和L,分割得到邊緣圖像Ih[i,j]和Il[i,j]。圖像Ih[i,j]可能在輪廓上有間斷,所以雙閾值算法要在Ih[i,j]中把邊緣連成輪廓,達(dá)到輪廓端點(diǎn)時(shí),就將由低閾值得到的圖像Il[i,j]的8鄰域位置尋找可以連接輪廓的邊緣,不斷遞歸跟蹤下去,直到將Ih[i,j]中所有間隙都連接起來為止。

2 實(shí)驗(yàn)方法應(yīng)用

油水實(shí)驗(yàn)圖像中物質(zhì)大致可以分為三類:水,油和空氣。水層和油層通過肉眼可以識(shí)別出來,而空氣層由于稠油黏附于試管壁上使得空氣層無法在圖像上顯現(xiàn)出來,所以實(shí)驗(yàn)中暫時(shí)不考慮空氣層的影響。

本次實(shí)驗(yàn)的實(shí)驗(yàn)圖像大致分為兩類:一種是油水界面清晰的實(shí)驗(yàn)圖像如圖3,這種圖像的層次分明,邊界清晰,易于識(shí)別。另一種是油水界面模糊的實(shí)驗(yàn)圖像如圖4,這種圖像的油水的界面邊緣形狀不規(guī)則,油層和水層不是很均勻地分開,不易于識(shí)別。

實(shí)驗(yàn)將對(duì)兩種圖像均采用上文提到的三種邊緣檢測的方法,通過比較實(shí)驗(yàn)圖像的實(shí)際效果,實(shí)驗(yàn)所用的方法如下:

Sobel算子是將圖像的像素點(diǎn)與模板的系數(shù)進(jìn)行運(yùn)算,用得到的值與閾值進(jìn)行比較并得到邊緣點(diǎn);形態(tài)學(xué)梯度算法是對(duì)圖像進(jìn)行一系列的膨脹腐蝕、開閉運(yùn)算,并利用上文提到的方法進(jìn)行差值運(yùn)算得到處理后的圖像;Canny算子將圖像利用高斯濾波進(jìn)行預(yù)處理并計(jì)算梯度幅值,進(jìn)行非極大值抑制后利用雙閾值算法檢測連接邊緣,從而得到處理后的圖像。

圖3 清晰的油水界面 圖4 模糊的油水界面

3 實(shí)驗(yàn)結(jié)果與分析

圖5 清晰油水界面邊緣提取

從左至右依次為Sobel、形態(tài)學(xué)梯度、Canny方法

圖6 模糊油水界面邊緣提取

從左至右依次為Sobel、形態(tài)學(xué)梯度、Canny方法

圖5、圖6為利用對(duì)不同清晰度的油水界面實(shí)驗(yàn)圖像的檢測效果來比較以上三種邊緣檢測算法的優(yōu)劣性。通過實(shí)驗(yàn)圖像得知:

對(duì)于清晰的油水界面實(shí)驗(yàn)圖像,Sobel算子與形態(tài)(下轉(zhuǎn)第8頁)(上接第6頁)學(xué)梯度的算法檢測出來的邊緣比較粗,Canny算子的檢測效果最好;對(duì)于不清晰的油水界面實(shí)驗(yàn)圖像,Canny算子受噪聲干擾嚴(yán)重,無法檢測出真實(shí)的邊緣;Sobel算子和形態(tài)學(xué)梯度方法檢測出來的邊緣比較清楚,但形態(tài)學(xué)梯度方法檢測出的偽邊緣少,能夠真實(shí)檢測出油水界面的邊緣。

通過兩組實(shí)驗(yàn)圖像對(duì)比結(jié)果可以得出:

(1)Sobel算子的優(yōu)點(diǎn)是計(jì)算簡單。但是只采用了兩個(gè)方向的模板,只能檢測水平和垂直方向上的邊緣,對(duì)紋理復(fù)雜的圖像,效果不理想;閾值是人為設(shè)定,判斷欠合理,會(huì)造成邊緣點(diǎn)的誤判,使得檢測出了一些偽邊緣,使得邊緣較粗,降低檢測精度。

(2)形態(tài)學(xué)梯度邊緣檢測算法不僅有很好的邊緣提取能力,也具有較強(qiáng)的抗噪能力。但該方法存在寬邊緣現(xiàn)象,對(duì)相鄰幾個(gè)像素邊緣無法分辨。同時(shí)形態(tài)學(xué)梯度對(duì)模板的依賴性大,不能完整地反映圖像的邊緣信息。

(3)Canny算子提取的邊緣在實(shí)驗(yàn)結(jié)果中是最為完整的,而且邊緣較細(xì),邊緣的連續(xù)性好,定位比較準(zhǔn)確。但Canny算子對(duì)噪聲比較敏感,對(duì)高斯函數(shù)標(biāo)準(zhǔn)偏差σ的調(diào)整要求高,若σ選取較大時(shí),高斯平滑模板變大,頻帶窄,抗噪能力較強(qiáng),但是容易造成圖像的緩變邊緣丟失及過度光滑;若σ選取較小時(shí),頻帶較寬,邊緣細(xì)節(jié)精度高,但是圖像平滑作用較小,抗噪聲能力較弱。容易丟失一些真實(shí)邊緣的細(xì)節(jié)部分,沒有良好的自適應(yīng)能力。

3 結(jié)論

本文針對(duì)三種邊緣檢測的算法進(jìn)行了油水界面檢測實(shí)驗(yàn),利用兩組界面邊緣清晰度不同的實(shí)驗(yàn)圖像的實(shí)驗(yàn)結(jié)果中比較得出每種方法的優(yōu)缺點(diǎn),從而找到針對(duì)不同油水界面的最佳邊緣檢測方法。近年來隨著數(shù)學(xué)理論及人工智能的發(fā)展,又涌現(xiàn)出了許多新的邊緣檢測算法,比如小波變換邊緣檢測、基于神經(jīng)網(wǎng)絡(luò)邊緣檢測、基于遺傳算法邊緣檢測等方法。不過無論什么算法都不能滿足所有的圖像,在實(shí)際應(yīng)用中每一種算法都有自己的特點(diǎn),我們要根據(jù)需求來選擇和結(jié)合不同的算法,來提高我們的工作效率,同時(shí)也在應(yīng)用中不斷改進(jìn)算法。

【參考文獻(xiàn)】

[1][美]岡薩雷斯,阮秋琦.數(shù)字圖像處理[M].3版.北京:電子工業(yè)出版社,2011:445-466.

[2]何兆民.油水界面檢測系統(tǒng)的研究[D].青島:青島科技大學(xué),2008,6.

[3]姜炳旭,劉杰,孫可.Sobel邊緣檢測的細(xì)化[J].沈陽師范大學(xué)學(xué)報(bào),2010,28(4):504.

[4]夏平,劉馨瓊,向?qū)W軍,萬鈞力.基于形態(tài)學(xué)梯度的圖像邊緣檢測算法[J].計(jì)算機(jī)技術(shù)與發(fā)展,2007,17(12):109.

[5]龔聲蓉,劉純平,王強(qiáng).數(shù)字圖像處理與分析[M].北京:清華大學(xué)出版社,2006:173-174.

[6]Canny J. Acomputational approach to edge detection[J]. IEEE Transactions on Pattern Analysis and MachineIntelligence,1986,8(6):679-698.

[7]王植,賀賽先.一種基于Canny理論的自適應(yīng)邊緣檢測方法[J].中國圖象圖形學(xué)報(bào),2004,9(8):958.

[責(zé)任編輯:湯靜]

猜你喜歡
邊緣檢測圖像處理
基于圖像處理的機(jī)器人精確抓取的設(shè)計(jì)與實(shí)現(xiàn)
機(jī)器學(xué)習(xí)在圖像處理中的應(yīng)用
Bayesian-MCMC算法在計(jì)算機(jī)圖像處理中的實(shí)踐
改進(jìn)壓縮感知算法的圖像處理仿真研究
基于圖像處理的定位器坡度計(jì)算
Photo Shop通道在圖像處理中的應(yīng)用
靖远县| 常山县| 江安县| 天柱县| 怀远县| 徐水县| 宽甸| 永新县| 榆中县| 昆山市| 东兴市| 观塘区| 宜丰县| 新宾| 岢岚县| 昆山市| 类乌齐县| 舒城县| 长葛市| 双柏县| 蒲江县| 安丘市| 博爱县| 东港市| 台中县| 彭山县| 温州市| 左贡县| 盐津县| 滁州市| 名山县| 通州市| 汨罗市| 太保市| 周宁县| 楚雄市| 通州区| 竹溪县| 尼玛县| 托里县| 玛纳斯县|