31、 霍夫变换 霍夫变换是一种用于在...

31、 霍夫变换
霍夫变换是一种用于在图像中查找直线、圆等形状的方法。 霍夫直线变换的基本理论是,二值图像中的任何点都可能是某条直线的一部分。如果通过斜率a和截距b对直线进行参数化,则原始图像中的一个点将转换为(a,b)平面中与通过该点的所有线相对应的点的轨迹。如果将输入图像中的每个非零像素转换为输出图像中的这样一组点并对所有这些贡献求和,那么出现在输入(即(x,y)平面)图像中的直线将显示为在输出(即(a,b)平面)图像中的局部最大值。(a,b)平面通常称为累加器平面。截距截取形式实际上并不是代表所有通过点的线的最佳方式,通常将每条线表示为极坐标(ρ,θ)中的一个点,隐含的线是穿过指定点但垂直于从原点到该点的半径的线。OpenCV支持三种不同的霍夫直线变换:标准霍夫变换SHT,多尺度霍夫变换MHT和渐进概率霍夫变换PPHT。PPHT是此算法的一种变体,之所以称其为“概率”,是因为它只累加了一部分,而不是累加了累加器平面中的每个可能点,这种结果是大大减少了计算时间。标准和多尺度Hough变换都在函数HoughLines()中实现,区别在于使用或不使用最后两个可选参数。
void
cv::HoughLines(
cv::InputArray
image,
cv::OutputArray
lines,
double
rho,
double
theta,
int
threshold,
double
srn = 0,
double
stn = 0
);
第一个参数是输入图像,它必须是8位图像,但是输入被视为二值信息(即所有非零像素都被视为等效)。 第二个参数是找到的行将被存储的位置,这是一个N×1两通道浮点型数组(列数N将是返回的行数),对于每个找到的行包含rho(ρ)和theta(θ)值。参数rho和theta设置直线所需的分辨率(即累加器平面的分辨率)。rho单位是像素,theta单位是弧度。阈值是累加器平面中的值。该参数表明必须要返回的线的点数。
标准的Hough变换不使用参数srn和stn。它们用于多尺度霍夫变换(MHT)。
HoughLinesP()函数与HoughLines()非常相似,但有两个重要区别。第一个是lines参数将是一个四通道数组,找到的是线段两个端点的位置(x0,y0)和(x1,y1)。 第二个区别是对于PPHT,minLineLength和maxLineGap参数设置将返回线段的最小长度,以及算法不将其连接到单个较长线段中所需的共线段之间的分隔。
霍夫圆变换与霍夫直线变换大致相似。但它具有三个维度的累加器,x,y(圆心的位置)和圆半径r。 这意味着更高的内存需求和更慢的速度。 在OpenCV中,通过使用一种称为Hough梯度的方法避免了此问题。这种实现方式使算法可以运行得更快,并且它有助于解决三维累加器稀疏的问题。
霍夫圆变换函数HoughCircles()具有与直线变换相似的参数。
例1:使用霍夫圆变换在图像中查找圆
#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
Mat src;
Mat thrImg;
src = imread('E:/hough.jpg', 0);
imshow('src', src);
vector<Vec3f> circles;
HoughCircles(src, circles, cv::HOUGH_GRADIENT,2,40,160,90,20,55 );
for (size_t i = 0; i < circles.size(); ++i)
{
circle(src,Point(cvRound(circles[i][0]), cvRound(circles[i][1])),cvRound(circles[i][2]),Scalar(0, 0, 255),3);
}
imshow('Hough', src);
waitKey(0);
return 0;
}
2020年农历除夕夜,祝大家春节快乐。我也是有时无聊顺便普及下图像处理及机器视觉的基础知识。但是头条适合娱乐,还是不适合做这种技术方面的内容。感谢大家的关注,此头条号此后可能不再发机器视觉方面的内容了,我还是喜欢在公众号上安静地写点东西。有兴趣的可以去公众号上。名称与此头条号名称完全一样。此头条号以后会传播另一个方面的知识,不是工科技术类了,有兴趣的也可以关注了解下。再次感谢大家关注。

(0)

