Hough线变换

算法核心思想

任何一条直线斜截式表达式y=a*x+b,可以转换成参数空间的表达式b=y-a*x。所以,图像空间的任何一条直线有固定的a和b来确定,转换成参数空间都是一个点(a, b);同时,图像空间中经过任何一点(x0,y0)的所有直线在参数空间就是一条直线。Hough变换就是将图像中每一个点转换成参数空间的一条直线,这样,参数空间中如果两条直线相交于一点(a0,b0),就说明这两条直线对应的图像空间中的点在同一条直线上,并且这条直线的方程为y=a0*x+b。

实际应用中,因为斜截式不好表示竖线,常使用极坐标表示,这样每点对应的参数线就是曲线。常用到累加器单元来统计参数空间中相交于一点的曲线个数。简言之,就是把参数空间的两个坐标轴划分为小的片段,这样整个参数空间就被划分为了小的方格,统计经过每个方格的参数曲线个数,并输入一个阈值,如果经过方格的曲线个数大于阈值就认为这些曲线对应的图像空间点在一条直线上。

具体到图像的直线检测中,常用步骤为:

1、对输入图像使用Canny等边界算法求边界,得到一副边界的二值图像。图像背景用黑色表示,边界用白色表示。

2、对所有的边界点做Hough变换,背景点忽略不处理。

3、统计参数空间中所有格子的经过曲线个数并排序。

4,、根据输入的阈值来选出参数空间格子。

5、画出参数空间对应的直线。

原文地址:https://www.cnblogs.com/JorSean/p/9355828.html

时间: 2024-08-30 11:28:06

Hough线变换的相关文章

python数字图像处理(15):霍夫线变换

在图片处理中,霍夫变换主要是用来检测图片中的几何形状,包括直线.圆.椭圆等. 在skimage中,霍夫变换是放在tranform模块内,本篇主要讲解霍夫线变换. 对于平面中的一条直线,在笛卡尔坐标系中,可用y=mx+b来表示,其中m为斜率,b为截距.但是如果直线是一条垂直线,则m为无穷大,所有通常我们在另一坐标系中表示直线,即极坐标系下的r=xcos(theta)+ysin(theta).即可用(r,theta)来表示一条直线.其中r为该直线到原点的距离,theta为该直线的垂线与x轴的夹角.如

学习 opencv---(13)opencv霍夫变换:霍夫线变换,霍夫圆变换

在本篇文章中,我们将一起学习opencv中霍夫变换相关的知识点,以及了解opencv中实现霍夫变换的HoughLines,HoughLinesP函数的使用方法,实现霍夫圆变换的HoughCircles函数的使用方法. 先尝鲜一下其中一个示例程序的运行截图: 一.引言 在图像处理和计算机视觉领域中,如何从当前的图像中提取所需要的特征信息是图像识别的关键所在.在许多应用场合中需要快速准确的检测出直线或者圆.其中一种非常有效的解决问题的方法是霍夫(Hough)变换,其为图像处理中从图像识别几何形状的基

霍夫线变换,霍夫圆变换

在图像处理和计算机视觉领域中,如何从当前的图像中提取所需要的特征信息是图像识别的关键所在.在许多应用场合中需要快速准确地检测出直线或者圆.其中一种非常有效的解决问题的方法是霍夫(Hough)变换,其为图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法.最基本的霍夫变换是从黑白图像中检测直线(线段). 1.霍夫变换 ⑴霍夫变换概述 霍夫变换(Hough Transform)是图像处理中的一种特征提取技术,该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特定形

20、【opencv入门】霍夫变换:霍夫线变换,霍夫圆变换合辑

一.引言 在图像处理和计算机视觉领域中,如何从当前的图像中提取所需要的特征信息是图像识别的关键所在.在许多应用场合中需要快速准确地检测出直线或者圆.其中一种非常有效的解决问题的方法是霍夫(Hough)变换,其为图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法.最基本的霍夫变换是从黑白图像中检测直线(线段). 二.霍夫变换概述 霍夫变换(Hough Transform)是图像处理中的一种特征提取技术,该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特定形状

opencv —— HoughLines、HoughLinesP 霍夫线变换(标准霍夫线变换、多尺度霍夫线变换、累积概率霍夫线变换)

霍夫线变换的原理 一条直线在图像二维空间可由两个变量表示,有以下两种情况: ① 在笛卡尔坐标系中:可由参数斜率和截距(k,b)表示. ② 在极坐标系中:可由参数极经和极角(r,θ)表示. 对于霍夫线变换,我们将采用第二种方式极坐标系来表示直线,因此直线的表达式可为: 化简便可得到: 对于(x0,y0),我们可以将通过这一点的所有直线统一定义为: 这就意味着每一对  代表一条通过点  的直线. 对于一个给定点   ,我们可以在直角坐标系中,绘出所有通过它的直线(θ 为 x 轴,r 为 y 轴).最

opencv利用hough概率变换拟合得到直线后,利用DDA算法得到直线上的像素点坐标

图片霍夫变换拟合得到直线后,怎样获得直线上的像素点坐标? 这是我今天在图像处理学习中遇到的问题,霍夫变换采用的概率霍夫变换,所以拟合得到的直线信息其实是直线的两个端点的坐标,这样一个比较直接的思路就是利用DDA算法来获取. 一.算法简介 DDA算法是计算机图形学中最简单的绘制直线算法.其主要思想是由直线公式y = kx + b推导出来的. 我们已知直线段两个端点P0(x0,y0)和P1(x1,y1),就能求出 k 和 b . 在k,b均求出的条件下,只要知道一个x值,我们就能计算出一个y值.如果

Opencv图像识别从零到精通(22)-----hough变换检测直线与圆

今天要看的是霍夫变换,常用用来检测直线和圆,这里是把常见的笛卡尔坐标系转换成极坐标下,进行累计峰值的极大值,确定.HoughLines,HoughLinesP,HoughCircles,三个函数,首先先看看原理,最后会用漂亮的matlab图,来回归一下,霍夫直线变换. 霍夫线变换: 众所周知, 一条直线在图像二维空间可由两个变量表示. 例如: 在 笛卡尔坐标系: 可由参数:  斜率和截距表示. 在 极坐标系: 可由参数:  极径和极角表示 对于霍夫变换, 我们将用 极坐标系 来表示直线. 因此,

【OpenCV新手教程第14】OpenCVHough变换:霍夫变换线,霍夫变换圆汇编

本系列文章由@浅墨_毛星云 出品.转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/26977557 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 知乎:http://www.zhihu.com/people/mao-xing-yun 邮箱: [email protected] 写作当前博文时配套使用的OpenCV版本号: 2.4.9 本篇文章中.我们一起探讨了OpenCV

OpenCV2.4.10之samples_cpp_tutorial-code_learn-----ImgTrans(Hough变换)

本系列学习笔记参考自OpenCV2.4.10之opencv\sources\samples\cpp\tutorial_code和http://www.opencv.org.cn/opencvdoc/2.3.2/html/genindex.html 在图像中我们往往需要检测出一定形状的图形,比如圆等.霍夫变换就是用来检测图像中特定形状的变换,本文将介绍霍夫变换进行检测员和霍夫变换检测线的应用. 1.HoughCircle_Demo.cpp(霍夫圆变换) 示意demo源码及注释如下: #includ