Hough 检测直线

本文介绍了Hough变换的基本原理,特别是在检测直线时的应用。OpenCV库提供了多种方法来实现Hough变换,包括标准Hough变换、概率Hough变换和多尺度Hough变换。文章详细解释了各个参数的意义,如距离精度(rho)、角度精度(theta)和阈值(threshold),并提到了概率Hough变换中连接线段的参数。示例代码展示了如何使用OpenCV检测图像中的直线。
摘要由CSDN通过智能技术生成

1、Hough变换

Hough变换是一种快速的形状匹配技术。经典的H ough变换适用于曲线形状可以用参数来描述、而曲线位置未知情况下的曲线检测。如下:

在笛卡儿坐标系中, 直线可以用斜截方程y = kx + b 表示。考虑同一直线上的两点( x i, yi ) 和( xj, yj ), 满足yi = kx i+ b 和yj = kxj + b, 映射到参数空间后的两条正弦曲线Q=x i cos H+ yi sin H和Q= xj cos H+ yj s in H将相交于一点。如下图所示:

从而在图像空间中同一条直线上的所有点在变换到参数空间后的正弦曲线都将交汇于一点( Q, H)。因此可以设计二维计数器H ( Q, H) 来累加极坐标系中的参考点数。最后通过统计计数器矩阵的局部极大值, 即可检测出图像中的直线。

推广后的Hough变换可以检测任意形状。

2、OpenCV中利用Hough变换检测直线

/* Finds lines on binary image using one of several methods.
   line_storage is either memory storage or 1 x <max number of lines> CvMat, its
   number of columns is changed by the function.
   method is one of CV_HOUGH_*;
   rho, theta and threshold are used for each of those methods;
   param1 ~ line length, param2 ~ line gap - for probabilistic,
   param1 ~ srn, param2 ~ stn - for multi-scale */
CVAPI(CvSeq*)  cvHoughLines2( CvArr* image, void* line_storage, int method,
                              double rho, double theta, int threshold,
                              double param1 CV_DEFAULT(0), double param2 CV_DEFAULT(0));

参数说明:

  image

  输入8-比特、单通道(二值)图像,当用CV_HOUGH_PROBABILISTIC方法检测的时候其内容会被函数改变。

  line_storage

  检测到的线段存储仓.可以是内存存储仓(

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值