日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

常见边界提取算子

發(fā)布時(shí)間:2023/12/9 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 常见边界提取算子 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、邊緣的重要性

? ??

? ? ? ? 邊緣在圖像處理中的重要性不言而喻。當(dāng)前AI最高端技術(shù)莫過(guò)于深度學(xué)習(xí),而圖像方面的深度學(xué)習(xí)建模所需要的特征,很多是從邊緣為起點(diǎn),不斷向上構(gòu)成更高層次的特征描述。我們來(lái)看下例子,此例摘自zouxy09關(guān)于深度學(xué)習(xí)的一篇文章(?Deep Learning(深度學(xué)習(xí))學(xué)習(xí)筆記整理系列):

? ? ? ?1995 年前后,Bruno Olshausen和 David Field 兩位學(xué)者任職 Cornell University,他們?cè)噲D同時(shí)用生理學(xué)和計(jì)算機(jī)的手段,雙管齊下,研究視覺(jué)問(wèn)題。

??????? 他們收集了很多黑白風(fēng)景照片,從這些照片中,提取出400個(gè)小碎片,每個(gè)照片碎片的尺寸均為 16x16 像素,不妨把這400個(gè)碎片標(biāo)記為 S[i], i = 0,.. 399。接下來(lái),再?gòu)倪@些黑白風(fēng)景照片中,隨機(jī)提取另一個(gè)碎片,尺寸也是 16x16 像素,不妨把這個(gè)碎片標(biāo)記為 T。

????????他們提出的問(wèn)題是,如何從這400個(gè)碎片中,選取一組碎片,S[k], 通過(guò)疊加的辦法,合成出一個(gè)新的碎片,而這個(gè)新的碎片,應(yīng)當(dāng)與隨機(jī)選擇的目標(biāo)碎片 T,盡可能相似,同時(shí),S[k] 的數(shù)量盡可能少。用數(shù)學(xué)的語(yǔ)言來(lái)描述,就是:

??????? Sum_k (a[k] * S[k]) --> T,???? 其中 a[k] 是在疊加碎片 S[k] 時(shí)的權(quán)重系數(shù)。

??????? 為解決這個(gè)問(wèn)題,Bruno Olshausen和 David Field 發(fā)明了一個(gè)算法,稀疏編碼(Sparse Coding)。

??????? 稀疏編碼是一個(gè)重復(fù)迭代的過(guò)程,每次迭代分兩步:

1)選擇一組 S[k],然后調(diào)整 a[k],使得Sum_k (a[k] * S[k]) 最接近 T。

2)固定住 a[k],在 400 個(gè)碎片中,選擇其它更合適的碎片S’[k],替代原先的 S[k],使得Sum_k (a[k] * S’[k]) 最接近 T。

????????經(jīng)過(guò)幾次迭代后,最佳的 S[k] 組合,被遴選出來(lái)了。令人驚奇的是,被選中的 S[k],基本上都是照片上不同物體的邊緣線(xiàn),這些線(xiàn)段形狀相似,區(qū)別在于方向。

??????? Bruno Olshausen和 David Field 的算法結(jié)果,與 David Hubel 和Torsten Wiesel 的生理發(fā)現(xiàn),不謀而合!

? ? ? ? ??也就是說(shuō),復(fù)雜圖形,往往由一些基本結(jié)構(gòu)組成。比如下圖:一個(gè)圖可以通過(guò)用64種正交的edges(可以理解成正交的基本結(jié)構(gòu))來(lái)線(xiàn)性表示。比如樣例的x可以用1-64個(gè)edges中的三個(gè)按照0.8,0.3,0.5的權(quán)重調(diào)和而成。而其他基本edge沒(méi)有貢獻(xiàn),因此均為0 。


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖 1


? ? ? 上面的例子只是說(shuō)明了邊緣特征的重要性(是不是扯遠(yuǎn)了)。接著扯。。。

二、邊緣定義及類(lèi)型

? ??

? ? ? ? 定義:邊緣是不同區(qū)域的分界線(xiàn),是周?chē)?#xff08;局部)像素有顯著變化的像素的集合,有幅值與方向兩個(gè)屬性。這個(gè)不是絕對(duì)的定義,主要記住邊緣是局部特征以及周?chē)袼仫@著變化產(chǎn)生邊緣。

? ? ? ? ?tips:輪廓和邊緣的關(guān)系,一般認(rèn)為輪廓是對(duì)物體的完整邊界的描述,邊緣點(diǎn)一個(gè)個(gè)連接起來(lái)構(gòu)成輪廓。邊緣可以是一段邊緣,而輪廓一般是完整的。人眼視覺(jué)特性,看物體時(shí)一般是先獲取物體的輪廓信息,再獲取物體中的細(xì)節(jié)信息,比如看到幾個(gè)人站在那,我們一眼看過(guò)去馬上能知道的是每個(gè)人的高矮胖瘦,然后才獲取臉和衣著等信息。

