hough变换概念

在计算机中,经常需要将一些特定的形状图形从图片中提取出来,如果直接用像素点来搜寻非常困难,这时候需要将图像从像素按照一定的算法映射到参数空间。hough变化提供了一种从图像像素信息到参数空间的变换方法。对于像直线,圆,椭圆这样的规则曲线hough是一种常用的算法。hough变化最大的优点在于特征边缘描述中间隔的容忍性并且该变换不受图像噪声的影响。

hough变换原理

hough变换是一种将图像上的点映射到累加的参数空间,实现对已知解析式曲线的识别。

参数空间

由于直线斜率k存在无穷大的情况,这里hough变换将原图像空间转换到极坐标系表示的参数空间。即直线y=k∗x+b每一个点都代表一条直线。
如图所示:

参数空间的累加投票

在进行hough变换前,先需要将图像的边缘图像提取出来,在边缘图像的基础上进行hough变换。经过边缘图像每一个点的直线有很多,如下图:
经过某一点的直线在参数空间的表示像一条正弦曲线。
在边缘图像中,只有表示边缘的像素点才有可能构成直线。现在回到参数空间,在参数空间H(ρ,θ)看作为一个累加器,一个表示直线信息的累加器。设置某一阈值,超过阈值的参数点所代表的直线表明图像中存在这一直线。

hough变换示例

RGB= imread('lines.png');
imshow(RGB),title('original image');
I = rgb2gray(RGB);
BW = edge(I, 'canny');  %  用canny算法提取边缘图像
figure,imshow(BW),title('edge image');
[H, T, R]=hough(BW);  % 计算得到的H为参数矩阵,T为限定直线的角度,R为直线到原点的值
figure, imshow(imadjust(mat2gray(H)), 'XData', T, ...   % 绘制hough变换的图
'YData', R, 'InitialMagnification', 'fit'),title('hough image');
xlabel('\theta'), ylabel('\rho');
axis on; axis normal; hold on;
colormap(hot);
peaks = houghpeaks(H,4);  % 该算法用来提取指定数目的峰值点,也是就是寻找直线
figure, imshow(BW);
hold on;
lines = houghlines(BW, T, R, peaks, 'FillGap',30, 'MinLength',30);max_len = 0;
for k=1:length(lines)
xy = [lines(k).point1; lines(k).point2];plot(xy(:,1),xy(:,2),'LineWidth',3,'Color','b');plot(xy(1,1),xy(1,2),'x','LineWidth',3,'Color','yellow');plot(xy(2,1),xy(2,2),'x','LineWidth',3,'Color','red');len = norm(lines(k).point1 - lines(k).point2);if ( len > max_len)max_len = len;xy_long = xy;end
end

参考文献:《数字图像处理matlab版》-左飞
《数字图像处理第三版》 http://blog.csdn.net/poem_qianmo/article/details/26977557
https://en.wikipedia.org/wiki/Hough_transform
http://homepages.inf.ed.ac.uk/rbf/HIPR2/hough.htm

hough变换理解 原理 步骤相关推荐

  1. 【笔记】hough变换理解

    概要 hough变换最早Paul Hough提出,用来提取图像中的直线,后来Richard Duda和Peter Hart推广到提取图像中任意形状,多为圆和椭圆.本文学习经典hough变换. houg ...

  2. Hough变换-理解篇

    霍夫变换(Hough Transform)是图像处理中的一种特征提取技术,它通过一种投票算法检测具有特定形状的物体.该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍 ...

  3. OpenCV2马拉松第22圈——Hough变换直线检測原理与实现

    计算机视觉讨论群162501053 转载请注明:http://blog.csdn.net/abcd1992719g/article/details/27220445 收入囊中 Hough变换 概率Ho ...

  4. 图像处理:Hough变换原理分析

    一.前言 别看Hough变换似乎简单,但是,不发挥一下数学理论的功力是不可能理解的:本人早十几年前就用Hough,也一直想写Hough变换,但一懒就是10几年,乘春节前有空,就将Hough的详细细节揭 ...

  5. Hough变换直线检测

    作者:云外阳光 链接:https://www.zhihu.com/question/35268803/answer/82100453 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转 ...

  6. 图像处理(八):线段检测之Hough变换

    现阶段用最多的线段检测算法为Hough变换,对于Hough变换的原理部分已经有很多人写过,具体可以参考:点击打开链接,这里我总结一下理解Hough变换算法的难点. 一.直线表示方法: 1)最常用的方法 ...

  7. 点、线和边缘检测 个人笔记(含Sobel和Laplace等算子、Marr-Hildreth和Canny实现及Hough变换)

    文章目录 1. 前言 2. 使用OpenCV 3 处理图像 笔记 2.1 傅里叶变换及相关.卷积 2.2 个人总结 2.3 相关链接 3. 点.线和边缘检测 笔记 3.1 背景知识 3.2 孤立点的检 ...

  8. Hough变换非常详细讲解

    Hough变换 y=k*x+b形式的直线方程没有办法表示x=c形式的直线(这时候,直线的斜率为无穷大).所以实际应用中,利用极坐标的方式,将直线方程表示成:ρ=xcosθ+ysinθ ,其中p表示直角 ...

  9. 小白学习图像处理7——Hough变换检测直线

    文章目录 一.Hough变换的原理 1.过定点的直线方程 2.两点确定一条直线 3.方程的形式 二.实现过程 三.程序代码 1.程序片段 2.总程序 四.matlab 的hough函数 一.Hough ...

  10. hough变换检测直线 matlab,Matlab实现Hough变换检测图像中的直线

    Hough变换的原理: 将图像从图像空间变换至参数空间,变换公式如下: 变换以后,图像空间与参数空间存在以下关系: 图像空间中的一点在参数空间是一条曲线,而图像空间共线的各点对应于参数空间交于一点的各 ...

最新文章

  1. 字符串-最后一个单词的长度(双指针)
  2. 极大似然法估计与极大验后法估计
  3. 【WebRTC---入门篇】(三)WebRTC运行机制
  4. selenium webdriver学习(一)------------快速开始(转载JARVI)
  5. wmv怎么转换成视频mp4?
  6. 分享97个社区论坛PHP源码,总有一款适合你
  7. MySQL 第六章过程式数据库对象.1存储对象
  8. android 写字板_微软正在Windows 10上的写字板中测试广告
  9. 从Outlook到python都可以使您的工作减少一半
  10. 手机最快的网络服务器,手机网速最快的dns地址
  11. MySQL 进阶 触发器 -- 触发器介绍、触发器语法、触发器案例
  12. SISR深度学习主要方法简述
  13. TUP第25期:IT自动化运维
  14. WORD文档打开文件时老提示发送错误报告,或者打印不全
  15. 数据库之数据库和表的创建
  16. 力挺 Linux 是一种怎样的体验?
  17. 高斯分布——在误差测量中的推导
  18. 【论文翻译】Convolutional Oriented Boundaries
  19. Xplus:电子杂志的颠覆性未来
  20. JDK 16 正式发布!程序员:追不上了...

热门文章

  1. python学习之迭代器
  2. 课程设计 计算机公共基础,基于Moodle的大学计算机公共基础课程设计
  3. 网络术语还在困扰你吗?
  4. 中文技术文档写作规范(汇总整理版)
  5. ibm刀片服务器虚拟化,刀片服务器内置虚拟化 IBM升级服务器
  6. RubyonRails是WebDev最佳选择的5个原因
  7. 使用VC2005一些问题及解决方案(一)
  8. Windows系统安装adb/fastboot驱动教程
  9. 怎么在html页面添加qq临时会话
  10. 背包问题九讲 2.0 beta1.1