霍夫变换是图像处理中的一种特征提取技术,该过程中在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍夫变换的结果
霍夫变换在opencv中主要分两种
霍夫线变换–检测直线(线段)
霍夫圆变换–检测圆
用到的函数:
HoughLines()–标准霍夫变换,多尺度霍夫变换
HoughLinesP()—累计概率霍夫变换
HoughCircles()—-霍夫圆变换
1)霍夫线变换
霍夫线变换是一种寻找直线的方法,一般在使用霍夫变量前首先将图像进行边缘检测处理,一般霍夫变换的输入为边缘二值图,Opencv支持三种不同的霍夫线变换
包括;
&&标准霍夫变换(SHT)
&&多尺度霍夫变换(MSHT)—-是SHT在多尺度下的一个变种
&&累计概率霍夫变换(PPHT)—是SHT的改进,在一定范围内进行霍夫变换(减少计算时间和运动量)
使用函数对应关系
标准霍夫变换(SHT)—HoughLines()函数
多尺度霍夫变换(MSHT)—-HoughLines()函数
累计概率霍夫变换(PPHT)—HoughLinesP()函数
————————————————————————————
标准霍夫变换————HoughLines()
void HoughLines(InputArray image,OutputArray lines,double rho,double theta,int threshold,double srn=0,double stn=0 );
&&src:输入原图像(一般为8位单通道二值图像)
&&lines :经过霍夫变换后检测线条的输出矢量,每一条线由两个元素的矢量(p,角度)表示,其中p是离坐标原点的距离,角度是弧度线条的旋转角度(0表示垂直线,90度表示水平线)
&&rho:以像素为单位的距离精度,另一种表达方式是直线搜索时的进步尺寸的单位半径 一般给1
&&threta:以弧度为单位的角度精度,另一种表达方式是直线搜素时的进步尺寸的角度单位 一般给1
&&threshold :累计平面的阈值参数,即识别某部分为一条直线时他在累加平面中必须达到的值,大于阈值threshold的线段才可以被检测通过并返回到结果中
&&srn:默认值0,对于多尺度的霍夫变换,这是第三个参数进步尺寸rho的除数距离
&&stn:默认值0,对于多尺度霍夫变换,表示单位角度theta


python 霍夫变换 圆 霍夫变换应用_搜索

累计概率霍夫变换(推荐用这个)

void HoughLinesP(InputArray image,OutputArray lines,double rho,double thata,int threshold,double minLineLength=0,double maxLineGap=0);

&&src:输入原图像(一般为8位单通道二值图像)

&&lines:经过霍夫变换后检测线条的输出矢量,每一条线由4个元素矢量(x_1,y_1,x_2,y_2)表示,其中(x_1,y_1)和(x_2,y_2)是检测到线段的结束点

&& rho :以像素为单位的距离精度,另一种表达方式是直线搜索时的进步尺寸的单位半径

&&theta:以弧度为单位的角度精度,另一种表达方式是直线搜索时的进步尺寸的角度单位

&&threshold:累加平面的阈值参数,即识别某部分为一条直线时他在累加平面中必须达到的值,大于阈值threshold的线段才可以被检测通过并返回到结果中

&&minLineLength:默认值0,表示最低线段的长度,小于则不显示

&&maxLineGap:默认值0,允许将同一行点与点之间连接起来的最大距离

python 霍夫变换 圆 霍夫变换应用_python 霍夫变换 圆_02