? ? ? ? ?類(lèi)型:簡(jiǎn)單分為4中類(lèi)型,階躍型、屋脊型、斜坡型、脈沖型,其中階躍型和斜坡型是類(lèi)似的,只是變化的快慢不同,同樣,屋脊型和脈沖型也是如此。見(jiàn)圖2,(a)和(b)可認(rèn)為是階躍或斜坡型,(c)脈沖型,(d)屋脊型,階躍與屋脊的不同在于階躍上升或下降到某個(gè)值后持續(xù)下去,而屋脊則是先上升后下降。


圖 2 邊緣類(lèi)型

三、圖像邊緣描述

? ? ? ??

? ? ? ?我們更多關(guān)注的是階躍和屋脊型邊緣,邊緣用微分算子來(lái)刻畫(huà),見(jiàn)圖3


圖 3

? ? ? ? 在數(shù)學(xué)中,函數(shù)的變化率由導(dǎo)數(shù)來(lái)刻畫(huà),圖像我們看成二維函數(shù),其上面的像素值變化,當(dāng)然也可以用導(dǎo)數(shù)來(lái)刻畫(huà),當(dāng)然圖像是離散的,那我們換成像素的差分來(lái)實(shí)現(xiàn)。對(duì)于階躍型邊緣,圖3中顯示其一階導(dǎo)數(shù)具有極大值,極大值點(diǎn)對(duì)應(yīng)二階導(dǎo)數(shù)的過(guò)零點(diǎn),也就是,準(zhǔn)確的邊緣的位置是對(duì)應(yīng)于一階導(dǎo)數(shù)的極大值點(diǎn),或者二階導(dǎo)數(shù)的過(guò)零點(diǎn)(注意不僅僅是二階導(dǎo)數(shù)為0值的位置,二值正負(fù)值過(guò)渡的零點(diǎn))。故邊緣檢測(cè)算子的類(lèi)型當(dāng)然就存在一階和二階微分算子。

四、邊緣檢測(cè)算子類(lèi)別

? ? ? ??

? ? ?常見(jiàn)邊緣檢測(cè)算子:Roberts 、Sobel 、Prewitt、Laplacian、Log/Marr、Canny、Kirsch、Nevitia

? ? ? ?一階微分算子:Roberts 、Sobel 、Prewitt

? ? ? ??Robert算子是第一個(gè)邊緣檢測(cè)算子,提出者Lawrence Roberts in 1963。

? ? ? ? Sobel邊緣算子,當(dāng)年作者并沒(méi)有公開(kāi)發(fā)表過(guò)論文,僅僅是在一次博士生課題討論會(huì)(1968)上提出("A 3x3 Isotropic Gradient Operator for Image Processing"),后在1973年出版的一本專(zhuān)著("Pattern Classification and Scene Analysis")的腳注里作為注釋出現(xiàn)和公開(kāi)的。提出者Irwin Sobel。

? ? ? ? Prewitt算子來(lái)自J.M.S. Prewitt "Object Enhancement and Extraction" in "Picture processing and Psychopictorics", Academic Press,1970。

? ? ? ? 我們看這三種邊緣檢測(cè)算子模板及寫(xiě)成差分的形式



?Roberts算子



Sobel算子



Prewitt算子

圖 4 一階微分算子

? ? ? ?如何計(jì)算邊緣幅值與方向?以Sobel算子為例。3*3 Sobel兩個(gè)方向的算子在圖像上滑動(dòng),模板與其覆蓋的圖像3*3區(qū)域9個(gè)像素進(jìn)行卷積,求和后得到此方向的邊緣檢測(cè)幅值。





f(x,y)為圖像,Gx和Gy分別是水平和豎直方向算子的卷積結(jié)果,G則是最終得到的邊緣幅值,θ值則是邊緣方向。當(dāng)然G的計(jì)算有時(shí)簡(jiǎn)化為

??

或者

?

求幅值時(shí)是有多種選擇的,一般根據(jù)具體應(yīng)用選擇用水平還是豎直或是兩個(gè)方向同時(shí)檢測(cè)。

? ? ? ? 另外,需要說(shuō)明的是,Sobel算子還有一種變種,是各向同性Sobel算子,其模板為



圖 5 各向同性Sobel算子

Sobel各向同性算子的權(quán)值比普通Sobel算子的權(quán)值更準(zhǔn)確。為什么?模板的權(quán)值是離中心位置越遠(yuǎn)則權(quán)值(看絕對(duì)值)影響越小,如上圖,把模板看成是9個(gè)小正方形,小正方形邊長(zhǎng)為1,則虛線(xiàn)三角形的斜邊長(zhǎng)為,下直角邊長(zhǎng)為1,則如果(0,0)位置權(quán)值絕對(duì)值大小為1,則按照距離關(guān)系,位置(1,0)處的權(quán)值絕對(duì)值大小應(yīng)該為才是準(zhǔn)確的。

? ? ? ?二階微分算子:Laplacian、Log/Marr

