强奸久久久久久久|草草浮力在线影院|手机成人无码av|亚洲精品狼友视频|国产国模精品一区|久久成人中文字幕|超碰在线视屏免费|玖玖欧洲一区二区|欧美精品无码一区|日韩无遮一区二区

首頁(yè) > 廠商 > 問(wèn)答 > hough變換,MATLAB的hough變換

hough變換,MATLAB的hough變換

來(lái)源:整理 時(shí)間:2023-09-08 17:38:15 編輯:智能門(mén)戶 手機(jī)版

本文目錄一覽

1,MATLAB的hough變換

edge函數(shù)可以求canny邊緣 houghlines函數(shù)可以求直線信息

MATLAB的hough變換

2,霍夫變換直線檢測(cè)原理

霍夫變換(Hough Transform)于1962年由Paul Hough 首次提出,后于1972年由Richard Duda和Peter Hart推廣使用,是圖像處理領(lǐng)域內(nèi)從圖像中檢測(cè)幾何形狀的基本方法之一。經(jīng)典霍夫變換用來(lái)檢測(cè)圖像中的直線,后來(lái)霍夫變換經(jīng)過(guò)擴(kuò)展可以進(jìn)行任意形狀物體的識(shí)別,例如圓和橢圓?;舴蜃儞Q運(yùn)用兩個(gè)坐標(biāo)空間之間的變換,將在一個(gè)空間中具有相同形狀的曲線或直線映射到另一個(gè)坐標(biāo)空間的一個(gè)點(diǎn)上形成峰值,從而把檢測(cè)任意形狀的問(wèn)題轉(zhuǎn)化為統(tǒng)計(jì)峰值問(wèn)題。給定一幅圖像(一般為二值圖像)中的點(diǎn)集合,如何檢測(cè)直線?一種解決方法:任選一對(duì)點(diǎn),決定一條線,然后測(cè)試所有其他點(diǎn)是否接近這條線,從而得出接近這條特殊線的所有點(diǎn)的子集。該方法比較復(fù)雜。另外一種方法便是采用霍夫變換?;舴蜃儞Q是圖像處理必然接觸到的一個(gè)算法,它通過(guò)一種投票算法檢測(cè)具有特定形狀的物體,該過(guò)程在一個(gè)參數(shù)空間中通過(guò)計(jì)算累計(jì)結(jié)果的局部最大值得到一個(gè)符合該特定形狀的集合作為霍夫變換結(jié)果,該方法可以進(jìn)行圓,直線,橢圓等形狀的檢測(cè)。在車道線檢測(cè)中,當(dāng)初考慮的一個(gè)方案便是采用霍夫變換檢測(cè)直線進(jìn)行車道線提取。

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

3,hough變換能檢測(cè)無(wú)規(guī)則的曲線嗎

不行,只能檢測(cè)直線和特定形狀的曲線,就是說(shuō)曲線的公式必須是預(yù)先知道的,轉(zhuǎn)換曲線是也是先對(duì)曲線求導(dǎo)數(shù),轉(zhuǎn)換成直線形式。
hough 求助編輯百科名片國(guó)內(nèi)外對(duì)hough變換的研究及應(yīng)用動(dòng)態(tài):hough變換于1962年由paul hough提出,并在美國(guó)作為專利被發(fā)表。它所實(shí)現(xiàn)的是一種從圖像空間到參數(shù)空間的映射關(guān)系。由于具有一些明顯優(yōu)點(diǎn)和可貴性質(zhì)

hough變換能檢測(cè)無(wú)規(guī)則的曲線嗎

4,MATLAB數(shù)字圖像處理 Hough變換

Hough變換是1962年由Hough提出來(lái)的,用于檢測(cè)圖像中直線、圓、拋物線、橢圓等形狀能夠用一定函數(shù)關(guān)系描述的曲線。 在這里我們重點(diǎn)研究的是 利用Hough變換檢測(cè)圖中的直線。 對(duì)于上圖中的直線L,用常規(guī)方程表示 L: y=ax+b 那么用極坐標(biāo)怎么表示呢? 對(duì)于任意的R,都有 R×cos(β-θ)=ρ 展開(kāi)得 R×cosβcosθ+R×sinβsinθ=ρ 又x=R×cosβ y=R×sinβ(這個(gè)就不用解釋了吧 高中知識(shí)了 O(∩_∩)O) x×cosθ+y×sinθ=ρ 從這個(gè)極坐標(biāo)表示的式子來(lái)看,是不是在一條直線上面所有的(x,y)都對(duì)應(yīng)一個(gè)ρ、θ呢? 所以這個(gè)就是hough變換的: 點(diǎn)-線對(duì)偶性 通俗的講:在直角坐標(biāo)系中的一條直線,在極坐標(biāo)下,其實(shí)就是一個(gè)點(diǎn),坐標(biāo)為(ρ,θ) 由a、b兩圖:位于一條直線上的兩點(diǎn),在極坐標(biāo)會(huì)產(chǎn)生一個(gè)交點(diǎn),說(shuō)明他們共線。 可是在直角坐標(biāo)系中明明只有兩個(gè)點(diǎn),b圖中反而是兩條曲線? 對(duì)于任意一點(diǎn),過(guò)該點(diǎn)有無(wú)數(shù)條直線,每條直線都有一個(gè)(ρ,θ)值,那么無(wú)數(shù)條直線,就會(huì)組成連續(xù)的(ρ,θ)值,就會(huì)構(gòu)成極坐標(biāo)系下的一條連續(xù)曲線。 這樣,我們對(duì)一副圖像所有點(diǎn)進(jìn)行同樣的操作,得到一副(ρ,θ)圖像。 如果我們需要找出圖像中最長(zhǎng)的那條直線,那么肯定組成該直線的點(diǎn)最多,那么在極坐標(biāo)系中肯定有個(gè)(ρ,θ)點(diǎn)是有最多條直線相交得到的。 如下圖,利用函數(shù)就可以找到 相交曲線數(shù) 最多的一個(gè)點(diǎn)。 那么找到該點(diǎn)有什么用呢? 找到該點(diǎn),就可以得到(ρ,θ)值、直線起始、終止點(diǎn)坐標(biāo)。(MATLAB提供函數(shù)支持) 這里來(lái)說(shuō)說(shuō),計(jì)算機(jī)是怎么由(ρ,θ)坐標(biāo)圖找到相交曲線最多的那個(gè)點(diǎn)。 首先,提供一個(gè)坐標(biāo)軸 這里就說(shuō)簡(jiǎn)單些:在基礎(chǔ)二我們可以得出 一個(gè)點(diǎn)在極坐標(biāo)系下的一條曲線 然后我們 對(duì)該曲線進(jìn)行細(xì)分,分成很多個(gè)點(diǎn) (得到坐標(biāo)) 在第一步提供的坐標(biāo)軸里面,凡是前面分出來(lái)的點(diǎn)坐標(biāo),該位置的值就累加1 重復(fù)所有點(diǎn),就可以得出一副累加圖 如果需要找到曲線相交最多那個(gè)點(diǎn),就只需要在該坐標(biāo)軸中找到值最大的點(diǎn)坐標(biāo)即可。 結(jié)果

5,Hough變換檢測(cè)直線時(shí)能檢測(cè)什么樣的圖像

http://www.baidu.com/s?ie=gb2312&bs=Hough%B1%E4%BB%BB%BC%EC%B2%E2%D6%B1%CF%DF%CA%B1%C4%DC%BC%EC%B2%E2%CA%B2%C3%B4%D1%F9%B5%C4%CD%BC%CF%F1%3F&sr=&z=&cl=3&f=8&tn=baidu&wd=Hough%B1%E4%BB%BB%BC%EC%B2%E2%D6%B1%CF%DF%CA%B1%C4%DC%BC%EC%B2%E2%CA%B2%C3%B4%D1%F9%B5%C4%CD%BC%CF%F1%3F&ct=0 進(jìn)去就知道了

6,Hough變換

