OpenCV图像处理教程C++(十六)霍夫变换--线性变换以及圆变换

本文介绍了霍夫变换在图像处理中的应用,包括霍夫线变换和圆变换。霍夫变换是一种特征提取技术,常用于检测图像中的直线和圆。在OpenCV中,提供了HoughLines和HoughLinesP函数进行直线检测,以及基于霍夫梯度法的圆检测方法。然而,霍夫变换对噪声敏感,通常需要先进行中值滤波。霍夫梯度法存在一定的局限性,如对同心圆处理不理想,且使用Sobel导数计算局部梯度可能导致噪声。
摘要由CSDN通过智能技术生成

霍夫变换是图像处理中的一种特征提取技术,该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合特特定形状的集合作为霍夫变换的结果。
前提条件—边缘检测已经完成
霍夫线变换的直接输入只能是边缘二值图像
平面空间到极坐标空间转换
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,就表示使用经典的霍夫变换。否则&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值