相关推荐

  • 一文解读经典霍夫变换(Hough Transform)

    视觉/图像重磅干货,第一时间送达 新机器视觉 最前沿的机器视觉与计算机视觉技术 206篇原创内容 公众号 来源: Hello AI World 引言 本文讲述霍夫变换的一些内容,并加入一些理解性东西, ...

  • 【从零学习OpenCV 4】霍夫变换原理及直线检测

    重磅干货,第一时间送达 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍<OpenCV 4开发详解>.为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通 ...

  • [OpenCV]经典霍夫变换原理

    本文主要讲述的是霍夫变换的一些内容,并加入一些在生活中的应用,希望能对读者对于霍夫变换的内容有所了解. 首先我先说的是,霍夫变换是一个特征提取技术.其可用于隔离图像中特定形状的特征的技术,应用在图像分 ...

  • 实战:基于霍夫变换进行线检测

    重磅干货,第一时间送达 霍夫变换算法线检测 一.目的 最近,我们发现自己不得不在应用程序中加入文档扫描功能.在做了一些研究之后,我们偶然发现了一篇熊英写的文章,他是Dropbox机器学习团队的成员.该 ...

  • 【图像处理算法】Hough变换

    参考:  1. https://www.zybuluo.com/lutingting/note/554459  2. <数字图像处理的MATLAB实现(第二版)>, Rafael C. G ...

  • (三)OpenCV图像处理

    直接 直接用霍夫直线检测,效果差; 通过图像形态学操作来寻找直线,霍夫获取位置信息与显示. #include <opencv2/opencv.hpp>#include <iostre ...

  • 【学术论文】基于最小二乘法与霍夫变换的虹膜定位算法

    摘要 为解决定位虹膜内外边缘时因轮廓信息不足会出现的定位不准确或者失败问题,提出一种采用霍夫变换与最小二乘法相结合的定位算法.首先使用形态学开操作减少图像中孤立的小点,并利用自适应阈值算法二值化图像: ...

  • 8种用于前列腺增生中成药,改善尿无力,尿滴沥

    正确认识前列腺增生 天津中医药大学第一附属医院男科主任耿主任曾在采访中表示,前列腺是男人的"生命腺",一半以上的成年男性都会遭遇到前列腺问题.有相关数据说明,前列腺疾病患病率为61 ...

  • 9种用于补肾的中成药。建议收藏

    9种用于补肾的中成药。建议收藏

  • 一种用于治疗脱发的酊剂.pdf

    <一种用于治疗脱发的酊剂.pdf>由会员分享,可在线阅读,更多相关<一种用于治疗脱发的酊剂.pdf(4页珍藏版)>请在专利查询网上搜索. 1.(10)申请公布号 (43)申请公 ...

  • 9种用于痔疮的中成药!建议收藏

    痔疮是一种常见的肛肠疾病,发病率较高,一般女性较男性多发,所以有"十女十痔"的夸张说法.痔疮一旦发作,会造成瘙痒,便血,还可能有剧烈的坠痛,给患者的工作生活都带来了极大的不便.那么 ...

  • 10种用于慢性胃炎,改善胃脘疼痛、反酸、嗳气的中成药

    最近咨询胃病的朋友够多,尤其是慢性胃炎,本病为慢性胃黏膜炎症,临床十分常见,主要症状有上腹胀满.反酸.嗳气,纳差和上腹隐痛等症状.一般无明显规律性,进食后加重.胃黏膜糜烂时出现大便潜血阳性,黑便甚至血 ...

  • 8种用于失眠、睡眠障碍的中成药,值得转发收藏

    失眠是指睡眠时间.深度的不足,可以表现为睡眠减少,难以入睡或睡而易醒,醒后难以入睡或彻夜难眠.随着社会生活步伐的加快,睡眠环境的复杂化,睡眠障碍成了困扰很多人的难题,因此对失眠的病因的研究及治疗也成了 ...

  • 9种用于帕金森病,改善震颤,运动迟缓,肌强直的中成药

    帕金森病,以黑质多巴胺能神经元变性缺失和路易小体形成为病理特征,其主要的生化改变为纹状体区多巴胺递质降低,好发人群以中老年人为主,临床特征为静止性麻痹.运动迟缓.肌强直和姿势步态异常,以早期发现.早期 ...

  • 8种用于抑郁症中成药,可改善情绪低落,预防复发

    有数据表明全世界有超过三千万人患上各种程度的抑郁症.那么,你是否真的了解抑郁症?抑郁症是一种情感障碍,以心境低落为主.现代社会人人都有压力,连小学生都有竞争压力和升学压力,不难想象拼搏职场的年轻人,要 ...

  • 十二种用于鼻炎的中成药

    鼻炎是一种很常见的疾病,过敏性鼻炎,慢性鼻窦炎,鼻息肉等引起的打喷嚏.流鼻涕.鼻塞等症状,对于久治不愈的患者,确实带来很大的困扰.鼻炎分为轻.中.重症,鼻炎患者应该在医生的指导下规范用药,有的慢性鼻炎 ...