Hough變換是利用圖像全局特性有可能把邊緣象素連接起來(lái)組成區(qū)域封閉邊界的一種方法。在預(yù)先知道區(qū)域形狀的條件下,利用Hough變換可以方便地得到邊界曲線,把不連續(xù)的邊緣象素點(diǎn)連接起來(lái),還可以直接檢測(cè)某些已知形狀的目標(biāo),并有可能確定邊界到亞象元精度。其主要優(yōu)點(diǎn)是受噪聲和曲線間斷的影響小。為了便于理解Hough變換這種功能,先舉一個(gè)簡(jiǎn)單例子。設(shè)給定圖像中的n個(gè)點(diǎn),要從中確定連在同一直線上的點(diǎn)的子集。這可看作已檢測(cè)出的若干點(diǎn),去求出它們所在的直線。一種直接解決辦法是先確定所有由任意兩點(diǎn)決定的直線(約需n2次運(yùn)算以確定n(n-1)/2 條直線),再找出接近具體直線的點(diǎn)的集合(約需n2次運(yùn)算以比較n個(gè)點(diǎn)中的每一個(gè)與n(n-1)/2條直線中的每一條)。這么大的計(jì)算量實(shí)際上不易實(shí)現(xiàn)。如果用Hough變換:的方法就可用較少的計(jì)算量來(lái)解決這個(gè)問(wèn)題。這種變換的基本思想是點(diǎn)一線的對(duì)偶性,Duality在圖像空間XY中,所有過(guò)點(diǎn)(x,y)的直線都滿足方程:Y=px + q (5-15)式中P為斜率,q為截距,式(5-15)也可以寫(xiě)成:q=- px + Y (5-16)式(5-16)可以認(rèn)為是代表參數(shù)空間PQ中過(guò)點(diǎn)(p,q)的一條直線?,F(xiàn)在來(lái)看圖5-9a表示圖像空間,(b)表示參數(shù)空間。在圖像空間XY中,過(guò)點(diǎn)(xi,yi)的通用直線方程按式(5-15)可寫(xiě)為yi=pxi+q,也可以按式(5-16)寫(xiě)為q=-pxi+yi;它表示在參數(shù)空間PQ里的另一條直線。設(shè)這兩條直線在參數(shù)空間PQ里相交于點(diǎn)(p′,q′),這里點(diǎn)(p′,q′)對(duì)應(yīng)圖像空間XY中一條過(guò)點(diǎn)(xi,yi)和(xi,yi)的直線,因此在圖像空間XY中過(guò)點(diǎn)(xi,yi)和(xj,yj)的直線上的每個(gè)點(diǎn)都對(duì)應(yīng)在參數(shù)空間PQ里的一條直線,這條直線相交于點(diǎn)(p′,q′)。由此可知,在圖像空間中共線的點(diǎn)對(duì)應(yīng)在參數(shù)空間里相交的線。反過(guò)來(lái)在參數(shù)空間中相交于同一個(gè)點(diǎn)的所有直線在圖像空間里都有共線的點(diǎn)與之對(duì)應(yīng)。這就是點(diǎn)線對(duì)偶性。Hough變換就是根據(jù)這些關(guān)系把在圖像空間中的檢測(cè)問(wèn)題轉(zhuǎn)換到參數(shù)空間里,通過(guò)較簡(jiǎn)單的累加統(tǒng)計(jì)完成檢測(cè)任務(wù)。在具體計(jì)算時(shí)需要在參數(shù)空間PQ里建立一個(gè)二維累加數(shù)組。設(shè)這個(gè)累加數(shù)組為A(p,q),如圖5-10所示。其中[Pmin,Pmax]和[qmin,qmax]分別為預(yù)期的斜率和截距的取值范圍。開(kāi)始時(shí)置數(shù)組A為零,然后對(duì)每一個(gè)圖像空間中的給定點(diǎn),讓p取遍p軸上所有可能的值,并根據(jù)式(5-16)算出對(duì)應(yīng)的q,再根據(jù)p和q的值(設(shè)都已經(jīng)取整)對(duì)A累加:A(p,q)=A(p,q)+1,累加結(jié)束后,根據(jù)A(p,q)的值就可知道有多少點(diǎn)是共線的,即A(p,q)的值就是在(p,q)處共線點(diǎn)的個(gè)數(shù)。同時(shí)(p,q)值也給出了直線方程的參數(shù),于是我們得到了點(diǎn)所在的線。圖5-9 圖像空間和參數(shù)空間中點(diǎn)和線的對(duì)偶性圖5-10 參數(shù)空間里的累加數(shù)組示意圖假設(shè)我們把P軸分成K份,即P取K個(gè)值,那么對(duì)每一個(gè)點(diǎn)(xk,yk)由式(5-16)可得到q的K個(gè)值。因?yàn)閳D中有n個(gè)點(diǎn),所以這里就需要nK次運(yùn)算??梢?jiàn)運(yùn)算量是n的線性函數(shù)。如果K比n小,則總計(jì)算量必小于n2,這就是Hough變換的優(yōu)勢(shì)所在。Hough變換不僅可用來(lái)檢測(cè)直線和連接處在同一條直線上的點(diǎn),也可以用來(lái)檢測(cè)滿足解析式f(x,c)=0形式的各類曲線并把曲線上的點(diǎn)連接起來(lái)。這里x是一個(gè)坐標(biāo)矢量,在二維圖像中是一個(gè)二維矢量,c是一個(gè)系數(shù)矢量,它可以根據(jù)曲線的不同,從二維、三維到四維等,凡能寫(xiě)出方程的圖形,都可以利用Hough變換來(lái)檢測(cè)。自然界有許多要素有一定的形狀、分布與伸展方向,但可能受其他因素遮蔽而顯現(xiàn)得不清晰或斷斷續(xù)續(xù),例如,地質(zhì)體的線性構(gòu)造、環(huán)形構(gòu)造等,在地質(zhì)探礦、地質(zhì)穩(wěn)定性分析等方面都有重要意義,可是在遙感圖像上有時(shí)反映得不太清楚,如果借鑒Hough變換的基本思想來(lái)處理圖像,可能有助于構(gòu)造信息的提取。

