Hough变换原理

article/2025/9/29 5:28:02

      霍夫变换在识别方程式已知的曲线是常用的一种方法,本文通过识别直线方程为向导,说明霍夫变换的原理。

话不多说,开始今天的主题,我们处理的对象是二值黑白图像,如下图:

 

                                                   

        上图是我自绘的五个点,考虑到这些点中的任何一个——经过这个点有无穷条直线,如果这个点能够对这些线投票,那么每条可能经过这个点的直线都会收到一票,现在考虑另外一个类似的点,它也给所有可能经过他的直线投票,这样就有一条线(两个点都在这条直线上)将会收到这两个点的投票,总共有两票,而其他的线只能收到 0 票或者 1 票。

      现在我们需要用最少参数来描述每一条直线,但是标准形式 Y = KX + b,对于竖直线(k = \infty)是有问题的,因此通常用(\LARGE (p, \theta )参数来表示一条直线:

                                                                       \LARGE v = -utan\theta + \frac{p}{cos\theta }

 

其中 \LARGE \theta \in[- \frac{\pi}{2}, \frac{\pi}{2} ), 是水平轴与该直线垂线的夹角,\LARGE p\in[- p_{max}, p_{max}],是原点到该直线的垂直距离,水平线的\LARGE \theta = 0,竖直线\LARGE \theta =-\frac {\pi}{2},因此,没一条直线可以看做是二维空间的一个点\LARGE (p , \theta ),该二维空间代表了所有的直线。

      事实上,我们无法考虑经过每一个点的无数条直线,所以只考虑有限集合中的直线,把\LARGE \theta p空间离散化,并用一个相应的二维数组\LARGE N_\theta \chi N_p数组 \LARGE A来记录票数, \LARGE A被称为累加数组,对于一副\LARGE W\chi H输入图像,有

                                     \LARGE p_{max} = - p_{max} = \sqrt{W^2 + H^2}

\LARGE A\LARGE N_p个元素位于区间\LARGE p \inp\in[- p_{max}, p_{max}], 还有\LARGE N_\theta个元素位于区间\LARGE \theta \in[- \frac{\pi}{2}, \frac{\pi}{2} )。数组的索引是整数\LARGE (i, j)\LARGE (i, j) \subset Z^2,因此有:

                                           \LARGE i\in [i, N_\theta ] \mapsto\theta \in [-\frac{\pi}{2}, \frac{\pi}{2})

                                          \LARGE j\in [i, N_p ] \mapsto p\in [-p_{max},p_{max})

 

边缘点\LARGE (u, v)\LARGE (u, v) 将投票给所有满足方程\LARGE v = -utan\theta + \frac{p}{cos\theta } 的直线,它包括所有的\LARGE (i, j)\LARGE (i, j)对,满足

                                          \LARGE p = usin\theta + vcos\theta
             并且元素\LARGE A[i,j] 都增大了。对于没一个\LARGE i \in [i,N_\theta ],都可以计算出相应的 \LARGE \theta 值,然后根据等式\LARGE p = usin\theta + vcos\theta计算 \LARGE p , 再把\LARGE p,再把\LARGE p映射到相应的整数 \LARGE j

        在最后的过程中,\LARGE A中获得最多投票的这些元素对应于场景中的主导线。即统计数组 \LARGE A中最大值对应的索引,此时,这个索引对应的直线方程就是我们要找的 霍夫变换线。

 

                                                           


http://chatgpt.dhexx.cn/article/9RiyjsEy.shtml

相关文章

图像处理算法 之 Hough变换

Hough变换 一、标准Hough线变换(SHT)1.1 原理1.2 SHT步骤1.3 缺点 二、渐进概率Hough变换(PPHT)2.1 原理及步骤2.2 缺点 三、Hough圆变换3.1 原理及步骤3.2 缺点 四、实验代码 一、标准Hough线变换(SHT) 1.1 原理 标准Hough变换(standard hough transform&#xf…

MATLAB中的Hough变换

下面来介绍一下关于Hough变换的原理及其如何在MATLAB中实现。 Hough变换:Hough变换是一种使用表决原理的参数估计技术。其原理是利用图像空间和Hough参数空间的点-线对偶性,把图像空间中的检测问题转换到参数空间。国内外对Hough变换的研究及…

智能图像分析——Hough变换

一、原理 引用 hough变换利用点、线对偶的思想,把提取图像空间中直线的问题转换成在参数空间/hough空间中计算点的峰值的问题。 在x − y坐标系中,假设有一条直线过点( x0 , y0 ),那么我们可以把这条直线的方程记为 ymxb(1&#…

霍夫Hough变换

参考: https://blog.csdn.net/qq_15971883/article/details/80583364 MATLAB帮助文档 Hough变换是一种使用表决方式的参数估计技术,其原理是利用图像空间和Hough参数空间的线-点对偶性,把图像空间中的检测问题转换到参数空间中进行。 利用Hough变换检测直线 记住:直角坐标…

Hough变换及MATLAB示例

前言 在车道线检测中,最小二乘法,Hough变换是车道线模型拟合的传统方法之一,通过一系列离散的点拟合出车道直线,也就是得到基于像素平面坐标系的左车道和右车道直线方程。 Hough变换 Hough变换的基本思想 我们先来看看如何表达…

hough变换算法

VoteNet网络中会用Deep Hough Voting,所以先来学习一下Hough Voting。 正文开始 hough变换算法 1、算法思想 霍夫变换于1962年由Paul Hough 首次提出,后于1972年由Richard Duda和Peter Hart推广使用,经典霍夫变换用来检测图像中的直线&…

Hough 变换

Hough 变换是图像处理中,检测直线最基本,也是应用最广泛的一种传统方法。虽然现在是深度学习大行其道的时代,但是很多传统的算法,依然有其参考的价值所在,至少从数学表达上来看,是更加的简洁,有…

Hough transform(霍夫变换)

主要内容: 1、Hough变换的算法思想 2、直线检测 3、圆、椭圆检测 4、程序实现 一、Hough变换简介 Hough变换是图像处理中从图像中识别几何形状的基本方法之一。Hough变换的基本原理在于利用点与线的对偶性,将原始图像空间的给定的曲线通过曲线表达形式变…

Hough变换

目录 一、Hough变换简介 二、Hough变换的数学理解 1.x-y变量空间至k-b参数空间的变换 2.x-y变量空间至-空间的变换 三、Hough变换应用于线检测(MATLAB实现) 1.检测步骤 2.使用MATLAB工具箱中的Hough变换函数进行边缘检测 一、Hough变换简介 霍夫变…

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

目录 一、前言 二、直线函数的形式化表示 2.1 直线被方程表示 2.2 直线被图表表示 2.3 直线的表格表示 三、hough变换的提出 3.1 极坐标表示点和线 四、 hough变换的原理 4.1 极坐标的​编辑表格 4.2 用​编辑平面表示:过任意点P(x,y)做所有射线&#xff0…

Hough变换原理-直线检测

目录 一、简介 二、原理 三、Python代码实现 一、简介 Hough(霍夫)变换是图像处理中从图像中识别几何形状的基本方法之一。Hough变换是将图像坐标空间变换到参数空间,利用点与线的对偶性,将原始图像空间的给定的曲线&#xff08…

YUV444、YUV422、YUV420、YUV420P、YUV420SP、YV12、YU12、NV12、NV21

前言 各种YUV格式多如牛毛啊,刚开始学起来确实很费劲,网上搜索的文章讲的并不是很明白。 各种不同的YUV格式其实只是采样方式和存储方式不同,就这两点,不同的采样方式是为了实现节省内存,不同的存储方式暂时不了解有…

2023-02-24:请用go语言调用ffmpeg,解码mp4文件并保存为YUV420SP格式文件,采用YUV420P转YUV420SP的方式。

2023-02-24:请用go语言调用ffmpeg,解码mp4文件并保存为YUV420SP格式文件,采用YUV420P转YUV420SP的方式。 答案2023-02-24: 使用 github.com/moonfdd/ffmpeg-go 库。 解码后就是yuv420p,然后用SwsScale函数转换成yuv…

ffmpeg处理YUV422和YUV420P相互转换

YUV422空间大小计算 YUV422封包width*heightwidth/2*height*2YUYV Y分量width*heightYUYV U分量width/2*heightYUYV V分量width/2*height YUV420空间大小计算 YUV420封包width*heightwidth/2*height/2*2Y分量width*heightU分量width/2*height/2V分量width/2*height/2 extern &…

Android Camera2 YUV420_888 格式详解

Camera2 YUV420_888 官网文档介绍 Android PAI 对 YUV420_888的介绍 ,大致意思如下: 它是YCbCr的泛化格式,能够表示任何4:2:0的平面和半平面格式,每个分量用8 bits 表示。带有这种格式的图像使用3个独立的Buffer表示,每…

【音视频数据数据处理 2】【YUV篇】将YUV420P_I420数据旋转90°-180°-270°-镜像旋转

【音视频数据数据处理 2】【YUV篇】将YUV420P_I420数据旋转90 一、理论分析(以yuv420p_i420格式为例)二、顺时针旋转90 代码实现三、顺时针旋转180 代码实现四、旋转90-180-270-镜像旋转,完整代码实现五、运行结果 本文接着前文: …

YUV420->RGB888格式转换的CPP实现

git地址: GitHub - Evayangelion/EYUVConverter: A YUV converter implemented by cpp 上一次学习了YUV各种采样和存储方式的区别(YUV知识存档) 接下来一起学习一下RGB格式的知识和YUV到RGB的转换方式 RGB色彩模式的分类 RGB的分类相较YUV来说…

YUV444,YUV420P,YUV420SP,YUV422P,YUV422SP,NV12,NV21,NV16,NV61等格式区分与存储简介

一、基础知识: 概述 YUV是顏色編碼方式,常用於視頻及圖像處理中。 其中的YUV是三個分量。“Y”表示明亮度(Luminance或Luma),也就是灰度值。“U”和“V” 表示的是彩色信息,分別爲色度和濃度(C…

OpenGL渲染YUV420P

一 、YUV420P数据格式二 、GLFW渲染YUV420P2.1 定义顶点数据2.2 创建YUV三张纹理2.3上行YUV420数据2.4 渲染纹理2.5 着色器 三、代码地址以及存在的问题四 、解决存在的问题 一 、YUV420P数据格式 图片来源于谷歌 结合上图可以看出YUV420P的特点如下: ①无论在横向还…

详解 YUV 格式(I420/YUV420/NV12/NV12/YUV422)

转载自:划水型派大星 YUV (YCbCr)是一种像素格式,常见于视频编码与静态图像。与 RGB 格式(红-绿-蓝)相反,YUV 分别由一个称为 Y(相当于灰度)的“亮度”分量(…