基于hough变换的直线检测
利用Hough变换实现直线的快速精确检测

第13卷 第2期2008年2月中国图象图形学报Journal of I m age and GraphicsVol .13,No .2Feb .,2008收稿日期:2006204225;改回日期:2006210217第一作者简介:滕今朝(1970~ ),男,讲师。
2007年于海军航空工程学院获测试计量仪器与科学专业硕士学位。
主要从事电气自动化、检测技术方面的教学和研究。
E 2mail:t w rite@利用Hough 变换实现直线的快速精确检测滕今朝1) 邱 杰2)1)(威海职业学院机电工程系,威海 264210) 2)(海军航空工程学院,烟台 264000)摘 要 利用Hough 变换对直线进行检测,通常存在“速度缓慢、结果不够精确”的问题,本文提出了“分式查表法”,能在大幅度减少Hough 变换的总计算量的情况下,检测精度保持最高,从而使超大型图像中,直线的实时、精确检测成为可能。
关键词 Hough 变换 参数空间 精度 分式查表法中图法分类号:TP391.41 文献标识码:A 文章编号:100628961(2008)022*******Fa st and Prec ise D etecti on of Stra i ght L i n e w ith Hough Tran sformTE NG J in 2zhao 1),Q I U J ie2)1)(E lectro m echanical Engineering D epart m ent,W eihai V ocational College,W eihai 264210)2)(College of N avy A viation Engineering,Yantai 264000)Abstract Pr oble m s as l ow s peed or inaccurate results in the p r ocess of line detecti on with Hough Transf or m re main unsatisfact orily s olved .This paper puts f or ward a ne w l ook 2up table t o decrease the computati on distinctly and keep ing the highest p recisi on .It offers the possibility in real 2ti m e app licati ons es pecially in large i m age .Keywords Hough Transf or m,para meter s pace,p recisi on,table l ook 2up1 引 言Hough 变换具有优异的鲁棒性和极佳的抗干扰能力,利用Hough 变换进行直线检测,是图像分析和计算机视觉的一个重要内容。
实现用hough变换检测直线算法

通过这次MATLAB的学习,我对MATLAB有了一个基础的认识, MATLAB是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程的特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂程序(M文件)后再一起运行。在这短短的一周内从开始的一头雾水,到自己看书学习,到同学讨论,再进行整个题目的理论分析和计算,参考课程上的代码,写出自己的代码。
(3-1)
根据3-1公式,原图像空间中的点对应新参数空间中的一条正弦曲线,即点- 正弦曲线对偶。检测直线的具体过程就是让θ取遍可能的值,然后计算ρ的值,再根据θ和ρ的值对累加数组累加,从而得到共线点的个数。下面介绍θ和ρ取值范围的确定。设被检测的直线在第一象限,右上角坐标为( m, n) ,则第一象限中直线的位置情况如图3.1所示。
图3.1坐标位置
由图3.1可见,当直线从与x轴重合处逆时针旋转时,θ的值开始由0°增大,直到180°,所以θ的取值范围为0°~180°。由直线极坐标方程可知:
(3-1)
(3-2)
所以当且仅当x和y都达到最大且θ+Φ=±90°时(根据<来调整θ的值)
(3-3)
,
即ρ取值范围 。
由θ、ρ的取值范围和它们的分辨率就可以确定累加器的大小,从而检测直线。
figure();
subplot(2,2,1);imshow(o);title('原图'); %% 提取图像边缘
[m,n]=size(f);%得到图像矩阵行数m,列数n
fori=3:m-2
for j=3:n-2%处理领域较大,所以从图像(3,3)开始,在(m-2,n-2)结束
l(i,j)=-f(i-2,j)-f(i-1,j-1)-2*f(i-1,j)-f(i-1,j+1)-f(i,j-2)-2*f(i,j-1)+16*f(i,j)-2*f(i,j+1)-f(i,j+2)-f(i+1,j-1)-2*f(i+1,j)-f(i+1,j+1)-f(i+2,j);%LoG算子
Hough变换检测直线

