官术网_书友最值得收藏!

2.7 直線段檢測

一般直線段檢測首先采用Canny邊緣檢測算子來獲得邊緣圖,然后應(yīng)用Hough變換可以用來檢測所有直線,這些線段可以通過邊緣像素數(shù)目、長度和隔離情況來分成線段。但是其效率較低,并且容易受紋理和噪聲的影響,具有以下兩個缺陷:第一,這樣的處理忽略了邊緣點的方向性,前面圓形Hough變換中就利用曲率信息來提高效率;第二,閾值的選取非常困難。

因此,在2008年,Rafael Grompone von Gioi等人提出了一種線性時間的直線段檢測算法,稱為LSD(Linear-Time Segment Detector)。其基本原理是利用圖像的梯度信息,若存在直線,則直線附近像素的梯度方向應(yīng)該類似,進而對梯度圖像采用區(qū)域增長算法獲得直線段區(qū)域,并且可以檢測直線段的寬度和長度等信息。

首先計算圖像梯度方向值,然后根據(jù)梯度方向值計算像素值的方向場(Level-Line,與梯度方向場垂直,實際上表示這個方向上像素值沒有太大變化,相當于邊緣方向),通過迭代的方法將區(qū)域擴大,每次迭代過程中將區(qū)域內(nèi)的點的像素值的方向進行平均,然后對其周圍位置的方向進行比較,將限定閾值內(nèi)的點增加到該區(qū)域中,其過程如圖2.33所示。這樣將圖像劃分成線支撐區(qū)域,每個區(qū)域中的聯(lián)通像素具有類似的梯度角度。然后,按照直線段的特征來擬合每個線支撐區(qū)域,直線圖特征可用圖2.34表示。

img

圖2.33 LSD直線段檢測對齊點的增長過程

img

圖2.34 采用矩形區(qū)域來刻畫直線段

在LSD中,以梯度幅度作為像素質(zhì)量,計算矩形區(qū)域的中心,第一個主軸作為矩形的長,長度和寬度覆蓋直線的支撐區(qū)域。圖2.35顯示的是一個用矩形區(qū)域模擬直線段的實際例子。圖2.35的左圖為實際圖像,中間圖為支撐區(qū)域,右圖為近似結(jié)果。

img

圖2.35 用矩形區(qū)域模擬直線段

最后一步,驗證滿足上述要求的線是否為直線段。通過在輸入圖像梯度圖的基礎(chǔ)上,保持處于水平線方向場中,如圖2.36所示。統(tǒng)計與擬合直線段矩形方向角度的誤差在img內(nèi)的點數(shù)k,圖中k=4,并對矩形的長度l進行統(tǒng)計,若數(shù)目k和長度l都大于給定的閾值,則說明這樣的矩形區(qū)域確實是直線段;否則剔除。

img

圖2.36 直線段檢測示例

最終的直線段檢測算法可以表示為如圖2.37所示。該算法在計算機視覺領(lǐng)域中有著廣泛的應(yīng)用,例如,可以生成類似素描的圖像,從而進行草圖檢索等。此外,也有其余基于改進的標準Hough變換的直線段檢測方法,如D.Shi等提出的基于多層分數(shù)傅里葉變換的高級Hough變換。

img

圖2.37 LSD直線段檢測算法

主站蜘蛛池模板: 固原市| 台江县| 龙泉市| 满城县| 呼和浩特市| 黔西县| 前郭尔| 正蓝旗| 喀喇沁旗| 阿合奇县| 昭通市| 曲靖市| 南溪县| 乡城县| 金坛市| 兴安盟| 古蔺县| 翼城县| 澄江县| 宕昌县| 梓潼县| 玛纳斯县| 鄄城县| 玛纳斯县| 包头市| 靖江市| 湟中县| 华池县| 句容市| 四会市| 大埔县| 惠水县| 马边| 沛县| 伊宁市| 松原市| 通城县| 孝感市| 富平县| 蒲城县| 松滋市|