【图像处理——hough变换那些事】

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

#老板的每一次点赞,都是对小编精神上的支持,愿各位老板一路长虹,学习进步。

点赞点赞!!!!

#author:yyt      time:2023.5.5

#机器学习—图像处理

#本文为小编第一次写文章,望见谅。主要讲解图像处理中的hough变换(从自己的理解角度)。

开始吧:

Hough变换:hough变换用于将图像中的边缘曲线检测出来。

1.直线Hough变换

    1.1思路:

        直线的参数描述:

        极坐标表示:r=x*sinθ+y*cosθ

        在笛卡尔坐标系中两点共线表示在参数坐标系中两直线交于一点

        在笛卡尔坐标系中三点共线表示在参数坐标系中三直线交于一点

        参数空间累加器:

        在参数坐标系中通过统计相较于某点的次数表示位于笛卡尔坐标系 中某直线的点数

        

        

        我们再来聊一下特征提取:

     (说明特征提取的步骤与原理:通过sobel算子进行分别对x方向与y方向上进行求导,然后将两导值平方求和得到对于整个方向上的导值,我们称其为梯度,对于梯度大于某一阈值时便可认为为特征点

            matlab代码:

Edge=rgb2gray(imread("test.jpg"));
Edge=padarray(Edge,[1,1],'symmetric','both');
h1=[-1 -2 -1 ; 0 0 0;1 2 1];
h2=h1';
Edge_h=conv2(Edge,h1,'valid');
Edge_v=conv2(Edge,h2,'valid');
Edge=sqrt(Edge_h.^2+Edge_v.^2);
Edge=Edge>0.2*max(Edge(:));
imshow(Edge,[]);

        噪声的出现对hough变换的影响:

        噪声其实也为某种特征点,我们原本是可以认为整体导值大于0的点都为特征 点,但是这就把噪声也包括在内,因此我们的解决方法是对整体导值进行二值化, 二值化是给予一个阈值,对于二值化处理十分考验阈值的选取,如果阈值过高会将 某些边缘舍去,如果阈值过低则不会舍去除去噪声。

        此时有人会想起,我们可以先除噪,再进行hough变换不就好了么?

        答:但是噪声不是也是某种特征点么,除噪的同时也会将边缘模糊化啊。

       因此一位厉害的哥们遇到我们现在遇到的问题,他提出了一个惊世骇俗的想法: Canny变换(这人就叫canny)

    1.2 hough变换的数学公式

 

     Hough变换的数学表达式的意义:

     将原图的整个范围缩小到某个曲线上,上面公式:

    为直线的极坐标表达式,此处可以改变成其他曲线的表达式,因此hough变换将会得到输入曲线的边缘曲线。

 

   下面我们以无人驾驶汽车在道路行驶为背景,利用hough变换将道路两侧的白线识别出来,并标注出。下图为无人驾驶汽车采用车载相机实时拍摄的道路场景。

 

 

   Matlab代码:

Edge=rgb2gray(imread("road1.jpg"));
Edge=padarray(Edge,[1,1],'symmetric','both');
h1=[-1 -2 -1 ; 0 0 0;1 2 1];
h2=h1';Edge_h=conv2(Edge,h1,'valid');
Edge_v=conv2(Edge,h2,'valid');
Edge1=sqrt(Edge_h.^2+Edge_v.^2);
Edge=Edge>0.72908*max(Edge(:));
%imshow(Edge,[]);
[H,W]=size(Edge);MyHT=zeros(360,ceil(sqrt(H^2+W^2))+1);
for i =1:Hfor j = 1:Wif Edge(i,j)==1for theta=1:360r=i*cos(theta*pi/180)+j*sin(theta*pi/180);if round(r)>0MyHT(theta,round(r))=MyHT(theta,round(r))+1;endendendend
end[theta,r]=find(MyHT==max(MyHT(:)));
theta=theta(1);
r=r(1);
inimg=imread("road1.jpg");
for x = 1:H%for y = 1:Wy=(r-x*cos(theta*pi/180))/sin(theta*pi/180);y=round(y);if ((y>0) && (y<W-5))for i = y:y+5inimg(x,i,1)=255;inimg(x,i,2)=0;inimg(x,i,3)=0;endend%end
end
%imshow(MyHT,[]);
imshow(inimg,[]);

结果展示:

 

   OK,that's all.


http://chatgpt.dhexx.cn/article/iY4hT7SE.shtml

相关文章

基于Hough变换的直线检测(Matlab)

点击上方“3D视觉工坊”&#xff0c;选择“星标” 干货第一时间送达 作者丨无敌三脚猫 来源丨 古月居 1、引言 该程序实现了一些基本的图像处理算法&#xff0c;并将它们组合在一起&#xff0c;构建了一个基于霍夫变换的直线检测器。该程序能够在图像中找到直线段的起始点和结束…

Hough变换原理

霍夫变换在识别方程式已知的曲线是常用的一种方法&#xff0c;本文通过识别直线方程为向导&#xff0c;说明霍夫变换的原理。 话不多说&#xff0c;开始今天的主题&#xff0c;我们处理的对象是二值黑白图像&#xff0c;如下图&#xff1a; 上图是我自绘的五个点&#xff0c;考…

图像处理算法 之 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变换&#xff08;standard hough transform&#xf…

MATLAB中的Hough变换

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

智能图像分析——Hough变换

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

霍夫Hough变换

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

Hough变换及MATLAB示例

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

hough变换算法

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

Hough 变换

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

Hough transform(霍夫变换)

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

Hough变换

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

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

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

Hough变换原理-直线检测

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

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

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

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

2023-02-24&#xff1a;请用go语言调用ffmpeg&#xff0c;解码mp4文件并保存为YUV420SP格式文件&#xff0c;采用YUV420P转YUV420SP的方式。 答案2023-02-24&#xff1a; 使用 github.com/moonfdd/ffmpeg-go 库。 解码后就是yuv420p&#xff0c;然后用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的介绍 &#xff0c;大致意思如下&#xff1a; 它是YCbCr的泛化格式&#xff0c;能够表示任何4:2:0的平面和半平面格式&#xff0c;每个分量用8 bits 表示。带有这种格式的图像使用3个独立的Buffer表示&#xff0c;每…

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

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

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

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

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

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