資源描述:
《霍夫變換函數(shù)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、霍夫變換函數(shù):hough;houghpeaks;houghlines(1)?(2014-03-3111:50:36)轉(zhuǎn)載▼分類:?matlab圖像處理工具箱提供了三個(gè)與霍夫變換有關(guān)的函數(shù)。函數(shù)hough實(shí)現(xiàn)了前面討論的概念,函數(shù)houghpeaks尋找霍夫變換的峰值(累加單元的高計(jì)數(shù)),函數(shù)houghlines以來自其他兩個(gè)函數(shù)的結(jié)果為基礎(chǔ)在原始圖像中提取線段。1.函數(shù)hough???函數(shù)hough支持任意的默認(rèn)語法:[H,?theta,?rho]?=?hough(f)?還支持完整的語法形式:[H,?theta,?rho]?=?hough(f,?'ThetaRes',?val1,?'R
2、hoRes',?val2)????其中,H是霍夫變換矩陣,theta(以度計(jì))和rho是ρ和θ值向量,在這些值上產(chǎn)生霍夫變換。輸入f是二值圖像,val1是0到90的標(biāo)量,指定了沿θ軸霍夫變換的間距(默認(rèn)是1),val2是0例10.5??霍夫變換的說明在這個(gè)例子中,我們用簡單的合成圖像來說明hough函數(shù)的機(jī)理:>>?f?=?zeros(101,?101);?>>?f(1,?1)?=?1;?f(101,?1)?=?1;?f(1,?101)?=?1;?>>?f(101,?101)?=?1;?f(51,?51)?=?1;?圖10-10(a)顯示了我們的測試圖像,下面使用默認(rèn)值計(jì)算并顯示霍夫變
3、換的結(jié)果:>>?H?=?hough(f)?>>?Imshow(H,[])????圖10-10(b)顯示了結(jié)果,以熟悉的方法使用imshow函數(shù)來顯示。在帶有標(biāo)度軸的較大圖中顯現(xiàn)霍夫變換常常更有用。???在接下來的代碼片段中,我們調(diào)用帶有三個(gè)參數(shù)的hough函數(shù)。然后把向量theta和rho作為附加輸入?yún)⒘總鬟f給imshow,從而控制水平軸和垂直軸的標(biāo)度。我們還要把'InitialMagnification'選項(xiàng)傳遞給帶有值'fit'的imshow函數(shù),因此,整個(gè)圖像將被強(qiáng)迫在圖形窗口中進(jìn)行裝配。axis函數(shù)被用來打開軸標(biāo)記,并使其顯示填充圖的矩形框。最后,xlabel和ylabel函數(shù)
4、(見2.3.1節(jié))用希臘字母LaTeX字體符號(hào)在軸上標(biāo)值:>>?[H,?theta,?rho]?=?hough(f);?>>?imshow(H,?[],?'XData',?theta,?'YData',?rho?,'InitialMagnification',?'fit')?>>?axis?on,?axis?normal?>>?xlabel('theta'),?ylabel('rho')????圖10-10(c)顯示了標(biāo)上值之后的結(jié)果。三條曲線(直線也可考慮為曲線)在±45°處的交點(diǎn)指出:f中有兩組三個(gè)共線的點(diǎn)。兩條曲線在(ρ,θ)=(0,-90)、(-100,-90)、(0,0)
5、和(100,0)處的交點(diǎn)指出:有4組位于垂直線和水平線上的共線點(diǎn)。2.函數(shù)houghpeaks????線檢測和連接用的霍夫變換的第一步是用高的計(jì)數(shù)尋找累加單元(工具箱文本把高的計(jì)數(shù)單元作為峰值)。因?yàn)榇嬖诨舴蜃儞Q參數(shù)空間中的量化和典型圖像的邊緣并不是很完美的直線這樣的事實(shí),霍夫變換的峰值傾向于相比霍夫變換單元更多。函數(shù)houghpeaks用任意默認(rèn)語法來尋找指定的峰值數(shù):peaks?=?houghpeaks(H,?NumPeaks)?或者使用完整的語法形式:peaks?=?houghpeaks(...,?'Threshold',?val1,?'NHoodSize',?val2)?其中,
6、"…"指出來自默認(rèn)語法和peaks的輸入是持有峰值行和列坐標(biāo)的Q×2大小的矩陣。Q的范圍是0到NumPeaks,H是霍夫變換矩陣。參數(shù)val1是非負(fù)的標(biāo)量,指定了H中的什么值被考慮為峰值;val1可以從0到Inf變化,默認(rèn)值是0.5*max(H(:))。參數(shù)val2是奇整數(shù)的兩元素矢量,指定量圍繞峰值的鄰域大小。當(dāng)鑒別出峰值之后,鄰域中的元素被置為0。默認(rèn)是由最小奇數(shù)值組成的兩元素矢量大于或等于size(H)/50。這個(gè)過程的基本思想是:通過把發(fā)現(xiàn)峰值的直接鄰域中的霍夫變換單元置0來清理峰值。我們在例10.6中說明函數(shù)houghpeaks。3.函數(shù)houghlines一旦一組候選的峰值
7、在霍夫變換中被識(shí)別出來,如果存在與這些峰值相關(guān)的有意義的線段,剩下的就是決定線的起始點(diǎn)和終點(diǎn)。函數(shù)houghlines用默認(rèn)的語法執(zhí)行這個(gè)任務(wù):lines?=?houghlines(f,?theta,?rho,?peaks)?或者使用完整的語法形式:lines?=?houghlines(...,?'FillGap',?val1,?'MinLength',?val2)其中,theta和rho是來自函數(shù)hough的輸出,peaks是函數(shù)houghp