霍夫變換與直線檢測(cè)

背景

霍夫變換應(yīng)該是在邊緣檢測(cè)的基礎(chǔ)上的蝌以,如果要在如下這張圖中做直線的檢測(cè)地熄,opencv有很多邊緣檢測(cè)的算法得到一個(gè)8bit的圖,本文所述的霍夫變換的原理也是在這個(gè)邊緣檢測(cè)的結(jié)果上進(jìn)行的

邊緣檢測(cè)結(jié)果

算法基礎(chǔ)

極坐標(biāo)變換

笛卡爾坐標(biāo)系中的任意一點(diǎn)(x,y)都可以表示成ρ=x·cosθ+y·sinθ,的形式泰偿,而后者(ρ,θ)是極坐標(biāo)通危。而在這個(gè)極坐標(biāo)系下铸豁,一個(gè)(ρ, θ)是可以表示一條直線,如下圖菊碟。

(ρ, θ)表示的直線

這樣的直線的表示方式具有以下性質(zhì):

  1. 極坐標(biāo)中的一個(gè)點(diǎn)(ρ, θ)就表示笛卡爾坐標(biāo)系中的一條直線
  2. 笛卡爾坐標(biāo)系中過某一個(gè)點(diǎn)(x,y)的所有直線在極坐標(biāo)中變?yōu)橐粭l正弦曲線

證明:假設(shè)點(diǎn)(x,y)节芥,令sinα=x/sqrt(x2+y2),cosα=y/sqrt(x2+y2)逆害。
ρ=sqrt(x2+y2)·(sinα·cosθ+cosα·sinθ)=sqrt(x2+y2)·sin(α+θ)头镊。即表示一條振幅為sqrt(x2+y2),相位為α的正弦曲線魄幕。

笛卡爾坐標(biāo)系中過某一點(diǎn)的直線在極坐標(biāo)下表示為一條正弦曲線
  1. 笛卡爾坐標(biāo)系中過點(diǎn)A和B的直線(直線AB)相艇,在極坐標(biāo)系中表現(xiàn)為兩條正弦曲線的相交(即一條正弦曲線表示過A的所有直線,一條正弦曲線表示過B的所有直線纯陨,兩條正弦曲線的交點(diǎn)就表示直線AB)
這張圖表明五點(diǎn)共線坛芽,就是五條正弦曲線交點(diǎn)處表示的那條直線

算法

現(xiàn)假設(shè)我們已經(jīng)有上文中所述的邊緣檢測(cè)的結(jié)果留储,這個(gè)邊緣檢測(cè)的結(jié)果與原圖等大,邊緣檢測(cè)結(jié)果中的值都是0-255之間的咙轩,假設(shè)一個(gè)原圖為640*480获讳,其中邊緣點(diǎn)有n個(gè)(n<=640*480)。我們可以針對(duì)每一個(gè)邊緣點(diǎn)在極坐標(biāo)中畫一條正弦曲線(上述的性質(zhì)2)活喊,共n條正弦曲線丐膝。然后分別這些正弦曲線兩兩之間的交點(diǎn)坐標(biāo)是多少(只需要0~π之間的交點(diǎn)即可),時(shí)間復(fù)雜度是n(n-1)/2胧弛。然后尋找穿過的線最多的交點(diǎn)尤误,一個(gè)交點(diǎn)有越多的線,就表示有越多點(diǎn)共線结缚。
上述的算法是很顯然的损晤,但是效率是O(n2),太低了红竭。因此[2]作者做了如下的改進(jìn):

  1. 把ρ和θ離散化尤勋,例如ρ(-R<ρ<R)等分為2R份,步長(zhǎng)為1茵宪,θ步長(zhǎng)為1°最冰,把180度等分180分。
  2. 建立一個(gè)二維數(shù)組(accumulator array)稀火,大小為2R*180暖哨,數(shù)組中的每個(gè)元素代表經(jīng)過當(dāng)前(ρ,θ)的直線的點(diǎn)的數(shù)量。