Hough 变换检测直线实验报告一,实验要求用hough 算法检测图像中的直线算法。
使用这一算法来求一幅图像中的所有大于规定长度的直线段,设规定的长度为20点。
二,Hough 变换简介Hough 变换是图像处理中从图像中识别几何形状的基本方法之一。
Hough 变换的基本原理在于利用点与线的对偶性,将原始图像空间的给定的曲线通过曲线表达形式变为参数空间的一个点。
这样就把原始图像中给定曲线的检测问题转化为寻找参数空间中的峰值问题。
图1 Hough 变换)sin(sin cos 00θαθθρ+=+=A y x如上图所示,在图像空间,直线上一点),(00y x 转换到参数空间就是一条曲线,而且,图像空间同一直线上的点转换到参数空间的曲线一定相交于一点,即参数空间各曲线的交点对应着图像空间的一条直线,这样,检测参数空间曲线交点就检测出了图像空间的直线。
三,实验过程和结果分析用Hough 变换之前, 首先要对图像进行边缘检测的处理,也即霍夫线变换的直接输入只能是边缘二值图像。
本实验基于VS2008和OPENCV 来实现。
实验的步骤如下:(1)读入图像,转换成灰度图像OPENCV 中用cvLoadImage 函数来读取图像,函数原型:IplImage* cvLoadImage( const char* filename, int flags=CV_LOAD_IMAGE_COLOR );filename :要被读入的文件的文件名(包括后缀);flags :指定读入图像的颜色和深度;例如:cvLoadImage( fileame, -n1 ); //默认读取图像的原通道数cvLoadImage( filename, 0 ); //强制转化读取图像为灰度图 cvLoadImage( filename, 1 ); //读取彩色图(2)进行边缘检测本实验选择Canny算子的边缘检测,OPENCV中用Canny函数来进行Canny 算子的边缘检测,函数原型为:void cvCanny( const CvArr* image, CvArr* edges, double threshold1, double threshold2, int aperture_size=3 );image:单通道输入图像edges:单通道存储边缘的输出图像threshold1 :第一个阈值threshold2 :第二个阈值aperture_size :算子内核大小3,对检测出的二值图像进行Hough变换OPENCV中用cvHoughLines2函数来进行Hough变换,函数原型为:CvSeq* cvHonghLines2(CvArr* image,void* line_storage,int mehtod,double rho,double theta,int threshold,double param1 =0,double param2 =0);Image:输入8-比特、单通道(二值)图像line_storage:检测到的线段存储仓Method:Hough 变换变量,是下面变量的其中之一CV_HOUGH_STANDARD ——传统或标准Hough 变换CV_HOUGH_PROBABILISTIC——概率Hough 变换CV_HOUGH_MULTI_SCALE ——传统Hough 变换多尺度变种Rho:以象素为单位的距离精度,一般取1Theta:以弧度为单位角度精度,一般取CV_PI/180Threshold:阈值参数,当在一条直线上的像素点数大于threshold时,才将该直线作为检测结果显示出来,该值越大,得到直线越少。
基于Hough变换的平行直线检测改进算法研究

测 改进 算 法 ,将 采 集 到 的 图像 进 行 二值 化 处理 ,再 使 用 Sb l 子 对 该二 值 化 图像进 行 边缘 检 测 , oe 算 对 边 缘 检 测 得 到 的 图像 进 行 H u h 变 换 和 峰 值 点 检 测 , 峰 值 点 得 到 直 线 段 图像 , 后 使 用 本 文 提 出的 og 由 最
Ho h r n f r ug ta s o m
LV M e g n
(ol e f If mao c ne n E g er g, asa U i ri , iha ga 6 0 4, hn ) C l g o n r t n S i c ad n i e n Y nh n n es y Qn u ndo 0 60 C ia e o i e n i v t
中 图 分 类 号 :T 3 14 P 9 .1 文 献 标 识 码 :A 文 章 编 号 :1 7 — 7 0 2 1 17 0 2 — 3 6 4 7 2 (0 0 1 — 0 7 0
Re e r h o he m p o e pa a ll i de e to ag rt m ba e o s ac f t i r v d r le l ne t c i n l o ih sd n
K y wo d e r s: Ho g r n fr l a al lln ee t n;t r s od v l e u h t s i ;p r l i e d tc i a ol e o h e h l a u
在 遥 感 图 像 中 , 江 河 上 桥 梁 目标 的 识 别 具 有 重 要 对 意 义 。 由 于 桥 梁 的 最 突 出特 征 在 于 桥 体 的 平 行 直 线 , 所
基于Hough变换的直线检测程序资料

课程设计报告题目基于Hough变换的直线检测程序专业电子信息工程班级电子2013-02班学号20131573姓名陈涛指导教师黄进电气工程学院二〇一六年九月至二〇一六年十二月课程设计任务书摘要直线检测是图像处理中一个特别重要的研究课题,作为图像分割处理的基础。
在图像处理领域,直线特征经常是被用于高层处理,所以直线检测对于数字图像处理有着重要的意义。
同时在图像处理中,对直线的识别和定位也是很重要的。
例如在工程项目上经常要进行直线检测,对直线物体或图标进行模式识别和定位。
图像处理是人类视觉延伸的重要手段之一,可以达到使人们看到任意波长所测得的图像的目的。
图像处理是使用计算机对图像进行分析,以达到所需结果的技术,因而又称影像处理。
图像处理一般指数字图像处理。
数字图像是指用数字摄像机、扫描仪等设备经过采样和数字化得到的一个大的二维数组,该数组的元素称为像素,其值为一整数,称为灰度值.图像处理技术的主要内容包括图像压缩,增强和复原,匹配、描述和识别3个部分。
数字图像处理技术发展很快,给定形状图像的检测问题也是各种工程事项中经常碰到的一类问题,类直线形状图形的检测是其中主要的一类。
本文给出Hough变换的基本原理。
针对图像空间的直线检测问题,提出基于Hough变换的检测算法。
关键词:Hough变换;边缘检测;直线检测目录第一章绪论 (1)1.1数字图像处理与直线检测 (1)1.1.1图像工程 (1)1.1.2数字图像处理 (2)1.2图像检测技术发展历史及现状 (5)1.3直线检测课题存在的问题 (6)第二章编程工具和环境搭建 (7)2.1 OpenCV (7)2.2 Microsoft Visual Studio (8)2.3 环境搭建 (9)2.3.1安装OpenCV (9)2.4 OpenCV常用数据结构用法介绍 (11)第三章直线检测算法的实现 (13)3.1 Hough变换 (13)3.2 Hough变换原理 (13)3.3 基于Hough变换的直线检测的实现 (14)3.3.1直线检测的流程 (15)3.3.2直线检测算法分析 (15)3.3.3函数分析 (16)3.3.4显示程序运行的结果 (17)第四章结论 (18)参考文献 (19)附录 (20)第一章绪论1.1 数字图像处理与直线检测1.1.1 图像工程图像工程是将图像技术发展过程中出现的各种新理论、新方法、新技术、新设备等进行综合研究和集成应用的一个整体框架,科分为3个层次:(1)图像处理(Image Processing)强调在图像之间进行一定程度地变换,功能上主要是满足对图像进行加工处理以达到改善图像的视觉效果并为自动识别做好铺垫,或对图像进行压缩编码以减少所需存储空间和时间、传输通路的要求。
旧电影中基于Hough变换直线划痕的检测

0引言直线划痕是旧电影中常见的现象,也是旧电影修复与保护中一项重要的研究内容。
旧电影的修复与保护是近些年图像研究领域一个新的研究方向,它主要是对原有的旧电影利用数字修复的方法来达到保护旧电影的目的,并通过该方法来保护和继承民族文化。
直线划痕是指影片在播放过程中瞬间出现垂直或水平条纹的现象。
当旧影片中存在直线划痕会使旧影片的视觉效果受到影响,为了使旧影片具有原版播放的视觉效果,必须正确地检测出直线划痕的位置信息,利用划痕邻域的图像信息通过修复算法修复划痕区域丢失的图像信息。
Timothy K.Shih 、LouisH.Lin 等人提出了一种利用空间特性检测垂直划痕的方法并取得了较好检测与修复效果[1],但根据单帧的图像信息会存在错误检测的问题。
Rong-Chi Chang 等人在2007年提出了一种利用相邻帧空时域特征的斑点检测与修复方法,该算法主要包括3个关键的步骤:在检测阶段中把图像分解为图像块并通过分析相邻块的灰度特征获得具有斑点性质的图像块;检测结果过滤阶段对检测到的结果通过噪声过滤方法获得目标斑点;修复阶段用相邻图像块的信息修复斑点区域[2]。
文中主要是利用霍夫变换的方法检测旧影片中的直线划痕,霍夫变换方法是由P.V Hough 在1959年提出的一种可靠的直线检测算法[3]。
为了准确地检测出旧影片中的直线划痕,在算法中考虑到了直线划痕的长度因素,剔除那些不符合条件的直线划痕。
1旧电影修复与保护中国的电影有着百年的历史,旧的影片记录了中国的文化和历史,这些影片中绝大多数是以胶片的形式保存的。
目前国家的档案影片主要是以胶片形式进行存储的,胶片在恒温恒湿等特定条件下,其影像可以完好保存百年以上[4]。
旧影片由于受胶片保存条件、胶片本身物理和化学性质的影响,旧影片播放时的视觉效果会明显的下降。
通常胶片影片都有额定的播放次数,如果影片的播放次数超过额定的播放次数,影片的观看效果也会明显的下降。
胶片影片的播放器械对胶片带也有一定的损坏作用,因此也会导致胶片影片的播放效果逐渐地下降。
数字图像中的Hough变换应用--直线检测

数字图像中的Hough变换应用--直线检测沈阳理工大学数字图像处理课程设计摘要为能够有效解决实时直线图形提取问题,提出了一种基于Hough变换(HT)的直线提取算法。
它所实现的是一种从图像空间到参数空间的映射关系。
由于具有一些明显优点和可贵性质,它引起了许多国内外学者和工程技术人员的普遍关注。
由于其根据局部度量来计算全面描述参数,因而对于区域边界被噪声干扰或被其他目标遮盖而引起边界发生某些间断的情况,具有很好的容错性和鲁棒性。
多年来,专家们对Hough变换的理论性质和应用方法进行了深入而广泛的研究,目前应用于生物医学、自动化和机器人视觉、空间技术和军事防御、办公自动化等各个方面。
本次课称设计首先分析了数字图像中直线边缘的三种结构特征,提出采用基元结构表示目标边缘点,并在约束条件下计算基元结构的基元倾角。
在此基础上,结合传统的HT的思想对基元结构进行极角约束HT,以获得最终的直线参数。
最后,再用MATLAB软件对该算法进行编程仿真。
实验结果表明,对合成图像和自然图像,该算法能够有效的识别图像中的直线段。
关键词:直线提取;Hough变换;MATLABI沈阳理工大学数字图像处理课程设计目录1. 课程设计的目的 ................................ 1 2. MATLAB简介及应用 (1)2.1 MATLAB简介 (1)2.2 MATLAB应用 (1)2.3 MATLAB特点 (2)3. Hough变换原理 (2)3.1 Hough变换的基本原理 (2)3.2 Hough变换的不足之处 (4)3.3 Hough变换的应用 (4)4. Hough变换检测直线设计 (5)4.1 Hough变换检测直线基本原理 (5)4.2 Hough变换的几种基本算法 (6)4.3 Hough变换算法的比较与选择 (7)4.4 Hough变换检测直线的算法流程图 (9)4.5 Hough变换检测直线算法的实现 (9)5. 仿真结果及分析 (11)5.1 仿真结果 (11)5.2 结果分析 (14)结论 ............................................ 15 参考文献 (16)II沈阳理工大学数字图像处理课程设计数字图像中的Hough变换应用——直线的检测1. 课程设计的目的本次课程设计的目的在于提高发现问题、分析问题、解决问题的能力,进一步巩固数字图像处理系统中的基本原理与方法。
hough变换检测直线原理

hough变换检测直线原理Hough变换是一种常用的图像处理算法,用于检测图像中的直线。
该算法的原理基于直线上的点在参数空间中具有唯一的特征,通过对参数空间的投票来检测直线。
Hough变换最初是由Paul Hough于1962年提出的,用于在图像中检测直线。
该方法的基本思想是将直线表示为参数空间中的一个点,而不是在图像中的像素点。
这样可以将直线检测问题转化为参数空间中的点集聚类问题,从而简化了直线检测的过程。
在Hough变换中,直线可以表示为参数空间中的两个参数:rho (ρ)和theta(θ)。
参数rho表示直线到原点的距离,而参数theta表示直线与x轴的夹角。
对于给定的图像点(x, y),可以通过以下公式计算rho和theta的值:rho = x * cos(theta) + y * sin(theta)在Hough变换中,我们需要创建一个二维的参数空间,其中rho 的范围为[-D, D],theta的范围为[0, 180°],D是图像对角线的长度。
然后遍历图像中的每个像素点,对每个像素点计算rho和theta的值,并在参数空间中对应的位置进行投票。
投票过程中,我们将参数空间中的每个点初始化为0。
对于每个图像点,如果它处于某条直线上,那么对应的参数空间中的点就会累加投票数。
最终,参数空间中投票数较高的点对应的直线就是我们要检测的直线。
为了提高算法的效率,通常会使用累加器数组来存储参数空间中的投票数。
累加器数组的大小根据参数空间的分辨率来确定,分辨率越高,算法的精度也就越高。
在累加器数组中,每个元素对应参数空间中的一个点,其值表示该点的投票数。
在实际应用中,Hough变换通常会与边缘检测算法结合使用,以便检测图像中的直线。
常用的边缘检测算法有Canny算法和Sobel 算法。
边缘检测算法可以将图像中的边缘点提取出来,从而减少了Hough变换的计算量。
Hough变换在计算机视觉和图像处理领域有着广泛的应用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(b)参数空间中相交于同一点的直线
图2
图像空间中的直线与参数空间中的点对偶性示意图
在计算过程中,为了便于通过累加和统计的方法, 找到参数空间中最大值点的位置,将参数空间进 一步划分为二维的累加器数组A[k][b]。二维累加 器数组的示意图如图3所示,其中[kmin,kmax]和 [bmin,bmax]分别为斜率和截距期望值的范围。
Hough变换介绍
Hough变换的概念是1962年Paul Hough提出来的,它利用图像空间和 参数空间的点-线对偶性,将图像空间 中具有一定关系的像素点在参数空间 中进行聚集,通过在参数空间进行简 单的累加和统计,找出参数空间中累 加器的峰值点,进而确定出图像空间 中特定几何特征的相关参数。
图像空间中的任意一个点映射到参数 空间中是一条直线,图像空间中位于 同一直线上的点映射到参数空间中是 一组相交于同一点的直线,反过来, 参数空间中相交于同一点的所有直线, 在图像空间中与之对应的是在同一直 线上的一组点。
实现效果
(a)原始图像
(b)检测出的直线图
但是,考虑到计算量的问题,要对图像进 行边缘检测和感兴趣区域的划分。
பைடு நூலகம்
原始图像
Roberts算子
Sobel算子
Guass-Laplace算子
在道路背景图像中车道线并没有占据整个 图像区域,而是在图像的下半部分,基于 这个特点,在进行车道线检测之前,先确 定出车道线的感兴趣区域,再对车道线感 兴趣区域进行处理,将大大减少计算量、 提高后续检测算法的精确度。
通过式(1)和式(2)可以看出,图像空间中的 任意一个点(x0,y0)对应于参数空间中的一条直线 b=-kx0+y0,而图像空间中的一条直线又是由参数空 间中的一个点(k0,b0)决定的。
(a)图像空间中的一个点
(b)参数空间中的一条直线
图1 图像空间中的点与参数空间中的直线对偶性示意图
(a)图像空间中位于同一直线上的点
建立一个直角坐标系作为图像平面的坐标系,在 图像空间X-Y中,共线的点可以用直线方程描述 为: y=kx+b (1 ) 其中k和b是直线的两个参数,分别表示直线的斜 率和截距。同时还可以将式(1)改写为: b=-xk+y (2 ) 式(2)可以看做是参数平面K-B中的一条直线, 其中x为直线的斜率,y为直线的截距。
本论文所确定的车道线感兴趣区域为图像的下1/3 部分。如下图所示,图像中虚线以下的部分为车 道线感兴趣区域,其中 ,Height为图像的高度, Width为图像的宽度,车道线感兴趣区域为 。
车道线感兴趣区域示意图
车道线检测效果图
图3
K-B参数空间中的二维累加器数组
确定图像空间中所有直线参数的具 体步骤如下:
(1) k和 b的量化数值如上所述,在堆内存中分配一个变换 域空间,即参数空间的变换域数组,并将其初始化为零; (2)读入一副图像,遍历整幅图像,判断每一个像素点是 否为黑点; (3)对每一个黑点,进行处理,按照 k和 b的量化数值在变 换域累加器数组中的相应位置上加1; (4)遍历累加器数组,每找到一个局部最大值,判断该局 部最大值是否大于所设置的阈值,若是,则将该最大值及 其位置存放在上述定义的数组的一个元素中,并将该局部 最大值附近的点清零,以便寻找下一个局部最大值,直到 遍历整个数组找到的最大值小于设置的阈值为止。