chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于OpenCV經(jīng)典霍夫變換的一些內(nèi)容

新機(jī)器視覺 ? 來(lái)源:古月居 ? 作者:Eragonl ? 2021-07-06 10:43 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文主要講述的是霍夫變換的一些內(nèi)容,并加入一些在生活中的應(yīng)用,希望能對(duì)讀者對(duì)于霍夫變換的內(nèi)容有所了解。

首先我先說(shuō)的是,霍夫變換是一個(gè)特征提取技術(shù)。其可用于隔離圖像中特定形狀的特征的技術(shù),應(yīng)用在圖像分析、計(jì)算機(jī)視覺和數(shù)字圖像處理領(lǐng)域。目的是通過(guò)投票程序在特定類型的形狀內(nèi)找到對(duì)象的不完美實(shí)例。

這個(gè)投票程序是在一個(gè)參數(shù)空間中進(jìn)行的,在這個(gè)參數(shù)空間中,候選對(duì)象被當(dāng)作所謂的累加器空間中的局部最大值來(lái)獲得,所述累加器空間由用于計(jì)算霍夫變換的算法明確地構(gòu)建。此處我們主要介紹的是比較基本的霍夫變換在直線中的應(yīng)用,例如在圖像中檢測(cè)直線(線段),Hough變換的主要優(yōu)點(diǎn)是對(duì)于噪聲有良好的魯棒性。

基礎(chǔ)原理介紹

正如我們上面所介紹的那樣,霍夫變換最簡(jiǎn)單的是檢測(cè)直線。我們知道,直線的方程表示可以由斜率k和截距b表示(這種表示方法,稱為斜截式,也就是高中的時(shí)候?qū)W習(xí)到的一種常用形式),如下所示:

y=kx+b

如果我們用參數(shù)空間表示則為(b,k),即,我們可以用斜率和截距就能表示一條直線。但這種形式會(huì)產(chǎn)生一個(gè)問(wèn)題,那就是當(dāng)我們的直線斜率k為無(wú)限大的時(shí)候(即垂線),這會(huì)使得該直線無(wú)法使用斜截式來(lái)進(jìn)行表示,此處我們需要使用到另一種直線的表現(xiàn)形式:黑塞法線式(或者簡(jiǎn)稱為法線式):

r=xcosθ+ysinθ

其中r是原點(diǎn)到直線上最近點(diǎn)的距離(其他人可能把這記錄為ρ,下面也可以把r看成參數(shù)ρ,兩者含義相同),θ是x軸與連接原點(diǎn)和最近點(diǎn)直線之間的夾角。

從而我們可以將圖像的每一條直線與一對(duì)參數(shù)(r,θ)相關(guān)聯(lián)。由參數(shù)(r,θ)構(gòu)成的平面有時(shí)被稱為霍夫空間,用于表示二維直線所構(gòu)成的集合。

我們經(jīng)過(guò)Hough變換后,我們圓來(lái)笛卡爾坐標(biāo)系中的一個(gè)點(diǎn)可以映射到Hough空間中去。

經(jīng)過(guò)原笛卡爾坐標(biāo)系中的定點(diǎn)(3,4),通過(guò)該點(diǎn)的所有可能直線的(r,θ)的關(guān)系。顯示了在極坐標(biāo)對(duì)極徑極角平面繪出所有通過(guò)該定點(diǎn)的直線, 將得到一條正弦曲線。正弦曲線的形狀取決于,點(diǎn)到所定義原點(diǎn)的距離r。通常,r越大,正弦曲線的振幅越大,反之則會(huì)越小。

所以我們可以得到一個(gè)結(jié)論,給定平面中的單個(gè)點(diǎn),那么通過(guò)該點(diǎn)的所有直線的集合對(duì)應(yīng)于(r,θ)平面中的正弦曲線,這對(duì)于該點(diǎn)是獨(dú)特的。一組兩個(gè)或更多點(diǎn)形成一條直線將產(chǎn)生在該線的(r,θ)處交叉的正弦曲線。因此,檢測(cè)共線點(diǎn)的問(wèn)題可以轉(zhuǎn)化為找曲線相交點(diǎn)的問(wèn)題。

例:

考慮下面三個(gè)點(diǎn),這里顯示為黑點(diǎn)。

