




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、西南交通大学本科课程设计课程设计报告题 目 基于Hough变换的直线检测程序专业电子信息工程班级电子2013-02班学号姓名指导教师电气工程学院二一六年九月至 二一六年十二月课程设计任务书学生姓名学生学号学生专业电子信息工程学生班级电子 2013-02发题日期2016年8月29日完成日期2016年12月18日课程名称数字图像处理指导教师设计题目基于Hough变换的直线检测程序课程设计主要目的:学习图像视频处理的基础知识,掌握图像视频处理的基本算法,熟悉VC+和OpenCV 编程技术,培养基本的图像视频处理的应用能力。课程设计任务要求:(包括原始数据、技术参数、设计条件、设计要求等)学习图像视频
2、处理的基础知识和基本方法,研究Hough变换的基本原理和技术,采用VC+和OpenCV技术编程实现直线检测程序,实现对图像中的直线进行检测。课程设计主要任务:1、学习图像视频处理的基础知识和基本方法;2、研究Hough变换的基本原理和技术; 3、学习VC+和OpenCV编程技术;4、实现对图像中的直线进行检测的程序。课程设计进度安排:(共16周)骨口. 序号内容安排时间时间1学习图像视频处理的基础知识和基本方法2周2研究Hough变换的基本原理和技术4周3学习VC+和OpenCV编程技术4周4实现对图像中的直线进行检测的程序4周5撰写课程设计报告2周课程设计参考文献:刘瑞祯,于仕琪 OpenC
3、V教程一一基础篇.北京航空航天大学版社,2007.OpenCV 中文网站(/)指导教 师签字系主任审 核签字直线检测是图像处理中一个特别重要的研究课题,作为图像分割处理的基础。在 图像处理领域,直线特征经常是被用于高层处理,所以直线检测对于数字图像处理有 着重要的意义。同时在图像处理中,对直线的识别和定位也是很重要的。例如在工程 项目上经常要进行直线检测,对直线物体或图标进行模式识别和定位。图像处理是人 类视觉延伸的重要手段之一,可以达到使人们看到任意波长所测得的图像的目的。图像处理是使用计算机对图像进行分析,以达到所需结果的技术,因而又称影像处理。 图像处理一般指数字图像处理。数字图像是指用
4、数字摄像机、扫描仪等设备经过采样 和数字化得到的一个大的二维数组,该数组的元素称为像素,其值为一整数,称为灰 度值.图像处理技术的主要内容包括图像压缩,增强和复原,匹配、描述和识别3个部分。数字图像处理技术发展很快,给定形状图像的检测问题也是各种工程事项中经 常碰到的一类问题,类直线形状图形的检测是其中主要的一类。本文给出Hough变换的基本原理。针对图像空间的直线检测问题,提出基于Hough变换的检测算法。 关键词:Hough变换;边缘检测;直线检测第II页目录 TOC o 1-5 h z HYPERLINK l bookmark8 o Current Document 第一章绪论 1 HY
5、PERLINK l bookmark10 o Current Document 1.1数字图像处理与直线检测 1 HYPERLINK l bookmark12 o Current Document 1.1.1图像工程 1 HYPERLINK l bookmark14 o Current Document 1.1.2数字图像处理 2 HYPERLINK l bookmark16 o Current Document 1.2图像检测技术发展历史及现状 5 HYPERLINK l bookmark18 o Current Document 1.3直线检测课题存在的问题 6 HYPERLINK l b
6、ookmark20 o Current Document 第二章编程工具和环境搭建 7OpenCV 7Microsoft Visual Studio 8 HYPERLINK l bookmark22 o Current Document 2.3环境搭建 9 HYPERLINK l bookmark24 o Current Document 2.3.1 安装 OpenCV 9 HYPERLINK l bookmark26 o Current Document 2.4 Ope nCV常用数据结构用法介绍 11 HYPERLINK l bookmark28 o Current Document 第三
7、章直线检测算法的实现 13 HYPERLINK l bookmark30 o Current Document Hough 变换 13 HYPERLINK l bookmark32 o Current Document Hough变换原理 13 HYPERLINK l bookmark34 o Current Document 3.3基于Hough变换的直线检测的实现 14 HYPERLINK l bookmark36 o Current Document 3.3.1直线检测的流程 15 HYPERLINK l bookmark38 o Current Document 3.3.2直线检测算法
8、分析 15 HYPERLINK l bookmark40 o Current Document 3.3.3函数分析 16 HYPERLINK l bookmark42 o Current Document 3.3.4显示程序运行的结果 17 HYPERLINK l bookmark44 o Current Document 第四章结论 18 HYPERLINK l bookmark46 o Current Document 参考文献 19 HYPERLINK l bookmark48 o Current Document 附录 20第III页西南交通大学本科课程设计第 页第一章绪论1.1数字图
9、像处理与直线检测1.1.1图像工程图像工程是将图像技术发展过程中出现的各种新理论、新方法、新技术、 新设备等进行综合研究和集成应用的一个整体框架,科分为3个层次:(1) 图像处理(Image Processing)强调在图像之间进行一定程度地变换,功能上主要是满足对图像进行加工 处理以达到改善图像的视觉效果并为自动识别做好铺垫,或对图像进行压缩编 码以减少所需存储空间和时间、传输通路的要求。(2)图像分析(Image Analysis)图像分析是指对图像中感兴趣的目标进行检测和测量,以获得目标的客观 信息从而建立对图像的描述。图像分析是一个从图像到数据的过程。这里的数 据可以是对目标特征测量的
10、结果,或是基于测量的符号表示,其主要是以观察 者为中心研究客观世界。图像分析是图像工程中层的操作,分割和特征值提取 把原来以像素描述的图像转变为比较简单的非图形式的描述。(3) 图像理解(Image Understanding )图像理解进一步研究图像中各目标的性质和它们之间的相互联系,并得出 对图像内容含义的理解以及对原来客观场景的解释,从而指导和规划行动。图 像理解在一定程度上是以客观世界为中心,借助知识、经验等来把握整个客观 世界(包括没有直接观察到的事物)。图像理解是处于图像工程最高层的操作,基本上是对从描述抽象出来的符号进行运算,其处理过程和方法与人类的思维 推理可以有许多类似之处。
11、本次课程设计直线段的检测属于图像分析阶段,对其研究的意义在于:直 线段是图像的基本组成元素,任何图形微观上都是由直线段组成:直线段的检 测为图像分析阶段中更高层的处理诸如目标的表达提取和识别提供数据支持, 它的影响可以达到图像理解阶段。在实际应用中,道路识别、建筑物识别、医学图像分析、航空和卫星图像分析等领域都需要借重于直线检测技术。1.1.2数字图像处理数字图像处理(Digital Image Processing )又称为计算机图像处理,简单的 说就是将图像信号转换成数字信号并利用计算机进行处理的过程。数字图像处理常用方法有以下几个方面:(1 )图像变换:由于图像阵列很大,直接在空间域中进
12、行处理,涉及计算 量很大。因此,往往采用各种图像变换的方法,如傅立叶变换、沃尔什变换、 离散余弦变换等间接处理技术,将空间域的处理转换为变换域处理,不仅可减 少计算量,而且可获得更有效的处理(如傅立叶变换可在频域中进行数字滤波 处理)。新兴研究的小波变换在时域和频域中都具有良好的局部化特性,它在图像处理中也有着广泛而有效的应用。(2)图像编码压缩:图像编码压缩技术可减少描述图像的数据量(即比特 数),以便节省图像传输、处理时间和减少所占用的存储器容量。压缩可以在不 失真的前提下获得,也可以在允许的失真条件下进行。编码是压缩技术中最重 要的方法,它在图像处理技术中是发展最早且比较成熟的技术。(3
13、)图像增强和复原:图像增强和复原的目的是为了提高图像的质量,如 去除噪声,提高图像的清晰度等。图像增强不考虑图像降质的原因,突出图像 中所感兴趣的部分。如强化图像高频分量,可使图像中物体轮廓清晰,细节明 显;如强化低频分量可减少图像中噪声影响。图像复原要求对图像降质的原因有一定的了解,一般讲应根据降质过程建立“降质模型”,再采用某种滤波方法,恢复或重建原来的图像。(4)图像分割:图像分割是数字图像处理中的关键技术之一。图像分割是 将图像中有意义的特征部分提取出来,其有意义的特征有图像中的边缘、区域 等,这是进一步进行图像识别、分析和理解的基础。虽然已研究出不少边缘提 取、区域分割的方法,但还没
14、有一种普遍适用于各种图像的有效方法。因此,对图像分割的研究还在不断深入之中,是图像处理中研究的热点之一。(5)图像描述:图像描述是图像识别和理解的必要前提。作为最简单的二 值图像可采用其几何特性描述物体的特性,一般图像的描述方法采用二维形状 描述,它有边界描述和区域描述两类方法。对于特殊的纹理图像可采用二维纹 理特征描述。随着图像处理研究的深入发展,已经开始进行三维物体描述的研 究,提出了体积描述、表面描述、广义圆柱体描述等方法。(7 )图像分类(识别):图像分类(识别)属于模式识别的范畴,其主要 内容是图像经过某些预处理(增强、复原、压缩)后,进行图像分割和特征提 取,从而进行判决分类。图像
15、分类常采用经典的模式识别方法,有统计模式分 类和句法(结构)模式分类,近年来新发展起来的模糊模式识别和人工神经网 络模式分类在图像识别中也越来越受到重视。应用工具数字图像处理的工具可分为三大类:第一类包括各种正交变换和图像滤波等方法,其共同点是将图像变换到其 它域(如频域)中进行处理(如滤波)后,再变换到原来的空间(域)中。第二类方法是直接在空间域中处理图像,它包括各种统计方法、微分方法 及其它数学方法。第三类是数学形态学运算,它不同于常用的频域和空域的方法,是建立在 积分几何和随机集合论的基础上的运算。由于被处理图像的数据量非常大且许多运算在本质上是并行的,所以图像 并行处理结构和图像并行处
16、理算法也是图像处理中的主要研究方向。数字图像处理的应用:(1)数字图像处理的典型应用:【图像压缩和传输(或者叫着图像通信也可以)】 (如:静态图像JPEG压缩标准;动态MPEG标准,电信上类似的标准是 H.264,娱乐上的MP4也属于这方面),主要研究内容是研发更有效的图像的编解码算法(现在 已经有很多硬件实现的编解码芯片了,具体性能指标和适用的标准不同);(2)生物识别为数字图像处理在【信息安全】领域的应用(包含指纹识别、虹膜识别、人脸识别等),当然交通系统使用的车牌识别也是类似的技术。通用模式是: 图像预处理(如去噪、增强等)+不变特征提取 +与特征库中特征进行匹配 =识别;生物医学工程方
17、面的应用数字图像处理在生物医学工程方面的应用十分广泛,而 且很有成效。除了 CT技术之外,还有一类是对医用显微图像的处理分析, 如红细胞、 白细胞分类,染色体分析,癌细胞识别等。此外,在 X光肺部图像增晰、超声波图像 处理、心电图分析、立体定向放射治疗等医学诊断方面都广泛地应用图像处理技术。【医疗影像处理】:CT成像,核磁共振MRI,超声,X线成像。主要研究内容:图像去噪,图像增强,图像识别,3维可视化等等(3)而真正集中了最先进软硬件数字图像处理的应用领域是:军事:首先图像数据类型上包含所有的成像频段能获取的影像(如无线电(雷达 成像)、红外、可见光、紫外、X线0 0 0你把电磁光谱拉开看就
18、明白),用声音回波来 成像也可以,如声纳。千万不要片面地理解图像就是可见光成像,那是人眼的局限。军事公安方面的应用在军事方面图像处理和识别主要用于导弹的精确末制导,各种侦察照片的判读,具有图像传输、存储和显示的军事自动化指挥系统,飞机、坦克 和军舰模拟训练系统等;公安业务图片的判读分析,指纹识别,人脸鉴别,不完整图 片的复原,以及交通监控、事故分析等。目前已投入运行的高速公路不停车自动收费 系统中的车辆和车牌的自动识别都是图像处理技术成功应用的例子。主要包含这些研究内容:目标捕获 目标锁定 目标跟踪(4)飞机遥感和卫星遥感技术中。许多国家每天派出很多侦察飞机对地球上有 兴趣的地区进行大量的空中
19、摄影。对由此得来的照片进行处理分析,以前需要雇用几 千人,而现在改用配备有高级计算机的图像处理系统来判读分析,既节省人力,又加快了速度,还可以从照片中提取人工所不能发现的大量有用情报。从60年代末以来,美国及一些国际组织发射了资源遥感卫星(如LANDSAT系列)和天空实验室(如SKYLAB ),由于成像条件受飞行器位置、姿态、环境条件等影响,图像质量总不是 很高。因此,以如此昂贵的代价进行简单直观的判读来获取图像是不合算的,而必须 采用数字图像处理技术。如 LANDSAT系列陆地卫星,采用多波段扫描器(MSS), 在900km高空对地球每一个地区以18天为一周期进行扫描成像,其图像分辨率大致
20、相当于地面上十几米或100米左右(如1983年发射的LANDSAT-4,分辨率为30m) o 这些图像在空中先处理(数字化,编码)成数字信号存入磁带中,在卫星经过地面站 上空时,再高速传送下来,然后由处理中心分析判读。这些图像无论是在成像、存储、 传输过程中,还是在判读分析中,都必须采用很多数字图像处理方法。现在世界各国都在利用陆地卫星所获取的图像进行资源调查(如森林调查、海洋泥沙和渔业调查、 水资源调查等),灾害检测(如病虫害检测、水火检测、环境污染检测等),资源勘察 (如石油勘查、矿产量探测、大型工程地理位置勘探分析等),农业规划(如土壤营养、水份和农作物生长、产量的估算等),城市规划(如
21、地质结构、水源及环境分析 等)。我国也陆续开展了以上诸方面的一些实际应用,并获得了良好的效果。在气象 预报和对太空其它星球研究方面,数字图像处理技术也发挥了相当大的作用。(5)通信工程方面的应用当前通信的主要发展方向是声音、文字、图像和数据 结合的多媒体通信。具体地讲是将电话、电视和计算机以三网合一的方式在数字通信 网上传输。其中以图像通信最为复杂和困难,因图像的数据量十分巨大,如传送彩色 电视信号的速率达100Mbit/s以上。要将这样高速率的数据实时传送出去,必须采用 编码技术来压缩信息的比特量。在一定意义上讲,编码压缩是这些技术成败的关键。除了已应用较广泛的熵编码、DPCM编码、变换编码
22、外,目前国内外正在大力开发研 究新的编码方法,如分行编码、自适应网络编码、小波变换图像压缩编码等。(6)工业和工程方面的应用在工业和工程领域中图像处理技术有着广泛的应用, 如自动装配线中检测零件的质量、并对零件进行分类,印刷电路板疵病检查,弹性力 学照片的应力分析,流体力学图片的阻力和升力分析,邮政信件的自动分拣,在一些 有毒、放射性环境内识别工件及物体的形状和排列状态,先进的设计和制造技术中采 用工业视觉等等。其中值得一提的是研制具备视觉、听觉和触觉功能的智能机器人, 将会给工农业生产带来新的激励,目前已在工业生产中的喷漆、焊接、装配中得到有 效的利用。(7)文化艺术方面的应用目前这类应用有
23、电视画面的数字编辑,动画的制作,电子图像游戏,纺织工艺品设计,服装设计与制作,发型设计,文物资料照片的复制 和修复,运动员动作分析和评分等等,现在已逐渐形成一门新的艺术-计算机美术。1.2图像检测技术发展历史及现状图像检测作为图像分析技术的一个研究内容,它也是伴随着数字图像处理的发展 而发展的。数字图像处理这门学科的形成也是和社会生产力发展的需要分不开。早期 的图像处理是由于通讯方面的要求而发展起来的,这就是本世纪20年代传真技术的发明和发展。其后,则是由于宇宙方面的要求,需要处理大量的宇宙探测器上拍摄下 来的不清楚的其他天体以及地球本身的照片。然而,图像处理技术的发展,远远突破 了这两个领域
24、,到今天,它已经广泛的应用到科学研究、工农业生产、军事技术、政 府部门、医疗卫生等许多领域,进一步推动着社会生产力的发展。图像检测是图像分析研究内容的一部分。目前,在图像分析领域已经有很大的发 展。图像分析是一种从一幅图像中通过自动的或半自动的方法提取图像尺寸、数据或 信息的方法。图像分析方法通常因图像分析系统最后的输出是数字而不是画面,使它 与其他类型的图像处理方法,如编码、恢复、放大等不同。图像分析源于经典的模式 识别方法,根据定义,分析系统并不局限于对一个固定数量类别的场景区域的分类, 而是更倾向于可设计成用于描述复杂场景。根据实现预测,该场景的种类可能是非常 多的和不确定的。目前,图像
25、分析领域主要包括形态学图像处理、边缘检测、图像特 征提取、图像分割、形状分析、图像检测和配准等几个方面的内容。1.3直线检测课题存在的问题Hough变换的原理是把在图像中对空间来说的直线检测问题通过转换变成 参数中对点的检测问题从而简单化整个检测流程。传统的Hough变换法首先是运算量大,由于对所有源像素点都要进行无差别的Houh转换运算,对像素较大的图像进行转换时相应的计算时间也太长。传统的Hough变换法最主要的缺陷在于它会将中断的直线无差别地连接起来,在某些场合有助于修补图像,但 是对源数据处理阶段会产生错误的数据,导致了与源图像的偏差。第二章编程工具和环境搭建2.1 Ope nCVOp
26、enCV 的英文全称为:Open Source Computer Vision Library.OpenCV是由Intel建立于1999年,现在是由 Willow Garage提供相应的支持。它 是一个基于BSD所授权许可的一个计算机视觉库,还提供 Python、Ruby、MATLAB 等语言接口,从而实现图像处理以及计算机视觉方面的通用算法。 :OpenCV用C+ 语言编写,它的主要接口也是 C+语言,但是依然保留了大量的C语言接口。该库也 有大量的Python, Java and MATLAB/OCTAVE (版本2.5)的接口。这些语言的API接口 函数可以通过在线文档获得。如今也提供对
27、于 C#,Ch, Ruby的支持。所有新的开发和算法都是用 C+接口。一个使用CUDA的GPU接口也于2010 年9月开始实现。其主要特点是开放C源码、基于In tel处理器指令集开发的优化代码、统一的结构和功能定义、强大的图像和矩阵运算能力、方便灵活的用户接口、支持MS-Windows 和Linux平台。作为一个基本的计算机视觉图像处理和模式识别的开源项目,OpenCV可以直接应用于很多领域,可以作为二次开发的理想工具。图3.1 OpenCV勺基本结构OpenCV主体分为五个模块,其中四个模块如图3-1所示。OpenCV的CV模块包 含基本的图像处理函数和高级的计算机视觉算法。ML是机器学习
28、库,包含一些基本 统计的分类和聚类工具。HighGUI包含图像和视频输入/输出的函数。CXCore包含 OpenCV的一些基本数据结构和相关函数。图3-1中没有包含CVAux模块,该模块中一般存放一些即将被淘汰的算法和函数(如基于嵌入式隐马尔可夫模型的人脸识别算法),同时还有一些新出现的实验性的 算法和函数。.OpenCv是一个包含了超过300个C函数的应用编程接口,它不依赖于 外部库,既可以独立运行,也可在运行时使用其它外部库。OpenCv中所有的算法都是基于封装于IPL的具有很高灵活性的动态数据结构,而且其中有一半以上的函数在设计及汇编时被1n to 1公司针对其所生产的处理器优化。.提供
29、了一些与诸如EiC、 Ch、MATLAB等其它语言或环境的接口,这些接口在其安装完之后位于安装目录 ope ncv /in terfaces下。不管对于商业的还是非商业的用途,Ope nCv都是完全免费的,其源代码完全开放,开发者可以对源代码进行修改,将自己设计的新类添加到库中, 只要设计符合规范,自己的代码也可以被别人广泛使用。OpenCV的主要特征有以下几个方面:(1)图像数据的操作(分配、释放、复制、设置和转换)(2)图像是视频的输入输出I/O (文件与摄像头的输入、图像和视频文件输出)。(3)矩阵和向量的操作以及线性代数的算法程序(矩阵积、解方程、特征值以及奇异值等)。(4)各种动态数
30、据结构(列表、队列、集合、树、图等)。(5)基本的数字图像处理(滤波、边缘检测、角点检测、采样与差值、色彩转换、形态操作、直方图、图像金字塔等)。(6)结构分析(连接部件、轮廓处理、距离变换、各自距计算、模块匹配、Hough变换、多边形逼近、直线拟合、椭圆拟合、Delau nay三角划分等)。(7) 摄像头定标(发现与跟踪定标模式、定标、基本矩阵估计、齐次矩阵估计、 立体对应)。(8)运动分析(光流、运动分割、跟踪)。(9) 目标识别(特征法、隐马尔可夫模型:HMM ).(10) 基本的GUI (图像与视频显示、键盘和鼠标事件处理、滚动条)。(11)图像标注(线、二次曲线、多边形、画文字)2.
31、2 Microsoft Visual StudioVisual Studio是微软公司推出的开发环境,Visual Studio可以用来创建 Windows平台下的应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和 Office 插件。作为一种开发环境它的出现大大降低了研究人员在设计代码开发程序中遇到的 困难,他们可以把主要精力放在实现软件的算法和思想上,而不是怎么用一种平台。自从诞生以来,Microsoft将大量的人力物力投入到改进其性能和扩展其功能的研 究上。Visual Studio97是最早的 Visual Studio版本。1998年,Microsoft发布了 Vis
32、ual Studio6.0所有的开发语言的开发环境版本均升 到 6.0.2005年,Visual Studio2005正式发布。.NET字眼从各种语言的名字中被抹去, 但 是这个版本的Visual Studio仍然还是面向.NET框架打的。这个版本的 Visual Studio 包含众多的版本,分别面向不同的开发角色。2007年,Microsoft发布了 Visual Studio2008在这个版本里面,最大的改动就是不 在支持JAVA。所以,JAVA还有J#都从这个版本中消失了。该软件将在本次课程设计中使用最新的版本Visual Studio2010,该版本支持最新的C+标准,并且增强了 I
33、DE,提高了编程的效率。同时它还对于Windows7具有极强的兼容性,可适应当前操作系统的发展趋势。正是因为这些特点,该软件的设计过 程是将它作为一个图片处理平台。2.3环境搭建2.3.1 安装 OpenCV在官网上下载VS2010对应的OpenC版本,随后进行下列操作进行安装程序:(1)双击下载完成的OpenCVE缩包进行解压操作%7-Zip selfextracting archiveExtract to:己守习-ExtractICancel图3-1 OpenC解压缩(2)在解压缩操作完成之后,开始环境变量的配置操作,进入“我的电脑”-“属性”-“高级系统设置”-“高级”-“环境变量”,双
34、击里面的“ PATH变量,将路径改成我们解压缩的OpenCV寸应的路径。变星名:坯境VB默认也 VC+目录VC+虫目说芳 曲并商 涔代码音営 丈可廻躺 HTML设计器 Office工辰 Windows査味迓广设富工具Win32v|包含彌11 cr X JE平舍卿显云収客的目录:图3-2 PATH环境变量的配置安装 Microsoft Visual 2008。打开VS2008,进入“工具”-“选项” -“VC+目录”,在显示以下内容的下拉框中点击“包含文件”,点击“新行”图表。创建三条路径,如下图所示:E:学 卑P pencvbuildinclu d eopen cv2 E:opencvtuil
35、 dinclu d eopen cv E;opencvbuil dJnc lude $VCIntallDirini:lLide1(VCInsta II Di r)allrnMincludeIfWin d owg SdkDir)in cl ude $(Framtwo rkS D KDi r) i rrrlude包酱目录生成g+亠氐且朗间.按垂包含更爭世曙径.与环境玉虽INCLUDE柜 met?图3-3包含文件的路径设置(5)在显示以下内容的下拉框中选择“库文件”,点击“新行”图标,创建一条路径如下图所示:项目锁誤方雲VB默认疽VC+目录3厦目辭第交本觸RIHTML跚謡Office IIWin32
36、*库姑V/ tf X + +P:鬆帶闪醐目剥S):E:俘习询 pefiLYbuild祸 64;xl Ollib $畑和喻fibJ(VCInstallDir)atlinfc)ib $(VGnsta IDirjailmfclibi396$(WindinKSdkDiifyibJ(Fram&NorkSDKDirl ib FiVSbmllDid $(V】H5 扫 IlDirWb图3-4库文件路径的设置(6)新建一个OpenCVT程,进行局部配置配置成功2-4 Ope nCV常用数据结构用法介绍(1)CVCreatelmage 函数函数CVCreatelmage的作用是创建首地址并分配存储空间。函数的定义
37、为:Ipllmage* cvCreatelmage( CvSize size, int depth, int channels ); 其中size指代的是图像的宽和高,即我们通常所说的图片的像素;depth是图像元素的位深度,即图像中一个像素所占的内存空间的大小,depth取值范围有:IPL_DEPTH_8U(无符号8位整型)、IPL_DEPTH_8(有符号8位整型)、 IPL_DEPTH_16U(无符号16位整型)、IPL_DEPTH_16S(有符号16位整型)、 IPL_DEPTH_32S有符号 32 位整型)、IPL_DEPTH_32F单精度浮点数)和 IPL_DEPTH_64F(双精度
38、浮点数);channels代表的是每个元素的通道数。(2)IplImage由于OpenCV主要针对的是计算机视觉方面的处理,因此在函数库中,最重要的结构体是 IplImage 结构。IplImage 结构来源于Intel的另外一个函数库 In tel Image Processi ng Library (IPL),该函数库主要是针对图像处理。在该函数结构定义中会使用到 CVCreatImage.(3)CvMemStorage为opencv库中的函数,需要的头文件是 highgui.h。用来创建一个内存存储器,来统一管理各种动态对象的内存。函数返回一个新创建的 内存存储器指针。参数block_s
39、ize对应内存器中每个内存块的大小,为 0时内存块默 认大小为64k。 cvHoughLi nes2此函数是opencv图像变换函数中的一个,主要用来访问霍夫变换的两个算法一 标准霍夫变换(SHT和累计概率霍夫变换( PPHT。(5) cvShowImage该函数为开放计算机视觉(OpenCV)库库函数,用来在在指定窗口中显示图像.函数 cvShowImage在指定窗口中显示图像。如果窗口创建的时候被设定标志 CV_WINDOW_AUTOSIZE,那么图像将以原始尺寸显示;否则,图像将被伸缩以适 合窗口大小. cvCa nnycvCanny,开放计算机视觉(OpenCV)库库函数之一,用于对图
40、像的边缘检测 保用canny 算法)。函数cvCanny采用Canny算法发现输入图像的边缘而且在输出图像中标识 这些边缘。threshold1和threshold2当中的小阈值用来控制边缘连接,大的阈值用来 控制强边缘的初始分割。(7)cvCvtColor色彩空间转换 void cvCvtColor( const CvArr* src, CvArr* dst, int code ); src:输入的 8-bit, 16-bit或32-bit单倍精度浮点数影像。 dst:输出的8-bit , 16-bit或32-bit单 倍精度浮点数影像。第三章 直线检测算法的实现Hough 变换Hough变
41、换(霍夫变换)是图像变换中的一个经典手段。主要用来从图像中分离 出来具有某种相同特征的几何形状(比如,直线,圆,矩阵)。在检测直线的方面来说Hough变换比检测圆要更好的减少噪声干扰。基本的原理是利用图像全局特性而将 边缘像素连接起来组成区域封闭边界的一种方法。在预先知道区域形状的条件下,利 用Hough变换可以方便地得到边界曲线而将不连续的像素边缘点连接起来。Hough变换的主要优点是受噪声和曲线间断的影响小。利用Hough变换可以直接检测某些已知形状的目标,如直线。Hough变换原理Hough变换的基本思想是点线的对偶性。一方面图像空间中共线的点对应在参数 空间里相交的线:另一方面,在参数
42、空间中相交于同一个点的所有直线在图像空间里 都有共线的点与之对应。因此Hough变换把图像空间中的直线检测问题转换到参数空 间中对点的检测问题,通过在参数空间里进行简单的累加统计完成检测任务。如果参 数空间中使用直线方程,当图像空间直线斜率为无穷大时,会使累加器尺寸和变很大, 从而使计算复杂度过大。为解决这一问题,采用直线极坐标方程,变换方程如下:二x cos J ysin 二(3-1 )根据这个方程,原图像空间中的点对应新参数空间中的一条正弦曲线,即点正弦曲线对偶。检测直线的具体过程就是让9取遍可能的值,然后计算p的值,再根据9和p的值对累加数组累加,从而得到共线点的个数。下面介绍9和p取值
43、范围的确定。设被检测的直线在第一象限,右上角坐标为(m,n),则第一象限中直线的位置情况如下图2-1所示:(a)检测位置图一图3-1(b)检测位置图二由图可见,当直线从与x轴重合处逆时针旋转时,9的值开始由0增大,直到180, 所以9的取值范围为0-180.由直线极坐标方程可知:匸二、.x2 y2 sin(r :)(3-2)由9、p的取值范围和它们的分辨率就可以确定累加器的大小,从而检测直线。整个直线检测算法流程如下图所示:3.3基于Hough变换的直线检测的实现图3-2直线检测流程图3.3.1直线检测的流程基于Hough的直线检测流程图如上所示:读取待检测图像图像预处理并使用Canny算子对
44、待检测图像进行边缘检测对边缘检测的输出图像进行霍夫变换统计概率霍夫变换显示原始图像和检测到的直线结束3.3.2直线检测算法分析(1)读取待检测图像利用OpenCV中的函数CVLoadlmage可以载入指定图像,然后可以将待处理图像以houghlines.exe .building.jpg的形式写成TXT文件,然后转为bat文件,进而可以进行批量操作方便用户处理。使用函数为 if( argc = 2 & (src=cvLoadlmage(argv1, 0)!= 0)(2)图像预处理并进行边缘检测在使用Hough变换前需对图像进行图像预处理操作以满足Hough变换的要求,这一部分操作可以决定直线检
45、测系统的稳定性。进行图像灰度化处理,利用 cvCvtColor函数可以将图像由彩色转为灰度。使用语句为:cvCvtColor( dst, color_dst, CV_GRAY2BGR )。边缘检测,使用 Canny算子来对待处理图像进行边缘检测。使用语句为:cvCa nny( src, dst, 50, 200, 3 )。(3)使用Hough变化来进行直线检测在直线检测中要用到的函数是 CVHoughLines2得到的结果是lines,而lines 其中的元素是由两个元素组成的子向量(rho, theta),所以lines的访问方式类似二 维数组。CVHoughLines2 的 函数原型为 C
46、vSeq* cvHonghLines2(CvArr* image,void* line_storage,int mehtod,double rho,double theta,int threshold,double param1 =0,double param2 =0);参数说明:Image:输入8-比特、单通道(二值)图像,当用CV_HOUGH_PROBABILIS方法 检测的时候其内容会被函数所改变。Li ne_storage :检测到的线段存储仓。可以是内存存储仓(此种情况下,一个 线段序列在存储仓中被创建,并且由函数返回),或者是包含线段参数的特殊类型的 具有单行/单列的矩阵(CVMa
47、t*)。矩阵头为函数所修改,使得它的 cols/rows将包 含一组检测到的线段。如果line_storage 是矩阵,而实际线段的数目超过矩阵尺寸, 那么最大可能数目的线段被返回(线段没有按照长度、可信度或其它指标排序)。Method: Hough变换变量,是下面变量的其中之一。CV_HOUGH_STANDAF传统或标准Hough变换。每一个线段由两个浮点数(p , 9 )表示,其中p是直线与原点(0,0)之间的距离,9线段与x-轴之间的夹角。 因此,矩阵类型必须是CV_32FC2 type。CV_HOUGH_PROBABILISTI概率Hough变换(如果图像包含一些长的线性分害IJ,则效
48、率更高)。它返回线段分割而不是整个线段。每个分割用起点和终点来表 示,所以矩阵(或创建的序列)类型是 CV_32SC4CV_HOUGH_MULTI_SCAL传统Hough变换的多尺度变种。线段的编码方式与 CV_HOUGH_STANDAR一致。rho:以象素为单位的距离精度,一般取 1。theta:以弧度为单位角度精度,一般取CV_PI/180。Threshold :阈值参数。当在一条直线上的像素点数大于 threshold时,才将该 直线作为检测结果显示出来。该值越大,得到直线越少。(4)用函数cvNamedWindoW创建两个窗口并用函数 cvShowImage分辨显示源图 像和Hough
49、变换处理后的图像。3.3.3函数分析表3-1函数及其局部变量分析表编号返回 类型函数名功能局部变量编号变量类型变量名作用1intmai n主函数1intargc参数数量2char*argv参数指针3IplImage*src源图像4IplImage *gray检测图像的灰度形 式存储5CvMemstorage*storage动态内存存储器2voidCVShowImage显示检测结果1IplImage*Color dst显示画线图像2IplImage*Src源图像3charsource显示变换后图像4charHough显示画线图像3Ipllmage* cvCreateMemStorage创建内存存
50、储器4Ipllmage*cvCreateImage创建图像intcvGetSize ( src)获取源图像尺寸6VoidCVCa nny图像边缘1IplImage*srcr源图像检测2IplImage*dst目的图像7VoidCVCvtColor颜色空间1IplImage*tsrc源图像转换函数2IplImage*dstp目的图像8Cvseq*CVHoughLi nes2Hough直线1IplImage*Color dst显示画线图像检测2CVMemStorage*storage内存9intcvNamedWi ndow创建窗口1charsource源图像窗口2charHough变换后窗口334
51、显示程序运行结果(a)原始图像图3-3 (b)直线检测程序结果显示第四章结论数字图像处理这一技术应用特别广泛,本次课程设计是基于 Hough变换的直线检测,主要是研究Hough变换在图像检测方面的应用。在实际的图像检测方面,对于一幅数字图像进行定形状图形的检测, 需要对二进制的图像进行图像分析,其中包括: 形态学处理、图像分割、边缘检测,只有经过这些处理之后才可以进行图像的检测。 而在每一个处理过程中这些算法都是由一定地局限性,在显示结果图中,上方图像直 线检测比较清晰,检测比较成功,而位于图像下方的密集直线段检测就会出现漏掉或 者检测错误的情况。如何能够消除算法的局限性,能够成熟地运用这些算
52、法进行直线 检测,这还是需要我们以后继续学习的地方。在本次课程设计中,还有一个难点就是 在之前的OpenCV和VS2008的安装与环境配置中,由于对这方面知识太过于欠缺, 在配置过程会出现各种各样的问题。在这次的课程设计中最大的收获就是学习了 Hough变换,简单地知道了该变换在数字图像处理中是如何运用的,通过自学查资料 也对Hough变换和数字图像处理由不懂到懂, 既学习到了知识,也提高了自己的学习 能力和相关实践能力。参考文献刘瑞祯,于仕琪 OpenCV教程一一基础篇.北京航空航天大学版社,2007Bradski.G and Kachler.A .学习 OpenCV (中文版).于仕琪,刘瑞祯.清华 大学出版社,2009黎松,平西建,丁益洪.开放源代码的计算机视觉类库OpenCV的应用.计算机应用与软件.2005,22(8)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 西藏山南地区本年度(2025)小学一年级数学统编版期中考试(下学期)试卷及答案
- 2025届天津市滨海七所重点学校高三下学期第一次联考英语试卷含答案
- (光纤通信)职业技能鉴定四级模拟试题含参考答案
- 2025届黑龙江省牡东部地区四校联考高三考前热身英语试卷含解析
- 2025届河南省名校高三语文模拟题及答案
- 山东省德州市优高十校联考2024-2025学年高三下学期4月月考化学试题(原卷版+解析版)
- 海洋气象灾害社区防范考核试卷
- 电池制造与电动自行车充电桩考核试卷
- 纺织品企业供应链金融与风险管理考核试卷
- 白酒酿造技术与品质提升研究考核试卷
- 2025年高考语文第一轮复习:高考文言文阅读挖空练习高考语文文言文备考总复习(全国)
- DB13-T 5722-2023 医院感染应对策略与质量控制
- 2024秋期国家开放大学《公共政策概论》一平台在线形考(形考任务1至4)试题及答案
- 药剂科考试试题
- 湖北省华中师大第一附中2025届高考物理四模试卷含解析
- GB/T 44275.2-2024工业自动化系统与集成开放技术字典及其在主数据中的应用第2部分:术语
- 数独题目高级50题(后附答案)
- 口腔诊所消防安全工作管理制度
- 内蒙古鄂尔多斯市2020年中考英语试题(解析版)
- 变更劳动合同地址协议书
- Vue.js前端开发实战(第2版) 课件 第2章 Vue.js开发基础
评论
0/150
提交评论