过设置直线上点的阈值来定义多少条曲线交于一点我们才认为检测到了一条直线。
【6】这就是霍夫线变换要做的. 它追踪图像中每个点对应曲线间的交点. 如果交于一点的曲线的
数量超过了阈值, 那么可以认为这个交点所代表的参数对 在原图像中为一条直线。
3.3 HoughLines( )函数详解
此函数可以找出采用标准霍夫变换的二值图像线条。在OpenCV中,我们可以用其来调用标准霍夫变
换SHT和多尺度霍夫变换MSHT的OpenCV内建算法。
第一个参数,InputArray类型的image,输入图像,即源图像,需为8位的单通道二进制图像,可以
将任意的源图载入进来后由函数修改成此格式后,再填在这里。
第二个参数,InputArray类型的lines,经过调用HoughLines函数后储存了霍夫线变换检测到线条的
输出矢量。每一条线由具有两个元素的矢量 表示,其中, 是离坐标原点((0,0)(也就是图像
的左上角)的距离。 是弧度线条旋转角度(0~垂直线,π/2~水平线)。
第三个参数,double类型的rho,以像素为单位的距离精度。另一种形容方式是直线搜索时的进步尺
寸的单位半径。PS:Latex中/rho就表示 。
第四个参数,double类型的theta,以弧度为单位的角度精度。另一种形容方式是直线搜索时的进步
尺寸的单位角度。
第五个参数,int类型的threshold,累加平面的阈值参数,即识别某部分为图中的一条直线时它在累
加平面中必须达到的值。大于阈值threshold的线段才可以被检测通过并返回到结果中。
第六个参数,double类型的srn,有默认值0。对于多尺度的霍夫变换,这是第三个参数进步尺寸rho
的除数距离。粗略的累加器进步尺寸直接是第三个参数rho,而精确的累加器进步尺寸为rho/srn。
第七个参数,double类型的stn,有默认值0,对于多尺度霍夫变换,srn表示第四个参数进步尺寸的
单位角度theta的除数距离。且如果srn和stn同时为0,就表示使用经典的霍夫变换。否则,这两个参
数应该都为正数。
另外,关于霍夫变换的详细解释,可以看此英文页面:
http://homepages.inf.ed.ac.uk/rbf/HIPR2/hough.htm
在学完函数解析,看看浅墨为大家准备的以HoughLines为核心的示例程序,就可以全方位了解
HoughLines函数的使用方法了:
[cpp]
01. C++: void HoughLines(InputArray image, OutputArray lines, double rho, double theta,