(注:此處也展示了霍夫變換的幾個(gè)基本步驟:首先,對(duì)每個(gè)點(diǎn)均繪制不同角度的線條,這些線全部經(jīng)過(guò)各自的對(duì)應(yīng)點(diǎn)并顯示為實(shí)線。其次,對(duì)于每條實(shí)線,找到經(jīng)過(guò)原點(diǎn)的對(duì)應(yīng)垂線并顯示為虛線。然后找到虛線的長(zhǎng)度和角度。這些值顯示在圖表下方的表格中。這對(duì)被轉(zhuǎn)換的三個(gè)點(diǎn)中的每一個(gè)都重復(fù)該過(guò)程。然后將結(jié)果繪制成圖,有時(shí)稱為霍夫空間圖)

曲線相交的點(diǎn)給出的距離和角度表示各個(gè)測(cè)試點(diǎn)相交的線。

分析上下文,邊緣段的點(diǎn)(一個(gè)或多個(gè))的坐標(biāo)(xi,yi)在圖像中是已知的,并且因此作為參數(shù)線等式中的常量,而r與θ是未知變量是我們要尋找的。如果我們繪制由(r,θ)每個(gè)定義的可能值(xi,yi)。

笛卡爾圖像空間中的點(diǎn)映射到霍夫參數(shù)空間中的曲線(正弦曲線)。這個(gè)點(diǎn)到曲線的變換是直線的霍夫變換。當(dāng)在霍夫參數(shù)空間中查看時(shí),在笛卡爾圖像空間中共線的點(diǎn)變得很明顯,因?yàn)樗鼈儺a(chǎn)生在相同(r,θ)點(diǎn)相交的曲線。

霍夫變換提取直線

我們通過(guò)將霍夫參數(shù)空間量化為有限間隔或累加器單元來(lái)實(shí)現(xiàn)變換。隨著算法的運(yùn)行,每個(gè)算法都把(xi,yi)轉(zhuǎn)換為一個(gè)離散化的 (r,θ)曲線,并且沿著這條曲線的累加器單元被遞增。累加器陣列中產(chǎn)生的峰值表示圖像中存在相應(yīng)的直線的相應(yīng)證明。

此時(shí)需要注意的是,現(xiàn)在我們考慮的是直線的霍夫變換。累加器陣列的維度是二維的(也就是r和θ)。

那么對(duì)于圖像來(lái)說(shuō),(x,y)處的每個(gè)像素及其鄰域,霍夫變換算法被用于確定該像素是否有足夠的直線證據(jù)。如果是,它將計(jì)算該線的參數(shù) (r,θ),然后查找參數(shù)落入的累加器箱,并增加該箱的值(投票值)。通過(guò)查找具有最高值的箱,通常通過(guò)查找累加器空間中的局部最大值,可以提取最可能的線,并且讀出它們的(近似的)幾何定義。

找到這些峰值的最簡(jiǎn)單方法是通過(guò)應(yīng)用某種形式的閾值,但其他技術(shù)可能在不同情況下產(chǎn)生更好的結(jié)果。由于返回的行不包含任何長(zhǎng)度信息,因此通常有必要在下一步中查找圖像的哪些部分與哪些行匹配。此外,由于邊緣檢測(cè)步驟中存在缺陷誤差,通常會(huì)在累加器空間中出現(xiàn)錯(cuò)誤,這可能使得找到合適的峰值以及適當(dāng)?shù)木€條變得非常重要。

線性霍夫變換的最終結(jié)果是類似于累加器的二維陣列(矩陣),該矩陣的一個(gè)維度是量化角度θ,另一個(gè)維度是量化距離r。矩陣的每個(gè)元素的值等于位于由量化參數(shù) (r,θ)表示的線上的點(diǎn)或像素的總和。

所以具有最高值的元素表示輸入圖像中代表最多的直線。我們也可以把累計(jì)器單元的結(jié)果認(rèn)為是投票值。換句話說(shuō),將每個(gè)交點(diǎn)看成一次投票,也就是說(shuō)A(r,θ)=A(r,θ)+1,所有點(diǎn)都如此進(jìn)行計(jì)算后,可以設(shè)置一個(gè)閾值,投票大于這個(gè)閾值的可以認(rèn)為是找到的直線。

霍夫變換提取圓

而當(dāng)我們需要去進(jìn)行圓檢測(cè)的時(shí)候,我們累加器是三維累加器,在圓檢測(cè)的情況下,我們可以知道的是其對(duì)應(yīng)的參數(shù)方程為:

(x?a)2+(y?b)2=r2

其中a和b是圓心的坐標(biāo)并且是r半徑。在這種情況下,算法的計(jì)算復(fù)雜度開始增加,因?yàn)槲覀儸F(xiàn)在在參數(shù)空間和三維累加器中有三個(gè)坐標(biāo)。(通常,累加器陣列的計(jì)算和大小隨著參數(shù)數(shù)量的增加而多項(xiàng)式增加,因此,基本霍夫技術(shù)僅適用于簡(jiǎn)單曲線。)