7,什么是Hough變換

Hough變換是一種使用表決原理的參數(shù)估計(jì)技術(shù)。其原理是利用圖像空間和Hough參數(shù)空間的點(diǎn)-線對(duì)偶性,把圖像空間中的檢測(cè)問(wèn)題轉(zhuǎn)換到參數(shù)空間。通過(guò)在參數(shù)空間里進(jìn)行簡(jiǎn)單的累加統(tǒng)計(jì),然后在Hough參數(shù)空間尋找累加器峰值的方法檢測(cè)直線。Hough變換的實(shí)質(zhì)是將圖像空間內(nèi)具有一定關(guān)系的像元進(jìn)行聚類,尋找能把這些像元用某一解析形式聯(lián)系起來(lái)的參數(shù)空間累積對(duì)應(yīng)點(diǎn)。在參數(shù)空間不超過(guò)二維的情況下,這種變換有著理想的效果。
你你說(shuō)的是什么意思說(shuō)的
hough變換利用圖像空間和hough參數(shù)空間的點(diǎn)-線對(duì)偶性,把圖像空間中的檢測(cè)問(wèn)題轉(zhuǎn)換到參數(shù)空間。通過(guò)在參數(shù)空間里進(jìn)行簡(jiǎn)單的累加統(tǒng)計(jì),然后在hough參數(shù)空間尋找累加器峰值的方法檢測(cè)直線。例如,圖1(a)中的九條線段對(duì)應(yīng)于如圖1(b)所示的其hough參數(shù)空間的九個(gè)累加器峰值。圖1(b)中,hough參數(shù)空間的橫縱坐標(biāo)分別為直線極坐標(biāo)方程:ρ=x×cos(θ) + y×sin(θ) 的兩個(gè)參數(shù)ρ和θ。九個(gè)峰值的ρ和θ值唯一的確定其對(duì)應(yīng)線段所在直線的兩個(gè)參數(shù)。并且線段的長(zhǎng)度決定坐標(biāo)(ρ,θ)處的累加值的大小。

8,Python OpenCV 霍夫Hough Transform直線變換檢測(cè)原理圖像處理第 3

