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