Opencv 霍夫直线检测

发布于 2024-05-21 21:44:37 字数 2484 浏览 20 评论 0

霍夫变换(Hough Transform)是图像处理中的一种特征提取技术,它通过一种投票算法检测具有特定形状的物体。该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍夫变换结果。霍夫变换于 1962 年由 Paul Hough 首次提出,后于 1972 年由 Richard Duda 和 Peter Hart 推广使用,经典霍夫变换用来检测图像中的直线,后来霍夫变换扩展到任意形状物体的识别,多为圆和椭圆。

经过几天的学习,发现各位大牛的理解方式之前都是有一些区别的,但是核心的思想没有变化,因此记录一下自己对霍夫变换直线检测的认识。

原理介绍:

1、对于直角坐标系中的任意一点 $A(x0,y0)$,经过点 A 的直线满足 $Y_0=kX_0+b$ (k 是斜率,b 是截距)
2、那么在 X-Y 平面过点 $A(x0,y0)$ 的直线簇可以用 $Y_0=kX_0+b$ 表示,但对于垂直于 X 轴的直线斜率是无穷大的则无法表示。因此将直角坐标系转换到极坐标系就能解决该特殊情况。
3、在极坐标系中表示直线的方程为(ρ为原点到直线的距离),如图所示:

霍夫直线检测 1

霍夫直线检测 2

4、如上图,假定在一个 8*8 的平面像素中有一条直线,并且从左上角(1,8)像素点开始分别计算θ为 0°、45°、90°、135°、180°时的ρ,图中可以看出ρ分别为 1、(9√2)/2、8、(7√2)/2、-1,并给这 5 个值分别记一票,同理计算像素点 $(3,6)$ 点θ为 0°、45°、90°、135°、180°时的 ρ,再给计算出来的 5 个 ρ 值分别记一票,此时就会发现 $ρ = (9√2)/2$ 的这个值已经记了两票了,以此类推,遍历完整个 8*8 的像素空间的时候 $ρ = (9√2)/2$ 就记了 5 票, 别的ρ值的票数均小于 5 票,所以得到该直线在这个 8*8 的像素坐标中的极坐标方程为 $(9√2)/2=x*Cos45°+y*Sin45°$,到此该直线方程就求出来了。(PS:但实际中θ的取值不会跨度这么大,一般是 $PI/180$)。

OpenCV 实现直线检测:

#include<opencv2\imgproc\imgproc.hpp>
#include<opencv2\opencv.hpp>
#include<opencv2\highgui\highgui.hpp>
using namespace std;
using namespace cv;

int main()
{
  Mat Image = imread("street.jpg", 0);
  Mat CannyImg;
  Canny(Image, CannyImg, 140, 250, 3);
  imshow("CannyImg", CannyImg);

  Mat DstImg;
  cvtColor(Image, DstImg, CV_GRAY2BGR);

  vector<Vec4i> Lines;
  HoughLinesP(CannyImg, Lines, 1, CV_PI / 360, 170,30,15);
  for (size_t i = 0; i < Lines.size(); i++)
  {
    line(DstImg, Point(Lines[i][0], Lines[i][1]), Point(Lines[i][2], Lines[i][3]), Scalar(0, 0, 255), 2, 8);
  }
  imshow("HoughLines_Detect", DstImg);
  imwrite("HoughLines_Detect.jpg", DstImg);
  waitKey(0);
  return 0;
}

结果图如下:

霍夫直线检测 3


推荐一个国外公路直线检测的大神的个人主页(有很多资源和源码):Mohamed Aly: http://www.vision.caltech.edu/malaa/research/ ,他对公路上的直线(斑马线)等的检测有较为深入的研究,值得学习。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

有深☉意

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

玍銹的英雄夢

文章 0 评论 0

我不会写诗

文章 0 评论 0

十六岁半

文章 0 评论 0

浸婚纱

文章 0 评论 0

qq_kJ6XkX

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文