這個(gè)例子θ步長(zhǎng)為20°凰狞,ρ步長(zhǎng)為2

步驟

  1. 對(duì)每個(gè)點(diǎn)篇裁,找出他們?cè)趫D中的坐標(biāo)(x,y)
  2. 根據(jù)公式ρ=x·cosθ+y·sinθ,把x,y和θ(以上圖為例θ=0°赡若、±20°达布、±40°、±60°……±160°)帶入算出ρ逾冬,在找出accumulator array中找到對(duì)應(yīng)的ρ并對(duì)數(shù)組中對(duì)應(yīng)計(jì)數(shù)+1
  3. 計(jì)算完所有點(diǎn)后黍聂,找出accumulator中最大的一些數(shù)(或設(shè)定一個(gè)閾值),他們的索引(ρ,θ)即為最后索引到的直線

OpenCV中的函數(shù)HoughLines

OpenCV中相關(guān)的函數(shù)有

cv2.HoughLinesP() # 與上述步驟略有不同
cv2.HoughLines() # 與上述步驟幾乎完全相同
cv2.HoughCircles() # 利用霍夫變換畫圓

其中身腻,HoughLins中的參數(shù)产还,rho和theta的含義就是上述表格中的ρ和θ的步長(zhǎng),threshold是閾值嘀趟,即accumulator中大于threshold的直線會(huì)被選出雕沉,代表至少有threshold個(gè)點(diǎn)經(jīng)過了這條直線。min_theta和max_theta代表的是θ的范圍去件。

可以看出坡椒,HoughLines這個(gè)函數(shù)的執(zhí)行效率取決于rho、theta尤溜、min_theta和max_theta倔叼,當(dāng)然,也取決于邊緣檢測(cè)結(jié)果中邊緣像素的數(shù)量n宫莱。

參考文獻(xiàn)

[1] P.V.C. Hough,Machine Analysis of Bubble Chamber Pictures, Proc. Int. Conf. High Energy Accelerators and Instrumentation, 1959.

[2] Duda, R. O. and P. E. Hart, "Use of the Hough Transformation to Detect Lines and Curves in Pictures,"Comm. ACM, Vol. 15, pp. 11–15 (January, 1972).

[3] https://blog.csdn.net/songzitea/article/details/17027849

[4] https://blog.csdn.net/shanchuan2012/article/details/74010561

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末丈攒,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子授霸,更是在濱河造成了極大的恐慌巡验,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碘耳,死亡現(xiàn)場(chǎng)離奇詭異显设,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)辛辨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門捕捂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人斗搞,你說我怎么就攤上這事指攒。” “怎么了僻焚?”我有些...
    開封第一講書人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵允悦,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我虑啤,道長(zhǎng)隙弛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任咐旧,我火速辦了婚禮驶鹉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘铣墨。我一直安慰自己室埋,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開白布伊约。 她就那樣靜靜地躺著姚淆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪屡律。 梳的紋絲不亂的頭發(fā)上腌逢,一...
    開封第一講書人閱讀 51,488評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音超埋,去河邊找鬼搏讶。 笑死佳鳖,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的媒惕。 我是一名探鬼主播系吩,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼妒蔚!你這毒婦竟也來了穿挨?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤肴盏,失蹤者是張志新(化名)和其女友劉穎科盛,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體菜皂,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡贞绵,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了幌墓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片但壮。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖常侣,靈堂內(nèi)的尸體忽然破棺而出蜡饵,到底是詐尸還是另有隱情,我是刑警寧澤胳施,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布溯祸,位于F島的核電站,受9級(jí)特大地震影響舞肆,放射性物質(zhì)發(fā)生泄漏焦辅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一椿胯、第九天 我趴在偏房一處隱蔽的房頂上張望筷登。 院中可真熱鬧,春花似錦哩盲、人聲如沸前方。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惠险。三九已至,卻和暖如春抒线,著一層夾襖步出監(jiān)牢的瞬間班巩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工嘶炭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留抱慌,地道東北人逊桦。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像遥缕,于是被迫代替她去往敵國(guó)和親卫袒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容