霍夫變換(Hough Transform)是圖像處理領(lǐng)域中,從圖像中識(shí)別幾何形狀的基本方法之一。主要識(shí)別具有某些相同特征的幾何形狀,例如直線,圓形,本篇博客的目標(biāo)就是從黑白圖像中識(shí)別出直線。 翻閱霍夫直線變換的原理時(shí)候,橡皮擦覺(jué)得原理部分需要先略過(guò),否則很容易在這個(gè)地方陷進(jìn)去,但是問(wèn)題來(lái)了,這個(gè)原理略過(guò)了,直接應(yīng)用函數(shù),里面有些參數(shù)竟然看不懂。例如極坐標(biāo),角度掃描范圍,這種函數(shù)就屬于繞不過(guò)去的知識(shí)點(diǎn)了,所以本文轉(zhuǎn)移方向,死磕原理,下面的博文將語(yǔ)無(wú)倫次的為你展示如何學(xué)習(xí)原理知識(shí)。 因?yàn)閿?shù)學(xué)知識(shí)的貧乏,所以在學(xué)習(xí)階段會(huì)涉及到很多基礎(chǔ)概念的學(xué)習(xí),一起來(lái)吧。 首先找到相對(duì)官方的資料,打開(kāi)該 地址 下面是一個(gè)數(shù)學(xué)小白對(duì)原理的學(xué)習(xí)經(jīng)驗(yàn)。 教材說(shuō):眾所周知,一條直線在圖像二維空間可由兩個(gè)變量表示。 抱歉,小白還真不知道……即使學(xué)習(xí)過(guò),這些年也早已經(jīng)還給老師了。 一開(kāi)始難道要學(xué)習(xí)笛卡爾坐標(biāo)系,不,你低估小白的能力了,我第一個(gè)查詢的是 θ 讀作 西塔 ,是一個(gè)希臘字母。 什么是笛卡爾坐標(biāo)系? 這個(gè)比較簡(jiǎn)單,直角坐標(biāo)系。 斜率和截距 斜率,亦稱“角系數(shù)”,表示一條直線相對(duì)于橫坐標(biāo)軸的傾斜程度。 一條直線與某平面直角坐標(biāo)系橫坐標(biāo)軸正半軸方向的夾角的正切值即該直線相對(duì)于該坐標(biāo)系的斜率。 如果直線與 x 軸互相垂直,直角的正切直無(wú)窮大,故此直線不存在斜率。 對(duì)于一次函數(shù) y=kx+b , k 就是該函數(shù)圖像的斜率。 在學(xué)習(xí)的時(shí)候,也學(xué)到如下內(nèi)容: 截距:對(duì) x 的截距就是 y=0 時(shí), x 的值,對(duì) y 的截距就是 x=0 時(shí), y 的值, 截距就是直線與坐標(biāo)軸的交點(diǎn)的橫(縱)坐標(biāo)。 x 截距為 a , y 截距 b ,截距式就是: x/a+y/b=1(a≠0且b≠0) 。 斜率:對(duì)于任意函數(shù)上任意一點(diǎn),其斜率等于其切線與 x 軸正方向所成的角,即 k=tanα 。 ax+by+c=0中,k=-a/b 。 什么是極坐標(biāo)系? 關(guān)于極坐標(biāo)系,打開(kāi) 百度百科 學(xué)習(xí)一下即可。 重點(diǎn)學(xué)到下面這個(gè)結(jié)論就行: 找資料的時(shí)候,發(fā)現(xiàn)一個(gè)解釋的比較清楚的 博客 ,后續(xù)可以繼續(xù)學(xué)習(xí)使用。 繼續(xù)閱讀資料,看到如下所示的圖,這個(gè)圖也出現(xiàn)在了很多解釋原理的博客里面,但是圖下面寫(xiě)了一句話 在這里直接蒙掉了,怎么就表示成極坐標(biāo)系了?上面這個(gè)公式依舊是笛卡爾坐標(biāo)系表示直線的方式呀,只是把 k 和 b 的值給替換掉了。 為何是這樣的,具體原因可以參照下圖。 <center>chou 圖</center> 繼續(xù)尋找關(guān)于霍夫變換的資料,找到一個(gè)新的概念 霍夫空間 。 在笛卡爾坐標(biāo)系中,一條直線可以用公式 表示,其中 k 和 b 是參數(shù),表示的是斜率和截距。 接下來(lái)將方程改寫(xiě)為 ,這時(shí)就建立了一個(gè)基于 k - b 的笛卡爾坐標(biāo)系。 此時(shí)這個(gè)新的方程在 k - b 坐標(biāo)系也有一個(gè)新的直線。 你可以在紙上畫(huà)出這兩個(gè)方程對(duì)應(yīng)的線和點(diǎn),如下圖所示即可。 <center>chou 圖</center> 新的 k - b 坐標(biāo)系就叫做霍夫空間,這時(shí)得到一個(gè)結(jié)論,圖像空間 x - y 中的點(diǎn) 對(duì)應(yīng)了 霍夫空間 k - b 中的一條直線 ,即圖像空間的點(diǎn)與霍夫空間的直線發(fā)生了對(duì)應(yīng)關(guān)系。 如果在圖像空間 x - y 中在增加一個(gè)點(diǎn) ,那相應(yīng)的該點(diǎn)在霍夫空間也會(huì)產(chǎn)生相同的點(diǎn)與線的對(duì)應(yīng)關(guān)系,并且 A 點(diǎn)與 B 點(diǎn)產(chǎn)生的直線會(huì)在霍夫空間相交于一個(gè)點(diǎn)。而這個(gè)點(diǎn)的坐標(biāo)值 就是直線 AB 的參數(shù)。 如果到這里你掌握了,這個(gè)性質(zhì)就為我們解決直線檢測(cè)提供了方法,只需要把圖像空間的直線對(duì)應(yīng)到霍夫空間的點(diǎn),然后統(tǒng)計(jì)交點(diǎn)就可以達(dá)到目的,例如圖像空間中有 3 條直線,那對(duì)應(yīng)到霍夫空間就會(huì)有 3 個(gè)峰值點(diǎn)。 遍歷圖像空間中的所有點(diǎn),將點(diǎn)轉(zhuǎn)換到霍夫空間,形成大量直線,然后統(tǒng)計(jì)出直線交會(huì)的點(diǎn),每個(gè)點(diǎn)的坐標(biāo)都是圖像空間直線方程參數(shù),這時(shí)就能得到圖像空間的直線了。 上述的內(nèi)容沒(méi)有問(wèn)題,但是存在一種情況是,當(dāng)直線趨近于垂直時(shí),斜率 k 會(huì)趨近于無(wú)窮大,這時(shí)就沒(méi)有辦法轉(zhuǎn)換了,解決辦法是使用法線來(lái)表示直線。 上文提及的斜截式如下: 通過(guò)第二個(gè)公式,可以得到下述公式: 此時(shí),我們可以帶入一些數(shù)值進(jìn)行轉(zhuǎn)換。 圖像空間有如下的幾個(gè)點(diǎn): 轉(zhuǎn)換后的函數(shù),都可以在霍夫空間 θ - ρ (橫坐標(biāo)是 θ ,縱坐標(biāo)是 ρ )進(jìn)行表示。 原理這時(shí)就比較清晰了: 除了一些數(shù)學(xué)知識(shí)以外,經(jīng)典的博客我們也有必要記錄一下,方便后面學(xué)習(xí)的時(shí)候,進(jìn)行復(fù)盤(pán)。 本部分用于記錄本文中提及的相關(guān)數(shù)學(xué)原理,后續(xù)還要逐步埋坑。 今天涉及了一點(diǎn)點(diǎn)數(shù)學(xué)知識(shí),能力限制,大家一起學(xué)習(xí),有錯(cuò)誤的地方,可以在評(píng)論區(qū)指出,不勝感激。 希望今天的 1 個(gè)小時(shí)(今天內(nèi)容有點(diǎn)多,不一定可以看完),你有所收獲,我們下篇博客見(jiàn)~ 相關(guān)閱讀 技術(shù)專欄 逗趣程序員

9,求hough變換問(wèn)題

這樣的代碼網(wǎng)上很多。這個(gè)是我copy來(lái)的 Input: Original image in the form of an array: Image1[xMax][yMax] Output: New image : Image2 [xMax][yMax] containing the detected straight lines. Intermediate data structure: Hough [tMax][rMax] to calculate the corresponding lines. Algorithm: /* Fill in the Hough array*/ for (x=0; x< xMax; x++)for (y=0 ; y< yMax ; y++)if ( Image1[x][y] > IThresh)for (t=0 ; t< tMax ; t++)r = (x-xMax/2)*cos(t) +(y-yMax/2)*sin(t) ; if (r >0) } /* Process Hough array to find strong maxima */ for (t = 0; t < tMax / 2; t++) for (r = 0; r < rMax; r++) if (Hough[t][r] > Hthresh) /* Check 5x5 neighborhood for max */ max = TRUE; for (dt = (t - 2); dt <= (t + 2); dt++) for (dr = (r - 2); dr <= (r + 2); dr++) if ((dr >= 0) && (dr < rMax) && (dt >= 0) && (dt < tMax) && (Hough[dt][dr] > Hough[t][r])) max = FALSE; break; } /* Process Hough array to create output image array */ if (max == TRUE) makeLine(r, t); } } void makeLine (r,t) for (x=0 ; x<xMax ; x++) /* calculate y = r/sin (t) ?x*cotg(t) and fill in the Image2 array */ } /********************************************************/
這樣的代碼網(wǎng)上很多。這個(gè)是我copy來(lái)的 Input: Original image in the form of an array: Image1[xMax][yMax] Output: New image : Image2 [xMax][yMax] containing the detected straight lines. Intermediate data structure: Hough [tMax][rMax] to calculate the corresponding lines. Algorithm: /* Fill in the Hough array*/ for (x=0; x< xMax; x++)for (y=0 ; y< yMax ; y++)if ( Image1[x][y] > IThresh)for (t=0 ; t< tMax ; t++)r = (x-xMax/2)*cos(t) +(y-yMax/2)*sin(t) ; if (r >0) } /* Process Hough array to find strong maxima */ for (t = 0; t < tMax / 2; t++) for (r = 0; r < rMax; r++) if (Hough[t][r] > Hthresh) /* Check 5x5 neighborhood for max */ max = TRUE; for (dt = (t - 2); dt <= (t + 2); dt++) for (dr = (r - 2); dr <= (r + 2); dr++) if ((dr >= 0) && (dr < rMax) && (dt >= 0) && (dt < tMax) && (Hough[dt][dr] > Hough[t][r])) max = FALSE; break; } /* Process Hough array to create output image array */ if (max == TRUE) makeLine(r, t); } } void makeLine (r,t) for (x=0 ; x/* calculate y = r/sin (t) ?x*cotg(t) and fill in the Image2 array */ } /********************************************************/