它的算法步驟如下:

1.首先創(chuàng)建累加器空間,由每個(gè)像素單元格構(gòu)成。最初每個(gè)單元格都設(shè)置為0。

2.然后對(duì)于每個(gè)圖像中的邊緣點(diǎn)(i,j),按照?qǐng)A方程(i?a)2+(j?b)2=r2將那些可能是一個(gè)圓中心的單元格值進(jìn)行累加。這些單元格在等式中由字母a表示。

3.然后在前面的步驟中由每個(gè)可能找到的值a,區(qū)找到滿足等式的所有可能值b。

4.搜索累加器空間中的局部最大值。這些單元格表示算法檢測(cè)到的圓圈。

如果我們不知道事先定位的圓的半徑,可以使用三維累加器空間來(lái)搜索具有任意半徑的圓。當(dāng)然,這在計(jì)算上更加昂貴。

該方法還可以檢測(cè)部分位于累加器空間外部的圓,只要該圓的區(qū)域內(nèi)仍有足夠的圓。

總結(jié)

霍夫變換在很多地方都有著應(yīng)用,如果是在OpenCV(Python)下想要使用霍夫變換,只需要使用函數(shù)cv2.HoughLinesP函數(shù),需要注意的是該函數(shù)并不是標(biāo)準(zhǔn)的霍夫變換,其為:概率霍夫變換,它只分析點(diǎn)的子集并估計(jì)這些點(diǎn)都屬于一條直線的概率,這是標(biāo)準(zhǔn)霍夫變換的優(yōu)化版本。該函數(shù)計(jì)算代價(jià)少,執(zhí)行更快,但準(zhǔn)確度有一定程度的下降。

cv2.HoughLinesP函數(shù)的語(yǔ)法如下:

cv2.HoughLinesP(image,rho,theta,threshold,minLineLength,maxLineGap)

其參數(shù)分別解釋如下:

·image:要處理的二值圖像;·rho:線段的幾何表示,表示取距離的間隔,一般取1;·theta:線段的幾何表示,表示取角度的間隔,一般取np.pi/180;·threshold:閾值,低于該閾值的會(huì)被忽略;·minLineLength:最小直線長(zhǎng)度,小于該長(zhǎng)度會(huì)被忽略;·maxLineGap:最大線段間隙,大于此間隙才被認(rèn)為是兩條直線。

霍夫變換在自動(dòng)駕駛中也有所應(yīng)用,可以如下面一個(gè)簡(jiǎn)單例子所示,其實(shí)現(xiàn)的是對(duì)我們畫面中的道路直線進(jìn)行的檢測(cè):

import osimport reimport cv2import numpy as np

# 初始化一個(gè)掩膜def mask_create(): img = cv2.imread(‘0.png’) zero = np.zeros_like(img[:, :, 0]) poly = np.array([[50, 270], [220, 160], [345, 160], [480, 270]]) zero_fixed = cv2.fillConvexPoly(zero, poly, (255, 255, 255)) return zero_fixed

# 掩膜計(jì)算,傳入的圖像需要是BGR圖def mask_calc(frame, mask): img = cv2.bitwise_and(frame[:, :, 0], frame[:, :, 0], mask=mask) return img

# 圖像閾值操作,傳入的圖片需要是灰度圖def threshold(low, high, img): ret, thresh = cv2.threshold(img, low, high, cv2.THRESH_BINARY) return thresh

# 對(duì)圖像進(jìn)行霍夫變換,輸入的圖像需要是二值圖,距離r為1,旋轉(zhuǎn)角為1度,投票閾值為30,最遠(yuǎn)距離為200像素# 并在原圖上進(jìn)行繪制圖像def hough(thresh, img): lines = cv2.HoughLinesP(thresh, 1, np.pi/180, 30, maxLineGap=200) try: for line in lines: x1, y1, x2, y2 = line[0] img = cv2.line(img, (x1, y1), (x2, y2), (255, 255, 255), 3) except: return img else: return img# 主函數(shù)def mainn(): # 讀取數(shù)據(jù) col_frames = os.listdir(‘。。/frames/’) # 排序 col_frames.sort(key=lambda f: int(re.sub(‘D’, ‘’, f))) # 讀取畫面每一幀 for i in col_frames: img = cv2.imread(i) # 構(gòu)建一個(gè)掩膜 mask = mask_create() # 對(duì)原圖像進(jìn)行掩膜計(jì)算 masked_frame = mask_calc(img, mask) thresh = threshold(135, 255, masked_frame) img = hough(thresh, img) cv2.imshow(‘img’, img) if cv2.waitKey(40) == ord(‘q’): break cv2.destroyAllWindows()

