OpenCV霍夫直线变换和圆变换及像素重映射
1.霍夫变换——直线(1)霍夫直线变换介绍Hough Line Transform用来作直线检测前提条件——边缘检测已经完成平面空间到极坐标空间转换对于任意一条直线上的所有点来说,变换到极坐标中,从[0~360]空间,可以得到r的大小属于同一条直线上点在极坐标空(r,theta)必然在一个点上有最强的信号出现,根据此反算到平面坐标中就可以得到直线上各点的像素坐标。从而得到直线(2)相关API标准的
1.霍夫变换——直线
(1)霍夫直线变换介绍
Hough Line Transform用来作直线检测
前提条件——边缘检测已经完成
平面空间到极坐标空间转换
对于任意一条直线上的所有点来说,变换到极坐标中,从[0~360]空间,可以得到r的大小
属于同一条直线上点在极坐标空(r,theta)必然在一个点上有最强的信号出现,根据此反算到平面坐标中就可以得到直线上各点的像素坐标。从而得到直线
(2)相关API
标准的霍夫变换cv::HoughLines从平面坐标转换到霍夫空间,最终输出是(θ,rθ)表示极坐标空间
霍夫变换直线概率cv::HoughLinesP最终输出是直线的俩个点(X0,Y0,X1,Y1)
CV::HoughLines(inputArray src,//输入图像,必须为8-bit的灰度图像
outputArray lines,//输出的极坐标来表示直线
double rho,//生成极坐标时候的像素扫描步长
double theta,//生成极坐标时候的角度步长,一般取值CV_P1/180
int threshold,//阈值,只有获得足够交点的极坐标点才被看成是直线
double srn=0;//是否应用多尺度的霍夫变换,如果不是设置0表示经典霍夫变换
double stn=0;//是否应用多尺度的霍夫变换,如果不是设置为0表示经典霍夫变换
double min_theta=0;//表示角度扫描范围0~180之间,默认即可
double max_theta=CV_PI)//一般情况是有经验的开发者使用,需要自己反变换到平面空间
cv::HoughLinesP(inputArray src,//输入图像,必须为8-bit的灰度图像
outputArray lines,//输出的极坐标来表示直线
double rho,//生成极坐标时候的像素扫描步长
double theta,//生成极坐标时候的角度步长,一般取值CV_P1/180
int threshold,//阈值,只有获得足够交点的极坐标点才被看成是直线
double min_theta=0;//表示角度扫描范围0~180之间,默认即可
double max_theta=CV_PI)//
2.霍夫变换——圆
(1)霍夫圆检测原理
从平面坐标到极坐标转换三个参数C(X0,Y0,R)其中x0,y0是圆心
假设平面坐标的任意一个圆上的点,转换到极坐标中:C(X0,Y0,R)处有最大值,霍夫变换正是利用这个原理实现圆的检测
(2)相关API(cv::HoughCricles)
因为霍夫圆检测对噪声比较敏感,所以首先要对图像做中值滤波,基于效率考虑,opencv中实现的霍夫变换圆检测是基于图像梯度的实现,分为俩步:
- 检测边缘,发现可能的圆心
- 基于第一步的基础上从候选圆心开始计算最佳半径大小
HoughCircles(inputArray image,//输入图像,必须是8位的单通道灰度图像
Outputarray image,//输出结果,发现的圆信息
Int method,//方法-HOUGH_GRADIENT
Double dp,//dp=1;
Double mindist,//10最短距离-可以分辨是俩个圆的,否则认为是同心圆
Double param1,//canny edge detection low threshold
Double param2,//中心点累加器阈值-候选圆心
Int minradius,//最小半径
Int maxradius,//最大半径)
3.像素重映射
(1)什么是像素重映射
简单点说就是把输入图像中各个像素按照一定的规则映射到另外一张图像的对应位置上去,形成一张新的图像
G(x,y)=f(h(x,y));g(x,y)是重映射之后的图像h(x,y)是功能函数f是原图像
(2)API介绍(cv::remap)
Remap(inputarray src,//输入图像
Outputarray dst,//输出图像
Inputarray map1,//x映射表cv_32fc1/cv_32fc2
Inputarray map2,//y映射表
Int interpolation,//选择的插值方法,常见线性插值,可选择立方等
Int borderMode,//BORDER_CONSTANT
Const Scalar borderValue//color)
更多推荐
所有评论(0)