10,c 中關(guān)于角度計(jì)算的hough算法

/// /// 檢測(cè)直線/// /// hough變換后的曲線交點(diǎn)個(gè)數(shù),取值越大,找出的直線越少public Bitmap hough_line(Bitmap bmpobj, int cross_num) int x = bmpobj.Width; int y = bmpobj.Height; int rho_max = (int)Math.Floor(Math.Sqrt(x*x+y*y))+1; //由原圖數(shù)組坐標(biāo)算出ρ最大值,并取整數(shù)部分加1 //此值作為ρ,θ坐標(biāo)系ρ最大值 int[,] accarray = new int[rho_max,180]; //定義ρ,θ坐標(biāo)系的數(shù)組,初值為0。 //θ的最大值,180度 double[] Theta = new double[180]; //定義θ數(shù)組,確定θ取值范圍 double i = 0; for (int index = 0; index < 180; index++) Theta[index] = i; i += Math.PI/180; } double rho; int rho_int; for (int n = 0; n < x; n++) for (int m = 0; m < y; m++) Color pixel = bmpobj.GetPixel(n, m); if (pixel.R == 0) for (int k = 0; k < 180; k++) //將θ值代入hough變換方程,求ρ值 rho = (m * Math.Cos(Theta[k])) + (n * Math.Sin(Theta[k])); //將ρ值與ρ最大值的和的一半作為ρ的坐標(biāo)值(數(shù)組坐標(biāo)),這樣做是為了防止ρ值出現(xiàn)負(fù)數(shù) rho_int = (int)Math.Round(rho / 2 + rho_max / 2); //在ρθ坐標(biāo)(數(shù)組)中標(biāo)識(shí)點(diǎn),即計(jì)數(shù)累加 accarray[rho_int, k] = accarray[rho_int, k] + 1; } } } } //=======利用hough變換提取直線====== //尋找100個(gè)像素以上的直線在hough變換后形成的點(diǎn) const int max_line = 100; int[] case_accarray_n = new int[max_line]; int[] case_accarray_m = new int[max_line]; int K=0; //存儲(chǔ)數(shù)組計(jì)數(shù)器 for (int rho_n = 0; rho_n < rho_max; rho_n++) //在hough變換后的數(shù)組中搜索 for (int theta_m = 0; theta_m < 180; theta_m++) if (accarray[rho_n, theta_m] >= cross_num && K < max_line) //設(shè)定直線的最小值 case_accarray_n[K]=rho_n; //存儲(chǔ)搜索出的數(shù)組下標(biāo) case_accarray_m[K]=theta_m; K=K+1; } } } //把這些點(diǎn)構(gòu)成的直線提取出來(lái),輸出圖像數(shù)組為I_out //I_out=ones(x,y).*255; Bitmap I_out = new Bitmap(x, y); for (int n = 0; n < x; n++) for (int m = 0; m < y; m++) //首先設(shè)置為白色 I_out.SetPixel(n, m, Color.White); Color pixel = bmpobj.GetPixel(n, m); if ( pixel.R == 0) for ( int k = 0; k < 180; k++) rho=(m*Math.Cos(Theta[k]))+(n*Math.Sin(Theta[k])); rho_int=(int)Math.Round(rho/2+rho_max/2); //如果正在計(jì)算的點(diǎn)屬于100像素以上點(diǎn),則把它提取出來(lái) for ( int a = 0; a < K-1; a++) if (rho_int==case_accarray_n[a] && k==case_accarray_m[a]) I_out.SetPixel(n, m, Color.Black); } } } } } return I_out;}相關(guān)代碼附上。有問(wèn)題問(wèn)我。。
那你知道怎么通過(guò)hough找直線嗎?
35+564687
文章TAG:hough變換matlabhough變換

