OpenCV中Hough transform(霍夫变换)

霍夫变换所基于的公式:

P = X * COS(θ) + Y *SIN(θ)

      首先,明确图像坐标,在图像中横轴是从左向右增加,纵轴是从上向下增加,原点在左上角,在使用霍夫变换检测图像中的直线时,P是原点到直线的距离,θ是原点到直线垂线和X轴正方向在顺时针方向的夹角。

霍夫变换思想:

       我们建立一个累积数组acc[][],对于每一个给定的图像上的点(X0 , Y0)有一组对应的(p , θ)表示通过这个点的所有直线,我们累计acc[p][θ]++;依次计算图像中的每一个点。最后检查acc[][]他们他们最后的值就是图像上以p , θ 为参数的直线在图像中通过的点数。检查acc[]][]若其值大于等于threshold则被认为是一条直线。

OpenCV中基本霍夫变换的函数:

void HoughLines( InputArray image, OutputArray lines,
                              double rho, double theta, int threshold,
                              double srn=0, double stn=0 );

参数:

lines:存放检测到的直线

rho:是P的步长

theta:是θ的步长

threshold:是设定的最小投票数,也即acc[p][θ]>=threshold时才认定其为一条直线


函数HoughLines()只能得到直线的参数P ,θ并不知道检测到的直线的端点

霍夫变换的变形HoughLinesP()可以检测到直线的两个端点。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值