霍夫变换(一)霍夫线性变换

摘要:
霍夫变换(一)线性霍夫变换概述:霍夫变换是图像处理中的一种特征提取技术。在该过程中,通过计算作为霍夫变换的结果的参数空间中的累积结果的局部最大值,获得符合特定形状的集合。霍夫线变换和霍夫圆变换。多尺度hough变换是经典hough变换在多尺度上的变体。累积概率霍夫变换算法是标准霍夫变换方法的改进。它在一定范围内执行霍夫变换,以计算各个线段的方向和范围,从而减少计算量并缩短计算时间。
霍夫变换(一)线性霍夫变换

概述:霍夫变换(Hough Transform)是图像处理中的一种特征提取技术,该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍夫变换结果。霍夫线变换和霍夫圆变换两种。

霍夫线变换:

  1. OpenCv中的霍夫线变换:

<1>标准霍夫变换(StandardHough Transform,SHT),由HoughLines函数调用。

<2>多尺度霍夫变换(Multi-ScaleHough Transform,MSHT),由HoughLines函数调用。

<3>累计概率霍夫变换(ProgressiveProbabilistic Hough Transform,PPHT),由HoughLinesP函数调用。

多尺度霍夫变换(MSHT)为经典霍夫变换(SHT)在多尺度下的一个变种。累计概率霍夫变换(PPHT)算法是标准霍夫变换(SHT)算法的一个改进,它在一定的范围内进行霍夫变换,计算单独线段的方向以及范围,从而减少计算量,缩短计算时间。

  1. 霍夫线变换的原理

【1】众所周知, 一条直线在图像二维空间可由两个变量表示. 如:

<1>在笛卡尔坐标系: 可由参数: 斜率和截距(m,b) 表示。

<2>在极坐标系: 可由参数: 极径和极角表示。

 

 霍夫变换(一)霍夫线性变换第1张

对于霍夫变换, 我们将采用第二种方式极坐标系来表示直线. 因此, 直线的表达式可为:

 霍夫变换(一)霍夫线性变换第2张

化简便可得到:

 霍夫变换(一)霍夫线性变换第3张

【2】一般来说对于点, 我们可以将通过这个点的一族直线统一定义为:

 霍夫变换(一)霍夫线性变换第4张

这就意味着每一对代表一条通过点的直线。

【3】如果对于一个给定点我们在极坐标对极径极角平面绘出所有通过它的直线, 将得到一条正弦曲线. 例如, 对于给定点X_0= 8 和Y_0= 6 我们可以绘出下图 (在平面):

 霍夫变换(一)霍夫线性变换第5张

只绘出满足下列条件的点  和   .

【4】我们可以对图像中所有的点进行上述操作. 如果两个不同点进行上述操作后得到的曲线在平面相交, 这就意味着它

们通过同一条直线. 例如,接上面的例子我们继续对点  和点  绘图, 得到下图:

 

 霍夫变换(一)霍夫线性变换第6张

这三条曲线在平面相交于点 (0.925, 9.6), 坐标表示的是参数对  或者是说点, 点和点组成的平面内的的直线。

 

【5】以上的说明表明,一般来说, 一条直线能够通过在平面  寻找交于一点的曲线数量来检测。而越多曲线交于一点也就意味着这个交点表示的直线由更多的点组成. 一般来说我们可以通过设置直线上点的阈值来定义多少条曲线交于一点我们才认为检测到了一条直线。

【6】这就是霍夫线变换要做的. 它追踪图像中每个点对应曲线间的交点. 如果交于一点的曲线的数量超过了阈值, 那么可以认为这个交点所代表的参数对在原图像中为一条直线。

  1. 3.       void HoughLines(InputArray image, OutputArray lines, double rho, double theta, int threshold, double srn=0, double stn=0 )

l   第一个参数:8位单通道二进制图像。