最近更新

  • 家庭發(fā)電,我想請(qǐng)問(wèn)家庭發(fā)電需要什么家庭發(fā)電,我想請(qǐng)問(wèn)家庭發(fā)電需要什么

    我想請(qǐng)問(wèn)家庭發(fā)電需要什么2,家用光伏發(fā)電劃算嗎3,家里停電了要用那一種方式發(fā)電好4,家庭安裝光伏發(fā)電的好處和壞處5,家用太陽(yáng)能發(fā)電家里一個(gè)3p和2p空調(diào)每天都一直用還有熱水器一6,家庭光伏.....

    問(wèn)答 日期:2023-09-08

  • direct3d,Direct3D是什么意思direct3d,Direct3D是什么意思

    Direct3D是什么意思2,Direct3D是什么3,Direct3D是什么4,什么是Direct3D啊5,Direct3D是什么6,Direct3D是什么意思吖1,Direct3D是什么意思去下載一個(gè)新版的顯卡驅(qū)動(dòng),或者重裝DirectX試試換一張.....

    問(wèn)答 日期:2023-09-08

  • 北京大數(shù)據(jù)外包公司有哪些北京大數(shù)據(jù)外包公司有哪些

    國(guó)內(nèi)有哪些大型軟件外包公司?北京舒慧時(shí)空信息技術(shù)有限公司No外包公司。北京舒慧是時(shí)空嗎外包公司你想問(wèn)北京舒慧時(shí)空信息科技有限公司公司是-0?北京萬(wàn)向是人力外包公司,北京萬(wàn)向is外包是.....

    問(wèn)答 日期:2023-09-08

  • 儲(chǔ)能系統(tǒng),什么是分布式儲(chǔ)能系統(tǒng)儲(chǔ)能系統(tǒng),什么是分布式儲(chǔ)能系統(tǒng)

    什么是分布式儲(chǔ)能系統(tǒng)2,變電站中的儲(chǔ)能系統(tǒng)做什么用3,儲(chǔ)能系統(tǒng)中電池時(shí)如何成組的4,家庭儲(chǔ)能系統(tǒng)是否可以滿足白天空調(diào)使用5,儲(chǔ)能技術(shù)的電磁儲(chǔ)能6,飛輪儲(chǔ)能系統(tǒng)1,什么是分布式儲(chǔ)能系統(tǒng)分布式.....

    問(wèn)答 日期:2023-09-08

  • 經(jīng)濟(jì)學(xué)人 大數(shù)據(jù),前瞻經(jīng)濟(jì)學(xué)人經(jīng)濟(jì)學(xué)人 大數(shù)據(jù),前瞻經(jīng)濟(jì)學(xué)人

    簡(jiǎn)而言之,“Da數(shù)據(jù)”的特點(diǎn)是:數(shù)據(jù)量大、數(shù)據(jù)類型多樣、數(shù)據(jù)加速增長(zhǎng)、數(shù)據(jù)來(lái)源多樣。掘金大學(xué)數(shù)據(jù)“鬼票”當(dāng)時(shí)是,掘金大學(xué)數(shù)據(jù)“鬼票”當(dāng)時(shí)是,_數(shù)據(jù)分析師考試昨日,《貴陽(yáng)學(xué)院數(shù)據(jù)產(chǎn)業(yè)人.....

    問(wèn)答 日期:2023-09-08

  • 升壓模塊,兩個(gè)升壓模塊可以通過(guò)并聯(lián)使用使整個(gè)升壓的功率升高嗎不是說(shuō)使單升壓模塊,兩個(gè)升壓模塊可以通過(guò)并聯(lián)使用使整個(gè)升壓的功率升高嗎不是說(shuō)使單

    兩個(gè)升壓模塊可以通過(guò)并聯(lián)使用使整個(gè)升壓的功率升高嗎不是說(shuō)使單2,不損壞升壓模塊升壓模塊給4個(gè)450V2000uf的電容充電4個(gè)電容3,這是一塊升壓模塊可以將電壓升高我給它用手機(jī)充電寶輸入5V.....

    問(wèn)答 日期:2023-09-08

  • 緩存擊穿,spring 注解緩存 能解決緩存穿透的問(wèn)題嗎緩存擊穿,spring 注解緩存 能解決緩存穿透的問(wèn)題嗎

    spring注解緩存能解決緩存穿透的問(wèn)題嗎2,這個(gè)是電腦問(wèn)題還是系統(tǒng)問(wèn)題3,電腦出現(xiàn)開(kāi)機(jī)畫(huà)面后就重啟這是怎么回事啊4,鼠標(biāo)經(jīng)常性的無(wú)反應(yīng)但是在別人的電腦上運(yùn)行良好別人的鼠標(biāo)在我5,請(qǐng)電腦高.....

    問(wèn)答 日期:2023-09-08

  • 芯片的制造過(guò)程,芯片IC制造的工藝流程是什么芯片的制造過(guò)程,芯片IC制造的工藝流程是什么

    芯片IC制造的工藝流程是什么2,集成電路的制作流程是怎樣的3,ASIC芯片從研發(fā)到生產(chǎn)的整個(gè)過(guò)程是怎么樣的能詳細(xì)的介紹一下嗎4,LED芯片制造工藝流程是什么5,芯片是怎樣制造的6,芯片是怎么做的.....

    問(wèn)答 日期:2023-09-08

問(wèn)答文章排行榜