霍夫变换是图像处理中的一种特征提取技术,该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合特特定形状的集合作为霍夫变换的结果。
前提条件—边缘检测已经完成
霍夫线变换的直接输入只能是边缘二值图像
平面空间到极坐标空间转换
opencv支持三种不同非霍夫变换,标准,多尺度,累计概率
标准霍夫变换(StandardHough Transform,SHT),由HoughLines函数调用
多尺度霍夫变换(Multi-ScaleHough Transform,MSHT),由HoughLines函数调用
累计概率霍夫变换(ProgressiveProbabilistic Hough Transform,PPHT),由HoughLinesP函数调用
r=xcosa+ysina
多少个像素点就有多少条曲线,他们都相交于一点(最亮的点)
对于任意一条直线上的所有点来说
变换到极坐标中从【0-360】空间,可以得到r的大小
属于同一条直线上点在极坐标空间必然在一点上有最强的信号出现,根据此反算到平面坐标中就可以得到直线上各点的像素坐标,从而得到直线
一般情况是有经验的开发者使用,需要自己反变换到平面空间
API:
HoughLines(InputArray image,// 源图像,需为8位的单通道二进制图像
OutputArray lines, //霍夫线变换检测到线条的输出矢量
double rho, //以像素为单位的距离精度。另一种形容方式是直线搜索时的进步尺寸的单位半径,一般为1
double theta, //以弧度为单位的角度精度。另一种形容方式是直线搜索时的进步尺寸的单位角度,一般cv_pi/180
int threshold, //累加平面的阈值参数,即识别某部分为图中的一条直线时它在累加平面中必须达到的值。
// 大于阈值threshold的线段才可以被检测通过并返回到结果中。
double srn=0,// 有默认值0。对于多尺度的霍夫变换,这是第三个参数进步尺寸rho的除数距离。
//粗略的累加器进步尺寸直接是第三个参数rho,而精确的累加器进步尺寸为rho/srn。
double stn=0 ) //有默认值0,对于多尺度霍夫变换,srn表示第四个参数进步尺寸的单位角度theta的除数距离。
// 且如果srn和stn同时为0,就表示使用经典的霍夫变换。否则&#