l   InputArray类型的lines,经过调用HoughLines函数后储存了霍夫线变换检测到线条的输出矢量。每一条线由具有两个元素的矢量表示,其中,是离坐标原点((0,0)(也就是图像的左上角)的距离。 是弧度线条旋转角度(0~垂直线,π/2~水平线)

l   Rho,直线搜索时的进步尺寸的单位半径;以像素为单位。

l   Theta:直线搜索时的进步尺寸的单位角度;以弧度为单位,

l   第五个参数:Threshold:累加参数和的阈值,即是只有某条直线上识别到的点大于这个阈值的时候才能被返回带结果中去。

l   第六个参数:srn 默认值为0.对于多尺度的霍夫变换,这是第三个参数rho的除数距离,粗略的累加器的进步尺寸是rho,而精确的累加器的进步尺寸为rho/srn.

l   第七个参数:stn 默认值为0,对于多尺度的霍夫变换,这是第三个参数theta的除数距离,若有srn和stn同时为0 的时候就表示经典的霍夫变换,否则都应该为正数。

补充:

l  cvTclor();此函数可以实现图像类型的转化,一般在要求的函数需要哪种类型的传入图像时,使用这个函数进行处理就可以了。

l  CV_PI这个东西就是在OPENCV中表示1度的弧度制的值。

l  对于第二个参数的解释,用矢量结构vetor<vec2f> 来定义。其中若定义一个Line 对象,Line是一个二维矩阵,Line[i][0]表示第i个线段矢量的P值,Line[i][1]表示第i个线段矢量的θ值.

l  对于矢量的定义:使用vector<…>进行定义:例如定义一个4变量整形的矢量:vector<Vec4i>;定义一个2个变量的float的矢量为vector<Vec2f>.实际上vector是一个动态数组,当不知道使用多大内存时可以使用。应该理解为存在一种数据类型Vec4i,而vector的作用就是生成一个Vec4i的动态数组。Vector<vector<…>> a:表示定义的是…类型的二维数组a;

  1. void HoughLinesP(InputArray image, OutputArray lines, double rho, double theta, int threshold, double minLineLength=0, double maxLineGap=0 )

l   第一个参数:8位单通道二进制图像。

l  第二个参数:经过调用HoughLines函数后储存了霍夫线变换检测到线条的输出矢量。每一条线由具有四个元素的矢量(X1,X2,X3,X4)表示,其中(X1,Y1)和(X2,Y2)是每个检测到的线段的结束点。

l   Rho,直线搜索时的进步尺寸的单位半径;以像素为单位。

l   Theta:直线搜索时的进步尺寸的单位角度;以弧度为单位,

l   第五个参数:Threshold:累加参数和的阈值,即是只有某条直线上识别到的点大于这个阈值的时候才能被返回带结果中去。

l   第六个参数:minLineLength 默认值为0,表示最低线段的长度,比这个设定参数短的线段就不能被显现出来。

l   第七个参数:maxLineGap 默认值为0 允许将同一行的点连接起来的最大距离。

免责声明:文章转载自《霍夫变换(一)霍夫线性变换》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[原创]django+ldap+memcache实现单点登录+统一认证有哪些好笑的关于程序员的笑话下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

AI人脸识别的测试重点

最常见的 AI应用就是人脸识别,因此这篇文章从人脸识别的架构和核心上,来讲讲测试的重点。 测试之前需要先了解人脸识别的整个流程,红色标识代表的是对应AI架构中的各个阶段 首先是人脸采集。 安装拍照摄像设备之后,需要在动态的场景与复杂的背景中判断是否存在人脸,并分离出这种面像。然后采集到人脸的照片。   因此采集过程是非常重要的,一需要能够采集到内容,二...

ArcGIS中地图导出格式比较(转)

转自:http://blog.sina.com.cn/s/blog_6438c8360101eqfx.html 有人问过这样的问题,用于出挂图的地图格式应该怎么选择?熟悉ArcGIS的用户都知道,ArcGIS支持打印导出的地图格式有很多,但它们之间也有所差异,在不同应用情况下要选择更加适合的格式,所以这里就做个详细的介绍。 1、如何导出地图 使用ArcMa...

人脸识别评价算法指标

首先了解相关指标名称 误识率FAR false acceptance rate FAR=NFA/NIRA NIRA是类间测试次数(假冒者尝试的总次数),NFA是错误接收次数 FAR越低,假冒者被接受的可能性越低,系统安全性越高 误拒绿FRR false rejection rate FRR=NFR/NGRA NGRA是类内测试次数(合法用户尝试的总次数),...

Linux 内存回收机制

内存回收 内存资源紧张会导致内存回收和 OOM 杀死进程。 内存回收,也就是系统释放掉可以回收的内存,比如缓存和缓冲区,就属于可回收内存。它们在内存管理中,通常被叫做文件页(File-backed Page)。 大部分文件页,都可以直接回收,以后有需要时,再从磁盘重新读取就可以了。而那些被应用程序修改过,并且暂时还没写入磁盘的数据(也就是脏页),就得先写入...

(十)WebGIS中地理坐标与屏幕坐标间的转换原理

 文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/。 1.前言 地图本身是拥有坐标的,一般可以大致分为平面坐标和经纬度坐标,在这里我们统称为地理坐标,比如北京,(115.9°E ,39.6°N)和(506340,304400)均是其地理坐标,只是表示形式不同而已。 我们在上一章讲...

Halcon斑点分析BlobAnalysis解析

斑点分析的算法非常简单:在图像中,相关对象的像素(也称为前景)通过其灰度值来识别。例如,图中示例显示了液体中的组织颗粒。这些粒子是明亮的,液体(背景)是暗的。通过选择明亮的像素(阈值),可以很容易检测到颗粒。在许多应用中,暗像素和亮像素的简单条件不再成立,但结果相同可以通过额外的预处理或像素选择/分组的替代方法来实现。 在这种情况下,斑点分析的优点是HAL...