mainn()

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4408

    瀏覽量

    66954
  • OpenCV
    +關(guān)注

    關(guān)注

    33

    文章

    651

    瀏覽量

    44470
  • python
    +關(guān)注

    關(guān)注

    57

    文章

    4860

    瀏覽量

    89662

原文標(biāo)題:[OpenCV]經(jīng)典霍夫變換原理

文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    沒(méi)有專利的opencv-python 版本

    Canny 邊緣檢測(cè)、Harris 角點(diǎn)檢測(cè)、ORB/AKAZE 特征提?。ㄩ_源無(wú)專利) 目標(biāo)識(shí)別 輪廓檢測(cè)(findContours)、模板匹配(matchTemplate)、變換(直線/圓檢測(cè)
    發(fā)表于 12-13 12:37

    對(duì)浮點(diǎn)指令擴(kuò)展中一些問(wèn)題的解決與分享

    出現(xiàn)無(wú)法寫的情況。 結(jié)論 以上就是我們組在擴(kuò)展浮點(diǎn)指令中出現(xiàn)的一些問(wèn)題,這些問(wèn)題總體上歸結(jié)于對(duì)蜂鳥的代碼沒(méi)有整體性的把握,對(duì)內(nèi)容的掌握程度還不夠。在后續(xù)的工作中應(yīng)注意理清功能的整體架構(gòu)而對(duì)所有的相關(guān)部分進(jìn)行修改。
    發(fā)表于 10-24 11:47

    蜂鳥E203的浮點(diǎn)指令集F的一些實(shí)現(xiàn)細(xì)節(jié)

    周期。 總結(jié) 本文介紹的內(nèi)容是為了完成基礎(chǔ)功能:對(duì)蜂鳥E203 RISC-V內(nèi)核的微架構(gòu)實(shí)現(xiàn)進(jìn)行定優(yōu)化,在添加F拓展的過(guò)程中的一些記錄。
    發(fā)表于 10-24 08:57

    【開發(fā)實(shí)例】基于GM-3568JHF開發(fā)板安裝OpenCV并使用視頻目標(biāo)跟蹤 ( CamShift)

    在計(jì)算機(jī)視覺領(lǐng)域,視頻目標(biāo)跟蹤是個(gè)非常重要的任務(wù)。視頻目標(biāo)跟蹤廣泛應(yīng)用于監(jiān)控、自動(dòng)駕駛、人機(jī)交互等多個(gè)領(lǐng)域。OpenCV提供了多種目標(biāo)跟蹤算法,其中MeanShift和CamShift是兩種經(jīng)典
    的頭像 發(fā)表于 09-02 08:04 ?490次閱讀
    【開發(fā)實(shí)例】基于GM-3568JHF開發(fā)板安裝<b class='flag-5'>OpenCV</b>并使用視頻目標(biāo)跟蹤 ( CamShift)

    零成本鋼鐵俠手套!樹莓派+OpenCV 秒變手勢(shì)遙控器!

    大家好,這是個(gè)樹莓派和OpenCV的連載專題。使用樹莓派與OpenCV實(shí)現(xiàn)姿態(tài)估計(jì)和面部特征點(diǎn)追蹤使用樹莓派與OpenCV實(shí)現(xiàn)面部和運(yùn)動(dòng)追蹤的云臺(tái)系統(tǒng)使用樹莓派和
    的頭像 發(fā)表于 08-16 16:16 ?920次閱讀
    零成本鋼鐵俠手套!樹莓派+<b class='flag-5'>OpenCV</b> 秒變手勢(shì)遙控器!

    如何使用樹莓派與OpenCV實(shí)現(xiàn)面部和運(yùn)動(dòng)追蹤的云臺(tái)系統(tǒng)?

    大家好,這是個(gè)樹莓派和OpenCV的連載專題。使用樹莓派與OpenCV實(shí)現(xiàn)姿態(tài)估計(jì)和面部特征點(diǎn)追蹤使用樹莓派與OpenCV實(shí)現(xiàn)面部和運(yùn)動(dòng)追蹤的云臺(tái)系統(tǒng)使用樹莓派和
    的頭像 發(fā)表于 08-14 17:45 ?1004次閱讀
    如何使用樹莓派與<b class='flag-5'>OpenCV</b>實(shí)現(xiàn)面部和運(yùn)動(dòng)追蹤的云臺(tái)系統(tǒng)?

    如何板端編譯OpenCV并搭建應(yīng)用--基于瑞芯微米爾RK3576開發(fā)板

    運(yùn)行opencv代碼,來(lái)完成一些視覺內(nèi)容,充分發(fā)揮該板的性能。要先編譯opencv需要一些預(yù)先的準(zhǔn)備工作首先更新軟件包并安裝必要的依賴:su
    發(fā)表于 08-08 17:14

    基于LockAI視覺識(shí)別模塊:C++輪廓檢測(cè)

    。 讀取圖像幀:從攝像頭中獲取實(shí)時(shí)視頻幀。 預(yù)處理:將圖像轉(zhuǎn)換為灰度圖、降噪等操作。 特征檢測(cè):執(zhí)行邊緣檢測(cè)、變換等算法。 結(jié)果繪制:在原圖上繪制檢測(cè)到的特征。 顯示結(jié)果:將處理后的圖像輸出到屏幕
    發(fā)表于 05-22 10:05

    電路基礎(chǔ)知識(shí)最全匯總,看這篇就夠了?。ńㄗh收藏)

    。 5.電路的斷路與短路 電路的斷路處:I=0,U≠0 電路的短路處:U=0,I≠0 。 二、基爾霍夫定律 1.幾個(gè)概念 支路:是電路的個(gè)分支。結(jié)點(diǎn):三條(或三條以上)支路的聯(lián)接點(diǎn)稱為結(jié)點(diǎn)
    發(fā)表于 05-08 14:18

    Debian和Ubuntu哪個(gè)好一些?

    兼容性對(duì)比Debian和Ubuntu哪個(gè)好一些,并為您揭示如何通過(guò)RAKsmart服務(wù)器釋放Linux系統(tǒng)的最大潛能。
    的頭像 發(fā)表于 05-07 10:58 ?898次閱讀

    開關(guān)變換器環(huán)路設(shè)計(jì)指南從模擬到數(shù)字控制

    資料介紹 本書的特色是:作者對(duì)開關(guān)變換器的環(huán)路控制不進(jìn)行過(guò)于“學(xué)術(shù)化”的討論,只對(duì)一些必要的理論給出數(shù)學(xué)方程,并由淺入深,用通俗易懂的語(yǔ)言,比較全面地介紹了環(huán)路控制的基本概念、環(huán)路穩(wěn)定的條件、輸入
    發(fā)表于 04-17 13:55

    如何用OpenCV的相機(jī)捕捉視頻進(jìn)行人臉檢測(cè)--基于米爾NXP i.MX93開發(fā)板

    本文將介紹基于米爾電子MYD-LMX93開發(fā)板(米爾基于NXPi.MX93開發(fā)板)的基于OpenCV的人臉檢測(cè)方案測(cè)試。OpenCV提供了個(gè)非常簡(jiǎn)單的接口,用于相機(jī)捕捉個(gè)視頻(我用
    的頭像 發(fā)表于 04-15 11:51 ?669次閱讀
    如何用<b class='flag-5'>OpenCV</b>的相機(jī)捕捉視頻進(jìn)行人臉檢測(cè)--基于米爾NXP i.MX93開發(fā)板

    樹莓派在自動(dòng)化控制項(xiàng)目中的一些潛在應(yīng)用

    自動(dòng)化控制項(xiàng)目中的一些潛在應(yīng)用。之前,我們已經(jīng)為Arduino平臺(tái)探討了相同的話題。我們確定Arduino是個(gè)出色的教育工具,但由于一些限制,它無(wú)法在工業(yè)環(huán)境中完全
    的頭像 發(fā)表于 03-25 09:45 ?486次閱讀
    樹莓派在自動(dòng)化控制項(xiàng)目中的<b class='flag-5'>一些</b>潛在應(yīng)用

    LC濾波器設(shè)計(jì)與制作 [日 森榮二]

    本書主要介紹了濾波器的種類和特性,低通濾波器的經(jīng)典設(shè)計(jì),巴特沃思型低通濾波器的設(shè)計(jì),切比雪型低通濾波器的設(shè)計(jì),白塞爾型低通濾波器的設(shè)計(jì),高斯型低通濾波器的設(shè)計(jì),高通濾波器的設(shè)計(jì)方法, 帶通濾波器
    發(fā)表于 03-06 15:04

    AN29-關(guān)于DC-DC轉(zhuǎn)換器的一些想法

    電子發(fā)燒友網(wǎng)站提供《AN29-關(guān)于DC-DC轉(zhuǎn)換器的一些想法.pdf》資料免費(fèi)下載
    發(fā)表于 01-08 13:57 ?0次下載
    AN29-關(guān)于DC-DC轉(zhuǎn)換器的<b class='flag-5'>一些</b>想法