| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> Hough变换原理-直线检测 -> 正文阅读 |
|
[人工智能]Hough变换原理-直线检测 |
目录 ? ? 一、简介????????Hough(霍夫)变换是图像处理中从图像中识别几何形状的基本方法之一。Hough变换是将图像坐标空间变换到参数空间,利用点与线的对偶性,将原始图像空间的给定的曲线(今天主要介绍直线)通过曲线表达形式变为参数空间的一个点。这样就把原始图像中给定曲线的检测问题转化为寻找参数空间中的峰值问题。也即把检测整体特性转化为检测局部特性。比如直线、椭圆、圆、弧线等。 二、原理????????Hough变换的基本原理在于利用点与线的对偶性,即在原始图像坐标系下的一个点对应了参数坐标系中的一条直线,同样参数坐标系的一条直线对应了原始坐标系下的一个点。原始坐标系下呈现直线的所有点,它们的斜率和截距是相同的,所以它们在参数坐标系下对应于同一个点。这样在将原始坐标系下的各个点投影到参数坐标系下之后,看参数坐标系下有没有聚集点,这样的聚集点就对应了原始坐标系下的直线。 ????????在图像坐标空间中,经过点(,)的直线表示为: ????????????????????????(1) ????????其中,参数a为斜率,b为截矩。通过点(,)点(,)的直线有无数条,且对应于不同的a和b。 ????????如果将和视为常数,而将原本的参数a和b看作变量,则式子(1)可以表示为: ???????????????????????? (2) ????????这样就变换到了参数空间。这个变换就是坐标空间中对于(,)点的Hough变换。该直线是图像坐标空间中的点(,)在参数空间的唯一方程。考虑到图像坐标空间中的另一点(,),它在参数空间中也有相应的一条直线,表示为: ?? ? ? ? ? ? ? ? ? ? ? ? (3) ????????这条直线与点(,)在参数空间的直线相交于一点(a0,b0)(a0,b0),如图所示: ? ????????也就是说,假如图像坐标空间中有一些点共线,其中每个点对应到参数空间中就是一条直线,而且参数空间中的这些直线相交于一点。Hough变换要做的就是统计参数空间中有多少这样的交点,并且每个交点是由多少直线相交形成的,而每个交点的斜率和截距就能确定出直线,从而计算出图像中的直线。 ???????? 三、Python代码实现? ? ? ? OpenCV中有现成的方法cv2.HoughLinesP,参数说明建注释,其中的参数需要实际情况自己调整了。Python代码如下:
测试图片与结果: ? ? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 4:53:37- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |