21-霍夫变换(Hough)

霍夫变换(Hough Transformation)基本思想及MATLAB相关函数 目录一、Hough变换的基本思想二、算法实现三、MATLAB相关函数3.1 hough3.2 houghpeaks3.3 houghlines 一、Hough变换的基本思想 对于直角坐标系里的一条直线l,可用ρ,θ来表示该直线,相应的直线方程为ρ=xcosθ+ysinθρ=xcosθ+ysinθρ=xcosθ+ysinθ,其中,ρ是原点到该直线的垂直距离,θ是垂线与x轴的夹角,这条直线是惟一的。 构造一个参数(ρ,θ)的平面,从而(ρ,θ)平面的一点,对应一条直线。 【结论】:ρ,θ坐标系中的一个点对应x 阅读详情

Hough变换

1、霍夫变换直线检测(还有圆检测,统一几何形状检测);
2、相关API;
3、代码演示;

霍夫直线变换

1、Hough Line Transform用来做直线检测;
2、前提条件-边缘检测已经完成(Canny运算);
3、将平面直角坐标转换到极坐标系中,霍夫空间–极坐标空间,平面直角坐标–空域,将图像从空域转换到霍夫域;

在这里插入图片描述

4、霍夫直线变换的原理:通过将图像上的像素点全部变换到极坐标空间形成很多曲线,如果其中有曲线相交于1点,则这些像素点属于同一条直线,其中交点的θ表示直线的角度,再根据交点的r、θ值反算出平面坐标中对应的像素点,即可得到对应的直线;
在这里插入图片描述
注:平面像素点到极坐标下曲线转换公式:
在这里插入图片描述
极坐标下交点到平面像素坐标转换公式:
在这里插入图片描述

5、直线相交点的确定方法:转换后的曲线经过的点都对应+1,则曲线经过次数最多的点值最大,亮度最大;(信号越强,点越白)
在这里插入图片描述

相关API

1、标准霍夫变换 : cv::HoughLines(),从平面坐标转换到霍夫空间,最终输出(theta,r)表示极坐标空间;只是输出找到的霍夫空间中的交点,反算需要自己完成;
2、霍夫变换直线概率:cv::HoughLinesP(),最终输出直线的平面坐标中两个点坐标(x0,y0,x1,y1);

在这里插入图片描述
参数说明:
rho --扫描步长,一般取1,最大取值是图像宽度高度平方的开根号;
theta–角度步长,一般取 CV_PI/180; 最大值是π;
threshold–阈值,只有获得足够交点的极坐标点才被看成直线,可以设10(10个像素长)
srn --是否设置多尺度霍夫变换(图像金字塔),不需要设置0;

在这里插入图片描述
注:
minLineLength: 最小直线长度,直线多少像素才认为是直线;
maxLineGap : 间隔多少像素以内仍然认为是直线;

Code

说明:
1、Canny运算后图像为二值图像,不能画彩色线,需要调用cvtColor(edge_image, dst, CV_GRAY2BGR);转换到单通道彩色颜色空间,后面才能画彩色线;
2、创建vector<Vec4f> pline存储任意数量的Hough计算结果;
3、HoughLinesP()中调整 --最小直线长度,最大间隔可以有效改进图像显示结果;
在这里插入图片描述

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int main(int argc, char** argv)
{
	Mat src,dst;
	src = imread("C:\\Users\\hello\\Desktop\\22.jpg");
	if (!src.data)
	{
		cout << "could not load the image..." << endl;
		return -1;
	}
	namedWindow("input image", CV_WINDOW_AUTOSIZE);
	imshow("input image", src);

	Mat gaus,edge_image;
	GaussianBlur(src, gaus, Size(3, 3), 0, 0);
	//extract image  提取的彩色图像
	Canny(gaus, edge_image, 50, 100, 3, false); //边缘检测
	
	cvtColor(edge_image, dst, CV_GRAY2BGR);//转换为彩色图像
	
	imshow("edge_image", edge_image);

	//创建一个包含4个float元素的数组
	vector<Vec4f> plines;
	//Hough直变换
	HoughLinesP(edge_image, plines,1, CV_PI / 180, 20, 0, 20); //一般不用舍弃,大于0的保留
	//将检测到的直线画出来
	Scalar color = Scalar(0, 0, 255);
	for (size_t i = 0; i < plines.size(); i++)
	{
		Vec4f hline = plines[i];
		line(dst, Point(hline[0], hline[1]), Point(hline[2], hline[3]), color, 3, LINE_AA);//画线
	}
	imshow("Hough line Detection", dst);

	waitKey(0);
	return 0;
}

效果

在这里插入图片描述

霍夫变换(Hough Transform) 霍夫变换(Hough Transform)是图像处理中的一种特征提取技术,该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍夫变换结果。霍夫变换于1962年由PaulHough首次提出,最初的Hough变换是设计用来检测直线和曲线,起初的方法要求知道物体边界线的解析方程,但不需要有关区域位置的先验知识。这种方法的一个突出优点是分割结果的Robustness,即对数据的不完全或噪声不是非常敏感。然而,要获得描述边界的解析表达常常是不可能的。 阅读详情

相关推荐

霍夫变换(Hough Transform)的原理以及代码(Matlab&C)实现

霍夫变换(Hough Transform)的原理以及代码实现 霍夫变换是一种常用的图像算法,在线状物和圆形物检测等应用中具有很重要的意义。特别地,Hough变换能够较好的克服目标被部分遮挡的情况。因此,在图像检测应用场合中,霍夫变换具有重要的意义。本文首先介绍霍夫变换的基本思想,然后结合matlab代码谈谈具体应用方法,最后给出Ho...

ljwcdtj的博客 2万+

Hough 算法(霍夫变换)

Hough 变换(Hough Transform)是一种常用的检测图形的算法。它通过搜索特定形状(如直线,圆,椭圆等)在参数空间的累加器中的局部最大值来检测形状。Hough 变换主要用于检测图像中的基本形状,如直线,圆等。

广寒爱学习 1万+

Hough变换检测原理

1.前言 霍夫变换(Hough Transform)是图像处理中的一种特征提取技术,它通过一种投票算法检测具有特定形状的物体。该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍夫变换结果。霍夫变换于1962年由Paul Hough 首次提出,后于1972年由Richard Duda和Peter Hart推广使用,经典霍夫变换用来检测图像中的直线,后来霍夫变换

沈春旭的博客 1万+

霍夫变换(Hough)

霍夫变换(Hough)是一个非常重要的检测间断点边界形状的方法。它通过将图像坐标空间变换到参数空间,来实现直线与曲线的拟合。

sudohello的博客 12万+

Hough变换原理-直线检测

霍夫变换(Hough Transform)是图像处理中的一种特征提取技术,它通过一种投票算法检测具有特定形状的物体。 import cv2 def HoughLinesP_demo(img_path): img = cv2.imread(img_path) org = img.copy() img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 阈值计算 ret, img = cv2.threshold(img, ..

xian0710830114的专栏 1万+

直线检测之Hough变换(霍夫变换)

霍夫变换,英文名称Hough Transform,作用是用来检测图像中的直线或者圆等几何图形的。 给定一张图像中的n个点,假设我们希望找到这些点中一个位于直线上的点集,一种可行的解决方法是,先找到所有由每对点确定的直线,然后寻找靠近特定直线的点的所有子集。这种方法涉及寻找n(n-1)/2~n^2 条直线,然后对每个点。与所有直线执行(n)(n(n-1))/2~n^3次比较。这种方法因为计算量太大基本上没有应用价值。 霍夫[Hough 1962]提出一种替代方法,通常称为霍夫变换。考虑xy平面上的一个点(xi

YiYeZhiNian的博客 9160

Hough变换直线检测

作者:云外阳光 链接:https://www.zhihu.com/question/35268803/answer/82100453 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 先组略的答一下,待整理: y=k*x+b形式的直线方程没有办法表示x=c形式的直线(这时候,直线的斜率为无穷大)。所以实际应用中,利用极坐标的方式,将直线方程表示成:

Phoebexiang的专栏 6405

霍夫变换(Hough Transform)

    霍夫变换是图像处理中的一个检测直线、圆等简单几何形状的方法。它最初是用于在二值化的图像中进行直线检测的。对于图像中的一条直线而言,利用直角坐标系,可以表示为:的形式。那么,该直线上任意一点(x,y)变换到k-b参数空间将变成一个“点”。也就是说,将图像空间中所有的非零像素转换到k-b参数空间,那么它们将聚焦在一个点上。如此一来,参数空间中的一个局部峰值点就很有可能对应着原图像空间中的一

计算机视觉小菜鸟的专栏 3万+

Hough变换(含MATLAB实现)

目录 一、Hough变换简介 二、Hough变换的数学理解 1.x-y变量空间至k-b参数空间的变换 2.x-y变量空间至-空间的变换 三、Hough变换应用于线检测(MATLAB实现) 1.检测步骤 2.使用MATLAB工具箱中的Hough变换函数进行边缘检测 一、Hough变换简介 霍夫变换(Hough Transform)是数字图像处理中的一种特征提取技术 常用于判断图像...

小草莓的魔法笔记 3万+

【视觉算法】广义霍夫变换(Generalized Hough Transform)

在上一篇文章中,我们学习了经典霍夫变换,用以识别图像中的可解析图形;而广义霍夫变换(Generalized Hough Transform)旨在解决不可解析的不规则图形的识别问题。 以下,结合Generalized Hough Transform (GHT)(Ballard and Brown, section 4.3.4, Sonka et al., section 5.2.6)这篇文章学习。 ...

ciderpark 8673

霍夫变换 Hough Transfom(附Matlab实验代码)

前言     在学习过程中,我发现许多文章一上来就介绍Hough变换的特点和数学原理,却忽视了Hough变换的使用场景(在边缘检测之后使用),因此很容易让人捉摸不透。在本文中,大家可以关注一下这一点。     一、Hough变换使用场景     我们先通过边缘检测,得到了幅值超过某个阈值的像素集合,即边缘像素。我们想知道,这些边缘像素是否连成直线,即验证这些边缘像素是否在某直线上。为此,我们...

棍哥幸的博客 1万+

OpenCvSharp 学习笔记21-- 霍夫变换 - 圆检测 (Hough Circle transform)

一,霍夫圆检测原理: 与霍夫直线检测相似 已知图像每一个像素对应极坐标坐标点为(x,y)(x,y)(x,y): x=a+Rcos⁡(θ) x=a+R\cos(\theta) x=a+Rcos(θ) y=b+Rsin⁡(θ) y=b+R\sin(\theta) y=b+Rsin(θ) a,ba,ba,b : 表示极坐标中的圆心 ,R : 表示半径 ,θ\thetaθ : 0° ~ 360° 假设 ...

C++++ ++ 1万+

经典Hough算法的实现

实现一种简单的Hough算法。由于Hough 变换的原理是把在图像空间中的直线检测问题转换到参数空间中对点的检测问题,通过在参数空间里进行简单的累加统计完成检测任务,同时直线检测都是建立在图像的边缘之上的,而往往一般的图像并不是边缘图像。所以要实现一例Hough算法的实现需要经过以下步骤: 1)获取目标图像 2)对图像进行边缘检测 3)由图像具体情况设置累加器大小 4)对图像进行Hough变换并存储结果 5)由累加器决定是否存在直线 6)根据最后结果绘制直线

图像的直线检测——霍夫变换(Hough transform)

定义: 霍夫变换(Hough Transform)是图像处理中的一种特征提取技术,它将图像空间中的特征点映射到参数空间进行投票,通过检测累计结果的局部极值点得到一个符合某特定形状的点的集合。经典霍夫变换用来检测图像中的直线,后来霍夫变换扩展到任意形状物体的识别,多为圆和椭圆。它的抗噪声、抗形变能力较强。另一种直线提取的方法是对图像边缘点进行链码追踪,在得到的链码串中提取直线。 霍夫变换将在一个

ChuanjieZhu 3万+

Hough变换算法及结果图

Visual C++数字图像处理典型算法及实现,hough变换,VS

头歌操作系统 课堂练习4.2:页式内存管理 答案 无解析

头歌操作系统 课堂练习4.2:页式内存管理 答案 无解析

kercii的博客 1万+

MATLAB中的Hough变换