? ? ? ? 拉普拉斯算子來(lái)自拉普拉斯變換,而Log算子又稱(chēng)Marr算子,由David Courtnay Marr和Ellen Hildreth(1980)共同提出,計(jì)算神經(jīng)學(xué)創(chuàng)始人Marr在1980年正式發(fā)表論文時(shí),因換白血病早逝,后面設(shè)立Marr獎(jiǎng)以此紀(jì)念其貢獻(xiàn),現(xiàn)在每?jī)赡甑腎CCV(與ECCV,CVPR并稱(chēng)計(jì)算機(jī)視覺(jué)三大頂級(jí)會(huì)議)會(huì)評(píng)出一個(gè)Marr獎(jiǎng)。這兩種算子模板如下:


Laplacian算子(兩種模板)


Log算子

圖 6 二階微分算子


拉普拉斯算子數(shù)學(xué)公式是

寫(xiě)成差分形式為


? ? ? ? Log邊緣檢測(cè)則是先進(jìn)行高斯濾波再進(jìn)行拉普拉斯算子檢測(cè),然后找過(guò)零點(diǎn)來(lái)確定邊緣位置,很多時(shí)候我們只是知道Log 5*5模板如上圖所示,但是具體是怎么得到的?下面進(jìn)行推導(dǎo)。

二維高斯公式是


按拉普拉斯算子公式求x,y方向的二階偏導(dǎo)后為


這里x,y不能看成模板位置,應(yīng)看成是模板其他位置到中心位置的距離。那么寫(xiě)成


這里x0,y0就是模板中心位置,x,y是模板其他位置,對(duì)于5*5模板,則x0=2,y0 = 2,那對(duì)于模板中(0,0)位置的權(quán)值,即把x= 0,y= 0,x0= 2,y0 = 2帶入上式,另= 1,得到約等于0.0175,這樣得到


通過(guò)取整變符號(hào),且模板總和為0,得到圖6所示的模板。

? ? ? ? 另外,這里模板大小是如何取的?通常高斯分布中,在(-3,3)的范圍內(nèi)就覆蓋了絕大部分區(qū)域,所以模板大小一般取dim = 1 + 6(在SIFT特征中,其中的高斯模糊也是這樣取),dim如果為小數(shù),則取不小于dim的最小整數(shù),當(dāng)然實(shí)際使用時(shí)沒(méi)有這么嚴(yán)格,如上面我們?nèi)?#61;1時(shí),模板大小取5*5。那同一個(gè)尺寸的模板中的權(quán)值調(diào)整就是的變化得到的,變化到一定程度,模板尺寸大小改變(這個(gè)是個(gè)人理解,歡迎拍磚)。


? ? ? ?非微分邊緣檢測(cè)算子:Canny

? ? ? ?Canny邊緣檢測(cè)大家應(yīng)該很熟悉,這里列出步驟,并給出一個(gè)詳細(xì)介紹的鏈接Canny算子。

? ? 1. ? ? ?彩色圖像轉(zhuǎn)換為灰度圖像
? ? 2. ? ? ?對(duì)圖像進(jìn)行高斯模糊
? ? 3. ? ? ?計(jì)算圖像梯度,根據(jù)梯度計(jì)算圖像邊緣幅值與角度(這里其實(shí)用到了微分邊緣檢測(cè)算子來(lái)計(jì)算梯度幅值方向)
? ? 4. ? ? ?非最大信號(hào)壓制處理(邊緣細(xì)化)
? ? 5. ? ? ?雙閾值邊緣連接處理
? ? 6. ? ? ?二值化圖像輸出結(jié)果

? ?方向算子Kirsch(8個(gè)3*3模板),Nevitia (12個(gè)5*5模板)

? ? ? ? 這兩個(gè)算子是利用多個(gè)方向的子模板進(jìn)行分別計(jì)算,最后取幅值最大的那個(gè)為最終邊緣幅值,方向即最大幅值對(duì)應(yīng)的那個(gè)方向


五、各邊緣檢測(cè)算子對(duì)比




opencv直接調(diào)用的Roberts和Prewitt邊緣檢測(cè)





自己寫(xiě)的Sobel算子,分別進(jìn)行豎直和水平邊緣檢測(cè),最后取豎直和水平邊緣最大幅值



opencv直接調(diào)用的Laplacian和Canny邊緣檢測(cè)




Log 5*5模板,可以看出Log檢測(cè)出的邊緣很多并不是真正的邊緣位置,下圖沒(méi)有經(jīng)過(guò)過(guò)零點(diǎn)排除一些邊緣點(diǎn),噪聲被充分檢測(cè)出來(lái)。



當(dāng)然,有很多關(guān)于以上邊緣檢測(cè)算子的理論解釋及特性等可以參考以下幾篇博文:

1、http://blog.csdn.net/xiaojiegege123456/article/details/7714863

2、http://blog.csdn.net/yanmy2012/article/details/8110316

3、http://blog.csdn.net/langb2014/article/details/45667921

參考資料:

1、張麗.《經(jīng)典邊緣檢測(cè)算子比較》.南京信息工程大學(xué).

2、百度百科“Sobel算子”

3、http://blog.csdn.net/a361251388leaning/article/details/50288479

4、http://blog.csdn.net/zouxy09/article/details/8775488

總結(jié)

以上是生活随笔為你收集整理的常见边界提取算子的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。