- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
霍夫变换函数:hough;houghpeaks;houghlines(1)
? (2014-03-31 11:50:36)
HYPERLINK javascript:; 转载▼
分类:? HYPERLINK /s/articlelist_1803383051_2_1.html \t _blank matlab
图像处理工具箱提供了三个与霍夫变换有关的函数。函数hough实现了前面讨论的概念,函数houghpeaks寻找霍夫变换的峰值(累加单元的高计数),函数houghlines以来自其他两个函数的结果为基础在原始图像中提取线段。
1. 函数hough
???函数hough支持任意的默认语法:
[H,?theta,?rho]?=?hough(f)?
还支持完整的语法形式:
[H,?theta,?rho]?=?hough(f,?ThetaRes,?val1,?RhoRes,?val2)?
???其中,H是霍夫变换矩阵,theta(以度计)和rho是ρ和θ值向量,在这些值上产生霍夫变换。输入f是二值图像,val1是0到90的标量,指定了沿θ轴霍夫变换的间距(默认是1),val2是0
例10.5??霍夫变换的说明
在这个例子中,我们用简单的合成图像来说明hough函数的机理:
?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)显示了我们的测试图像,下面使用默认值计算并显示霍夫变换的结果:
?H?=?hough(f) ?
?Imshow(H,[])?
???图10-10(b)显示了结果,以熟悉的方法使用imshow函数来显示。在带有标度轴的较大图中显现霍夫变换常常更有用。
???在接下来的代码片段中,我们调用带有三个参数的hough函数。然后把向量theta和rho作为附加输入参量传递给imshow,从而控制水平轴和垂直轴的标度。我们还要把InitialMagnification选项传递给带有值fit的imshow函数,因此,整个图像将被强迫在图形窗口中进行装配。axis函数被用来打开轴标记,并使其显示填充图的矩形框。最后,xlabel和ylabel函数(见2.3.1节)用希腊字母LaTeX字体符号在轴上标值:
?[H,?theta,?rho]?=?hough(f);?
?imshow(H,?[],?XData,?theta,?YData,?rho?,InitialMagnification,?fit)?
?axis?on,?axis?normal?
?xlabel(\theta),?ylabel(\rho)?
???图10-10(c)显示了标上值之后的结果。三条曲线(直线也可考虑为曲线)在±45°处的交点指出:f中有两组三个共线的点。两条曲线在(ρ,θ)=(0,-90)、(-100,-90)、(0,0)和(100,0)处的交点指出:有4组位于垂直线和水平线上的共线点。
2. 函数houghpeaks
????线检测和连接用的霍夫变换的第一步是用高的计数寻找累加单元(工具箱文本把高的计数单元作为峰值)。因为存在霍夫变换参数空间中的量化和典型图像的边缘并不是很完美的直线这样的事实,霍夫变换的峰值倾向于相比霍夫变换单元更多。函数houghpeaks用任意默认语法来寻找指定的峰值数:
peaks?=?houghpeaks(H,?NumPeaks)?
或者使用完整的语法形式:
peaks?=?houghpeaks(...,?Threshold,?val1,?NHoodSize,?val2)?
其中,…指出来自默认语法和peaks的输入是持有峰值行和列坐标的Q×2大小的矩阵。Q的范围是0到NumPeaks,H是霍夫变换矩阵。参数val1是非负的标量,指定了H中的什么值被考虑为峰值;val1可以从0到Inf变化,默认值是0.5*max(H(:))。参数val2是奇整数的两元素矢量,指定量围绕峰值的邻域大小。当鉴别出峰值之后,邻域中的元素被置为0。默认是由最小奇数值组成的两元素矢量大于或等于size(H)/50。这个过程的基本思想是:通过把发现峰值的直接邻域中的霍夫变换单元置0来清理峰值。我们在例10.6中说明函数houghpeaks。
3. 函数houghlines
一旦一组候选的峰值在霍夫变换中被识别出来,如果存在与这些峰值相关的有意义的线段,剩下的就是决定线的起始点和终点。函数houghlines用默认的语法执行这个任务:
lines?=?houghlines(f,?theta,?rho,?peaks)?
或者使用完整的语法形式:
lines?=?houghli
文档评论(0)