下面来介绍一下关于Hough变换的原理及其如何在MATLAB中实现。 Hough变换:Hough变换是一种使用表决原理的参数估计技术。其原理是利用图像空间和Hough参数空间的点-线对偶性,把图像空间中的检测问题转换到参数空间。国内外对Hough变换的研究及应用动态:Hough变换于1962年由Paul Hough提出,并在美国作为专利被发表。它所实现的是一种从图像空间到参数空间的映射关系。由于...

跑得动就不要歇着 1万+

W25N01GV SPI NAND Flash驱动开发避坑指南:详解2KB缓冲区机制与状态寄存器正确用法

本文深入解析W25N01GV SPI NAND Flash芯片的2KB缓冲区机制与状态寄存器正确用法,提供STM32 HAL和ESP-IDF项目的实战解决方案。涵盖双阶段操作原理、状态寄存器深度解析、时序控制优化及跨平台驱动设计要点,帮助开发者避免常见错误并提升存储性能。

aizhouqian5537的博客 639

与霍夫变换有关的Matlab函数:hough;houghpeaks;houghlines

与霍夫变换有关的工具箱函数(1) 图像处理工具箱提供了三个与霍夫变换有关的函数。函数hough实现了前面讨论的概念,函数houghpeaks寻找霍夫变换的峰值(累加单元的高计数),函数houghlines以来自其他两个函数的结果为基础在原始图像中提取线段。 1. 函数hough 函数hough支持任意的默认语法: [H, theta, rho] = hough(f)

xsjwangyb的专栏 2万+

OpenHands:开源AI智能体开发平台实战指南与架构解析

AI智能体(Agent)作为人工智能领域的关键技术,通过模拟人类的推理与行动循环,能够自主规划并执行复杂任务。其核心原理基于ReAct(Reasoning and Acting)框架,结合规划、工具使用与记忆系统,实现了从感知到决策的闭环。在软件工程领域,AI智能体的技术价值在于将自然语言指令转化为具体的开发操作,从而显著提升代码生成、测试编写和系统维护的效率。典型的应用场景包括自动化代码重构、智能文档生成以及持续集成流程的优化。本文聚焦于OpenHands这一开源AI驱动开发平台,它提供了完整的智能体SD

weixin_27021789的博客 456

全球建筑物提取数据集(免费下载):微软/GlobalMLBuildingFootprints

这个是GitHub上的开源数据集: https://github.com/microsoft/GlobalMLBuildingFootprints 介绍 必应地图正在世界各地发布开放式建筑足迹。我们从 2014 年到 2021 年间的 Bing Maps 图像中检测到了 7.77 亿座建筑物,包括 Maxar 和 Airbus 的图像。数据可在 ODbL 下免费下载和使用。该数据集补充了我们的其他版本。 包括的地区 执照 此数据由 Microsoft 根据Open Dat..

此星光明博客 6288

OpenCV-Python——第21章:霍夫(Hough)直线变换(直线检测)

目录 0 原理 1 OpenCV中的霍夫变换 0 原理 霍夫变换在检测各种形状的的技术中非常流行,如果你要检测的形状可以用数学表达式写出,你就可以是使用霍夫变换检测它。及时要检测的形状存在一点破坏或者扭曲也可以使用。我们下面就看看如何使用霍夫变换检测直线。 首先将一条直线用一个点表示,这样用一个点表示直线上所有的点,一开始人们使用斜截式y=kx+q中的(k,q)来表示一条...

YukinoAI的博客 2万+

用Python爬取大连商品交易所期货实时行情:从入门到实战

python复制编辑# utils.py"豆粕": "M0","铁矿石": "I0","聚乙烯": "L0","玉米": "C0","聚丙烯": "PP0","棕榈油": "P0"本项目展示了:✅ 如何从新浪财经 API获取主力合约实时数据✅ 使用Python异步爬虫技术) 提升效率✅ 利用pandas和matplotlib进行结构化分析与可视化✅ 具备良好的扩展性,可对接金融、农业、能源等数据需求场景✅ 可作为期货量化策略数据源✅ 可嵌入自动化报告系统。

2201_76125261的博客 1247
上一篇: LaTeX 中插入数学公式
下一篇: 22-霍夫圆变换
hellohake
博客等级 码龄10年 4543粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值