版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学位论文学号:ZK04107122系部:信息科学与工程学院专业:电子信息工程题目:数字图象分割处理的算法与研究导师:完成时间:二零零八年十二月摘要数字图像处理〔digitalimageprocessing〕是用计算机对图像信息进行处理的一门技术,使利用计算机对图像进行各种处理的技术和方法。20世纪20年代,图像处理首次得到应用。20世纪60年代中期,随电子计算机的开展得到普遍应用。60年代末,图像处理技术不断完善,逐渐成为一个新兴的学科。利用数字图像处理主要是为了修改图形,改善图像质量,或是从图像中提起有效信息,还有利用数字图像处理可以对图像进行体积压缩,便于传输和保存。数字图像处理主要研究以下内容:傅立叶变换、小波变换等各种图像变换;对图像进行编码和压缩;采用各种方法对图像进行复原和增强;对图像进行分割、描述和识别等。早期的图像处理的目的是改善图像的质量,它以人为对象,以改善人的视觉效果为目的。图像处理中,输入的是质量低的图像,输出的是改善质量后的图像,常用的图像处理方法有图像增强、复原、编码、压缩等。图像处理技术已经渗透到人类生活的各个领域并得到越来越多的应用,图像处理所涉及的图像格式有很多种,如TIF、JPEG、BMP等等,工程应用中经常要处理256级的灰度BMP图像,如通过黑白采集卡采集得到的图像。数字图像处理因易于实现非线性处理,处理程序和处理参数可变,故是一项通用性强,精度高,处理方法灵活,信息保存、传送可靠的图像处理技术。主要用于图像变换、量测、模式识别、模拟以及图像产生。广泛应用在遥感、宇宙观测、影像医学、通信、刑侦及多种工业领域。关键字:分割处理图像处理算法程序开发Abstract
Digitalimageprocessing(digitalimageprocessing)isacomputerimageontheinformationofadealwithtechnology,sothatthecomputerwasusedforavarietyofimageprocessingtechnologiesandmethods.
Inthe1920s,theimageprocessingappliedforthefirsttime.Themid-1960s,withthedevelopmentofthecomputertobewidelyused.Attheendofthe60s,andimageprocessingtechnologycontinuestoimprovegraduallybecomeanewsubject.Theuseofdigitalimageprocessingistoamendthegraphicstoimprovethequalityoftheimage,orimagesfromtheSino-effectivetobringinformation,andtheuseofdigitalimageprocessingofimagescanbecompressedsize,easytotransportandstorage.Digitalimageprocessingresearchthefollowing:Fouriertransform,wavelettransform,andsoonavarietyofimagetransformation;imageencodingandcompression;usingavarietyofmethodsforimagerestorationandenhancement;ontheimagesegmentation,suchasidentificationanddescription.
Earlyimageprocessingistoimprovetheimagequality,man-madeobjecttoitinordertoimprovethehumanvisualeffectsforthepurpose.Imageprocessing,importationoflow-qualityimages,theoutputistoimprovethequalityoftheimage,imageprocessingcommonlyusedmethodsofimageenhancement,restoration,encoding,compressionandsoon.Imageprocessingtechnologyhaspenetratedintoallfieldsofhumanlifeandanincreasingnumberofapplications,imageprocessinginvolvedtherearemanyimageformatssuchasTIF,JPEG,BMP,andsoon,engineeringapplicationsoftenhavetodealwith256grayDegreeofBMPimages,suchasthroughtheacquisitioncardcollectiontobeblackandwhiteimages.
Digitalimageprocessingandeasytoimplementasaresultofnon-linearprocessing,processingandhandlingofvariableparameters,itisahighuniversality,highaccuracyandflexibleapproach,thepreservationofinformation,reliabletransmissionofimageprocessingtechnologies.Forimagetransformation,measurement,patternrecognition,aswellasanalogimagesgenerated.Widelyusedinremotesensing,observationoftheuniverse,medicalimaging,communications,criminalinvestigationandavarietyofindustries.Keywords:divideupprocessingimageprocessingarithmetic
programdevelopment目录摘要 -2-第一章概述 -5-1.1数字图像处理的开展历史 -5-什么是数字图象处理 -5-1.1.2数字图像处理的根本特点 -6-1.2图像的格式和分类 -7-1.2.1
图像文件格式 -7-1.2.2
图像分类 -8-1.3数字图像处理的主要内容 -9-1.4课题实现的目标 -12-第二章软件工程和开发环境介绍 -13-2.1程序开发环境的介绍 -13-具体步骤 -13-2.2一般软件的开发方法 -17-2.3MFC开发的根底知识 -19-第三章图像分割的概述 -22-3.1图像分割的一般概念 -22-3.1.2图像目标分割与提取技术综述 -22-3.2图像分割的根本原理 -23-3.2.3灰度阈值法分割 -23-3.3罗伯特边缘算子 -24-3.4图像边缘检测 -26-第四章系统的设计与实现 -29-4.1写的外界环境要求 -29-系统的硬件配置 -29-系统软件配置 -29-4.2黑白图像分割 -29-黑白图像分割程序 -29-4.3彩色图像分割 -32-彩色图像分割程序 -32-总结 -36-系统展望 -36-致谢 -37-主要参考文献 -38-第一章概述1.1数字图像处理的开展历史什么是数字图象处理数字图像处理〔DigitalImageProcessing〕又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。数字图像处理最早出现于20世纪50年代,当时的电子计算机已经开展到一定水平,人们开始利用计算机来处理图形和图像信息。数字图像处理作为一门学科大约形成于20世纪60年代初期。早期的图像处理的目的是改善图像的质量,它以人为对象,以改善人的视觉效果为目的。图像处理中,输入的是质量低的图像,输出的是改善质量后的图像,常用的图像处理方法有图像增强、复原、编码、压缩等。首次获得实际成功应用的是美国喷气推进实验室〔JPL〕。他们对航天探测器徘徊者7号在1964年发回的几千张月球照片使用了图像处理技术,如几何校正、灰度变换、去除噪声等方法进行处理,并考虑了太阳位置和月球环境的影响,由计算机成功地绘制出月球外表地图,获得了巨大的成功。随后又对探测飞船发回的近十万张照片进行更为复杂的图像处理,以致获得了月球的地形图、彩色图及全景镶嵌图,获得了非凡的成果,为人类登月创举奠定了坚实的根底,也推动了数字图像处理这门学科的诞生。在以后的宇航空间技术,如对火星、土星等星球的探测研究中,数字图像处理技术都发挥了巨大的作用。数字图像处理取得的另一个巨大成就是在医学上获得的成果。1972年英国EMI公司工程师Housfield创造了用于头颅诊断的X射线计算机断层摄影装置,也就是我们通常所说的CT〔ComputerTomograph〕。CT的根本方法是根据人的头部截面的投影,经计算机处理来重建截面图像,称为图像重建。1975年EMI公司又成功研制出全身用的CT装置,获得了人体各个部位鲜明清晰的断层图像。1979年,这项无损伤诊断技术获得了诺贝尔奖,说明它对人类作出了划时代的奉献。与此同时,图像处理技术在许多应用领域受到广泛重视并取得了重大的开拓性成就,属于这些领域的有航空航天、生物医学工程、工业检测、机器人视觉、公安司法、军事制导、文化艺术等,使图像处理成为一门引人注目、前景远大的新型学科。随着图像处理技术的深入开展,从70年代中期开始,随着计算机技术和人工智能、思维科学研究的迅速开展,数字图像处理向更高、更深层次开展。人们已开始研究如何用计算机系统解释图像,实现类似人类视觉系统理解外部世界,这被称为图像理解或计算机视觉。很多国家,特别是兴旺国家投入更多的人力、物力到这项研究,取得了不少重要的研究成果。其中代表性的成果是70年代末MIT的Marr提出的视觉计算理论,这个理论成为计算机视觉领域其后十多年的主导思想。图像理解虽然在理论方法研究上已取得不小的进展,但它本身是一个比拟难的研究领域,存在不少困难,因人类本身对自己的视觉过程还了解甚少,因此计算机视觉是一个有待人们进一步探索的新领域。数字图像处理的根本特点数字图像处理是利用计算机实现与光学系统模拟处理相同效果的过程。一般具有如下特点:〔1〕处理精度高,再现性好计算机图像处理,其实质是对图像数据进行运算。由于计算机技术的飞速开展,计算精度和准确性不断提高;另外,用相同的方法对同一图像进行屡次处理,其再现性好。〔2〕处理方法的多样性由于图像处理是通过程序实现的,因此,设计不同的图像处理程序,可以实现各种不同的处理目的。〔3〕图像数据量庞大数字图像的数据量巨大。数字图像由图像矩阵中的像素〔Pixel〕组成,每个像素用红、绿、蓝三种颜色表示,每种颜色用8bit表示灰度级。一幅1024×1024不经压缩的真彩色图像,数据量达3MB〔即1024×1024×8bit×3=24Mb〕。X射线照片一般用64~256Kb的数据量,一幅遥感图像为3240×2340×4=30Mb。如此庞大的数据量给存储、传输和处理都带来巨大的困难。如果精度及分辨率再提高,所需处理时间将大幅度增加。〔4〕处理费时由于图像数据量大,因此处理比拟费时。特别是处理结果与中心像素邻域有关的处理过程花费时间更多。〔5〕图像处理技术综合性强数字图像处理涉及的技术领域相当广泛,如通信技术、计算机技术、电子技术、电视技术等,当然,数学、物理学等领域更是数字图像处理的根底。1.2图像的格式和分类
图像文件格式要利用计算机对数字化图像进行处理,首先要对图像的文件格式要有清楚的认识,因为我们前面说过,自然界的图像以模拟信号的形式存在,在用计算机进行处理以前,首先要数字化,比方摄像头〔CCD〕摄取的信号在送往计算机处理前,一般情况下要经过数模转换,这个任务常常由图像采集卡完成,它的输出一般为裸图的形式;如果用户想要生成目标图像文件,必须根据文件的格式做相应的处理。随着科技的开展,数码像机、数码摄像机已经进入寻常百姓家,我们可以利用这些设备作为图像处理系统的输入设备来为后续的图像处理提供信息源。无论是什么设备,它总是提供按一定的图像文件格式来提供信息,比拟常用的有BMP格式、JPEG格式、GIF格式等等,所以我们在进行图像处理以前,首先要对图像的格式要有清晰的认识,只有在此根底上才可以进行进一步的开发处理。
在讲述图像文件格式前,先对图像作一个简单的分类。除了最简单的图像外,所有的图像都有颜色,而单色图像那么是带有颜色的图像中比拟简单的格式,它一般由黑色区域和白色区域组成,可以用一个比特表示一个像素,“1”表示黑色,“0”表示白色,当然也可以倒过来表示,这种图像称之为二值图像。我们也可以用8个比特〔一个字节〕表示一个像素,相当于把黑和白等分为256个级别,“0”表示为黑,“255”表示为白,该字节的数值表示相应像素值的灰度值或亮度值,数值越接近“0”,对应像素点越黑,相反,那么对应像素点越白,此种图像我们一般称之为灰度图像。单色图像和灰度图像又统称为黑白图像,与之对应存在着彩色图像,这种图像要复杂一些,表示图像时,常用的图像彩色模式有RGB模式、CMYK模式和HIS模式,一般情况下我们只使用RGB模式,R对应红色,G对应绿色,B对应蓝色,它们统称为三基色,这三中色彩的不同搭配,就可以搭配成各种现实中的色彩,此时彩色图像的每一个像素都需要3个样本组成的一组数据表示,其中每个样本用于表示该像素的一个根本颜色。
对于现存的所有的图像文件格式,我们在这里主要介绍BMP图像文件格式,并且文件里的图像数据是未压缩的,因为图像的数字化处理主要是对图像中的各个像素进行相应的处理,而未压缩的BMP图像中的像素数值正好与实际要处理的数字图像相对应,这种格式的文件最适宜我们对之进行数字化处理。请读者记住,压缩过的图像是无法直接进行数字化处理的,如JPEG、GIF等格式的文件,此时首先要对图像文件解压缩,这就要涉及到一些比拟复杂的压缩算法。后续章节中我们将针对特殊的文件格式如何转换为
图像分类数字图像处理主要研究的内容有以下几个方面:1)图像变换由于图像阵列很大,直接在空间域中进行处理,涉及计算量很大。因此,往往采用各种图像变换的方法,如傅立叶变换、沃尔什变换、离散余弦变换等间接处理技术,将空间域的处理转换为变换域处理,不仅可减少计算量,而且可获得更有效的处理〔如傅立叶变换可在频域中进行数字滤波处理〕。目前新兴研究的小波变换在时域和频域中都具有良好的局部化特性,它在图像处理中也有着广泛而有效的应用。2)图像编码压缩图像编码压缩技术可减少描述图像的数据量〔即比特数〕,以便节省图像传输、处理时间和减少所占用的存储器容量。压缩可以在不失真的前提下获得,也可以在允许的失真条件下进行。编码是压缩技术中最重要的方法,它在图像处理技术中是开展最早且比拟成熟的技术。3)图像增强和复原图像增强和复原的目的是为了提高图像的质量,如去除噪声,提高图像的清晰度等。图像增强不考虑图像降质的原因,突出图像中所感兴趣的局部。如强化图像高频分量,可使图像中物体轮廓清晰,细节明显;如强化低频分量可减少图像中噪声影响。图像复原要求对图像降质的原因有一定的了解,一般讲应根据降质过程建立"降质模型",再采用某种滤波方法,恢复或重建原来的图像。4)图像分割图像分割是数字图像处理中的关键技术之一。图像分割是将图像中有意义的特征局部提取出来,其有意义的特征有图像中的边缘、区域等,这是进一步进行图像识别、分析和理解的根底。虽然目前已研究出不少边缘提取、区域分割的方法,但还没有一种普遍适用于各种图像的有效方法。因此,对图像分割的研究还在不断深入之中,是目前图像处理中研究的热点之一。5)图像描述图像描述是图像识别和理解的必要前提。作为最简单的二值图像可采用其几何特性描述物体的特性,一般图像的描述方法采用二维形状描述,它有边界描述和区域描述两类方法。对于特殊的纹理图像可采用二维纹理特征描述。随着图像处理研究的深入开展,已经开始进行三维物体描述的研究,提出了体积描述、外表描述、广义圆柱体描述等方法。6)图像分类〔识别〕图像分类〔识别〕属于模式识别的范畴,其主要内容是图像经过某些预处理〔增强、复原、压缩〕后,进行图像分割和特征提取,从而进行判决分类。图像分类常采用经典的模式识别方法,有统计模式分类和句法〔结构〕模式分类,近年来新开展起来的模糊模式识别和人工神经网络模式分类在图像识别中也越来越受到重视。1.3数字图像处理的主要内容无论图像处理是何种目的,都要通过计算机图像处理系统对图像数据进行输入、加工和输出,因此数字图像处理研究的内容主要有以下7个过程。(1)表示和表现〔ImageAcquisition,RepresentationandPresentation〕将模拟图像信号转化为计算机所能接受的数字形式,以及将数字图像显示和表现出来〔如打印〕。这一过程主要包括摄取图像、光电转换及数字化等几个步骤。(2)图像复原〔ImageRestoration〕当造成图像退化〔图像品质下降〕的原因时,复原技术可以对图像进行校正。图像复原最关键的是对每种退化都需要有一个合理的模型。例如,掌握了聚焦不良成像系统的物理特性,便可建立复原模型,而且对获取图像的特定光学系统的直接测量也是可能的。退化模型和特定数据一起描述了图像的退化,因此,复原技术是基于模型和数据的图像恢复,其目的是消除退化的影响,从而产生一个等价于理想成像系统所获得的图像。图像复原(3)增强〔ImageEnhancement〕图像增强是对图像质量一般意义上的改善。当无法知道图像退化有关的定量信息时,可以使用图像增强技术较为主观地改善图像的质量。像增强技术是用于改善图像视感质量所采取的一种方法。因为增强技术并非是针对某种退化所采取的方法,所以很难预测哪一种特定技术是最好的,只能通过试验和分析误差来选择一种适宜的方法。有时可能需要彻底改变图像的视觉效果,以便突出重要特征的可观察性,使人或计算机更易观察或检测。在这种情况下,可以把增强理解为增强感兴趣特征的可检测性,而非改善视感质量。电视节目片头或片尾处的颜色、轮廓等的变换,其目的是得到一种特殊的艺术效果,增强动感和力度。图像增强(4)图像分析图像处理应用的目标几乎均涉及到图像分析,即对图像中的不同对象进行分割、特征提取和表示,从而有利于计算机对图像进行分类、识别和理解。在工业产品零件无缺陷且正确装配检测中,图像分析是对图像中的像素转化成一个“合格〞或“不合格"的判定。在有的应用中,如医学图像处理,不仅要检测出物体〔如肿瘤〕的存在,而且还要检查物体的大小。〔6〕图像的重建图像重建与图像增强、图像复原等不同。图像增强、图像复原的输入是图像,处理后输出的结果也是图像,而图像重建是指从数据到图像的处理,即输入的是某种数据,而经过处理后得到的结果是图像,CT就是图像重建处理的典型应用实例。目前,图像重建与计算机图形学相结合,把多个二维图像合成三维图像,并加以光照模型和各种渲染技术,能生成各种具有强烈真实感的高质量图像。〔7〕图像压缩编码数字图像的数据量庞大,尽管现在有大容量的存贮器,但仍不能满足对图像数据(尤其是动态图像、高分辨率图像)处理的需要,因此在实际应用中图像压缩是必需的。如果数据不压缩,那么在存储和传输中就需要占很大的容量和带宽,因而增加了本钱。图像压缩的目的就是压缩数据量。从编码技术开展来看,Kunt提出第一代、第二代编码的概念。第一代编码是以去除冗余为根底的编码方法,如PCM、DPCM、ΔM、亚取样编码法、DFT、DCT、W-H变换编码法以及以此为根底的混合编码法。第二代编码法多为20世纪80年代以后提出的,如金字塔编码法、Fractal编码法、小波变换编码法、基于神经网络的编码法、模型基编码法等。这些编码方法有如下特点:①充分考虑人的视觉特性;②恰当地考虑对图像信号的分解与表述;③采用图像的合成与识别方案压缩数据。1.4课题实现的目标用计算机进行数字图像处理的目的有两个,一是产生更适合人类视觉观察和识别的图像,二是希望计算机能够自动进行识别和理解图像。无论是为了何种目的,图像处理的关键一步是对包含有大量各式各样景物信息的图像进行分解。分解的最终结果就是图像被分成一些具有各种特征的最小成分,这些成分就称为图像的基元。产生这些基元的过程就是图像分割的过程。图像分割作为图像处理领域中极为重要的内容之一,是实现图像分析与理解的根底。从概念上来说,所谓图像分割就是按照一定的原那么将一幅图像或景物分为假设干个局部或子集的过程。第二章软件工程和开发环境介绍2.1程序开发环境的介绍具体步骤〔1〕首先在任意磁盘创立文件夹,然后在File菜单中选择“新建〞,翻开“新建〞对话框,选择MFCAppWizard(exe)选项,并在右侧的“工程名称〞文本框中填入新建的工程名称,在“位置〞中指定路径,最后单击OK按钮。图2.11
“新建〞对话框〔2〕在“MFC应用程序向导〞对话框中设置应用程序的类型,指定应用程序是否使用文档/视图结构,以及资源文件的语种等。共有3种类型可供选择:分别为“Singledocument〔单文档应用程序〕〞、“Multipledocuments〔多文档应用程序〕〞和“Dialogbased〔对话框应用程序〕〞。选择单文档应用程序。图2.12“MFC应用程序向导步骤1共6步〞对话框〔3〕单击“下一步〞按钮,进入“MFC应用程序向导步骤2共6步〞对话框。图2.13“MFC应用程序向导步骤2共6步〞对话框〔4〕单击“下一步〞按钮,进入“MFC应用程序向导步骤3共6步〞对话框。图2.14“MFC应用程序向导步骤3共6步〞对话框〔5〕在弹出的MFC应用程序向导步骤4共6步对话框中,设置应用程序的外观。图2.15“MFC应用程序向导步骤4共6步〞对话框〔4〕保存默认的设置,单击“下一步〞按钮,进入“应用程序向导步骤5共6步〞对话框,设置应用程序的风格。图2.16“应用程序向导步骤5共6步〞对话框〔5〕在弹出的应用程序向导步骤6共6步对话框中,设置向导生成的文件名和类名。先从列表中选择类名,然后根据需要修改相关的类名、基类名、头文件和实现文件〔源文件〕等的名称。最好用默认文件名。图2.17“MFC应用程序向导步骤6共6步〞对话框〔6〕单击“完成〞按钮,弹出“新建工程信息〞对话框,该对话框显示应用程序所具有的特征,假设用户需要更改某些选项,单击“取消〞按钮进行修改,全部完成后单击“确定〞按钮。图2.18“新建工程信息〞对话框2.2一般软件的开发方法首先,要了解VC++6.0那么必须先了解C/C++语言。在计算机领域,C/C++语言相信一定无人不知、无人不晓。1970年,贝尔实验室的kenthompson开发了一种解释型的计算机语言被命名为B语言,但B语言没有流传开。1972年贝尔实验室的dennisritchie在B语言的根底上进行改良,开发出了C语言。C语言最初主要用于unix系统,大多数unix系统的程序都是用C编写的。借助早期unix系统的流行和C本身的优秀品质,C语言从此名扬天下、威震四方。而后,伴随着面向对象概念的提出和应用,形成了C++语言,AT&T公司于1985年正式推出了C++1.0版,它是c语言面向对象的扩充。C++1.0增加了类和实例、单继承、重载、虚函数、友员、内联等面向对象的程序设计机制。1989年推出的C++2.0版和1993年推出的C++3.0版分别增加了支持多继承、保护接口、模板和异常等。〔有一点值得说明,直到现在C++并没有正式的标准,以上所说的版本是以AT&T公司的版本为基准的。〕C++被公认为“最好的面向对象的编程语言〞,是学习面向对象编程技术人员较好的启蒙语言。当VB成功推出后,microsoft又将C++包装成为了面向windows的visualC++〔以下简称VC〕。从VC1.0到VC6.0,每一个版本的推出都冲动人心。VC借助传统的C/C++的美名加上microsoft这个金字招牌,使广阔的程序员和专业编程人员纷纷投靠在VC的大旗下。VC++是微软公司开发的C++语言开发环境,VC的特点是微软公司做了一个自己独有的类库MFC,里面封装了绝大多数的API函数,使得WINDOWS程序的开发变的很高效和易于理解,如果用API直接开发WINDOWS程序的话,将会是一件非常烦琐的工作,WINDOWS对资源的管理是非常严格的这与DOS可直接用中断处理程序和I/O指令操作硬件端口是截然相反的;所以这个MFC就是VC和其他公司出产的编译器的最大区别了,当然了别的公司也有自己封装API的类库比方DELPHI〔这个不是C++的是pascol的〕等等,不过由于微软公司掌握着WINDOWS内核的全部秘密,所以他们的编译器与其他公司的相比有其独到的优势。VisualC++是功能最为强大可视化开发工具,它不仅支持传统的软件开发方法,更重要的是它能支持面向对象、可视化的开发风格。因此VisualC++又称作是一个集成开发工具,它提供了软件代码自动生成和可视化的资源编辑功能。VisualC++具有的优点:提供了面向对象的应用程序框架MFC〔MicrosoftFoundationClass〕,简化了程序员的编程工作,提高了模块的可重用性;提供了基于CASE技术的可视化软件的自动生成和维护工具AppWizard、ClassWizard、VisualStudio、WizardBar等,实现了直观、可视的程序设计风格,方便地编和管理各种类,维护程序的源代码;封装了Windows的API函数、USER、KERNEL、GDI函数,简化了编程时创立、维护窗口的许多复杂的工作。一、快速高效:C语言从诞生起最大的优点就是速度快,用C编写的代码可以到达汇编语言编写的代码执行速度的70%——80%。VC完全继承了这一特点,并且由于代码优化工作做的比拟好,其代码的结构紧凑、效率极高。二、语言简练:VC还延续了传统C语言的简练风格,如pascal语言中的beginend在VC中可以用简单的{}表示。三、贴近硬件:C语言被很多专业人士称为“介于高级语言和汇编语言之间的一种语言〞由于C语言贴近硬件便于对硬件直接操作因此又有“系统程序设计语言〞的美称。这一特点使得C语言特别擅长编写系统程序,如windows就是用C语言编写的。VC具有同样的优良品质。四、灵活多变:VC像C语言一样提供应编程者一个很自由的编程环境,丰富的表达方式可以表现程序的匠心独运,用VC编程可以让你体会到什么叫“天高任鸟飞〞。你可以彻底地控制整个开发环境。其它语言那么更多地趋向于庇护程序员,当要做一些根本的东西时,它们会做得很好。五、便于移植:C语言在unix系统上取得巨大成功的一个主要因素是C语言的移植度好,不依赖于特定的硬件环境,可以方便地跨平台移植。使用VisualC++主要的原因之一就在于它的灵活性。不幸的是,当你需要使用像C++这样的语言删除编程中的繁文缛节,并把任务完成时,这种保护作用就变成了开发工作的障碍。长期以来,VisualC++一直拥有能够创立短小高效程序的美誉。使用这种语言编写的程序几乎可以与用汇编语言编写的程序到达相同的运行速度,并且防止了汇编语言存在的各种问题。C++实际上是介于汇编语言中存放器编程和类Pascal编程环境之间语言。
C++是编写诸如操作系统、设备驱动程序以及动态链接库〔DLL〕的强大语言,这三种领域代码的开发依然是VisualC++的主要优势。VisualC++生成的短小、快速的代码在操作系统类对时间要求很高的系统中获得了极高的赞誉。
同时VisualC++6.0中具有一些独特的特性,Microsoft添加到这个版本的VisualC++中的最新特性之一是更佳的原型能力,这一点通过增强的向导来实现。现在,这个特性还不能把VisualC++提升到像VisualBasic向导相同的水平上,但它确实减少了开发应用程序的入门时间。另外,增强的向导使得这个版本的VisualC++比以前版本更为友好。2.3MFC开发的根底知识几乎所以的MFC(MicrosoftFoundationClass――微软根本类库)全部是从CObject这个根类衍生出来的,由CObject这个类衍生出以下一个重要的类:CCmdTarget——他是MFC类库中消息映射体系的一个基类〔消息映射是把命令或消息引导给用户为之编写的响应函数〕;再由CCmdTarget派生出应用程序线程类CWinThread和窗口类CWnd以及根本文档类CDocument〔CWinThread类的对象代表在一个应用程序内运行的线程;CWnd类提供MFC中所有的窗口类的根本功能;CDocument类为用户定义的文档类提供根本的函数功能如:各类操作文档〕。CWinThread类又派生出应用程序对象类CWinApp,可以通过他来继承Windows应用程序对象,同时提供MFC中所有的窗口类的根本功能;CWnd类派生出框架窗口类CFrameWnd、对话框类CDialog和视图类CView,CFrameWnd用以完成Windows文档界面重叠或弹出式框架窗口,以及管理窗口的成员,在其派生类中参加成员变量,实现窗口的消息处理与映射,CDialog类是在屏幕上显示的对话框基类〔包含模式对话框和非模式对话框〕,CView类为用户提供视图类的根本功能。文档类从CDocument派生,应该包括任何属于应用程序文档的数据。对于真实的C++封装,不允许文档类对它的数据进行直接访问〔甚至从视图类也不行),而应包含封装函数以访问它的数据。文档类还应包括装入和保存一个文档所必须的所有功能,这些文档包括从简单的二进制文件到ODBC数据库。如果应用程序不做任何其他事情而只访问一个ODBC数据库,那么文档类可以只包含翻开和关闭那个数据库所必须的逻辑,因为数据库是数据的主要仓储地,文档类对它自己来说是独立的。从一个存储设备中获得信息,并把它取出来交给视图,但是几乎不把信息存储到其他类中。一份文档可以有多个相关视图,文档作为窗口标准命令的一局部,接收标准用户界面组件的命令,当文档数据被修改时,各个视图都必须响应这些修改。应用程序类从CWinApp派生,并不对任何窗口进行控制。应用程序对象为用户提供了初始化应用程序〔以及他的每一个实例〕和运行应用程序所需的成员函数。除了控制应用程序的创立和卸载外,它自身应该有少数重要的附加功能,这些功能包括处理命令行标志和提供一种定制的翻开文档的方法。应用程序类还提供一些应用程序范围的效劳,诸如后台处理和超分类等。每个使用MFC的应用程序只包含一个从CWinApp继承的对象。主框架类从CFrameWnd类派生,控制应用程序的主窗口,负责所有应用程序范围的界面,包括工具栏、状态栏、菜单和对话条。然而,如果这些条中的任何一个有新增的功能的话,它应该被封装到它自己的类中。对用户优先选项的支持也通常可以在主框架类中发现。有三种方法可以构造一个框架窗口:用Creat直接构造、用LoadFrame直接构造和用文档模板间接构造;使用Creat成员函数传递框架构造参数作为立即参数,LoadFrame从资源中获取大多数缺省值,为了能使资源被LoadFrame访问,所有的资源必须有相同的ID〔如,IDR_MAINFRAME〕。当一个CFrameWnd对象包含视图和文档时,它们由框架类间接构造而不是由程序员直接构造,由此他们之间的联系通过了CDocTemplate对象,他将视图的构造、视图与文档相联接,他的构造函数的三个参数指定了三个类〔文档、框架、视图〕的CRuntimeClass。视图类从CView派生,他是框架窗口的子窗口,视图类通过消息映射处理消息。这个类应当包括查看和编辑文档类中数据所必须的所有逻辑。任何专门作用于文档的菜单或工具栏命令,诸如剪切或粘贴,应该在视图类中得到处理;所有影响视图的鼠标消息应当在此处处理;所有绘图、报表、编辑、选择和打印应在此处使用;所有的对话框和弹出式菜单应在此处产生。如果这个类或任何一个类变得规模很大时,应该分解出任何公共的功能以形成一个新的基类。创立一个新的CMyBaseView类,并把一些根本功能放到该类中;或者可以把一些功能封装到它自己的类中。视图中选择、剪切和粘贴函数是它自己的类的一个很好代表。其他类应尽可能多地封装属于它们自己的功能。对话框类应包括提示用户所必需的任何内容,对话条、工具栏和任务栏也应该这样。一个自画控件应当从它自己的类中绘制。每当从应用程序中分解出公共功能,并把它们放到一个基类中时,可以把新的基类放进一个MFC扩展类中。然后就可以把该新的MFC扩展类放进一个动态链接库中,应用程序便可以共享这一功能了。注意作为另一个经验作法,如果发现一个类经常访问另一个类的函数和数据,那么有必要把那个功能放到另一个类中。第三章图像分割的概述3.1图像分割的一般概念技术是一个跨学科的领域。随着计算机科学技术的不断开展,图像处理和分析逐渐形成了自己的科学体系,新的处理方法层出不穷,尽管其开展历史不长,但却引起各方面人士的广泛关注。首先,视觉是人类最重要的感知手段,图像又是视觉的根底,因此,数字图像成为心理学、生理学、计算机科学等诸多领域内的学者们研究视觉感知的有效工具。其次,图像处理在军事、遥感、气象等大型应用中有不断增长的需求。基于图论的图像分割技术是近年来国际上图像分割领域的一个新的研究热点。该方法将图像映射为带权无向图,把像素视作节点。利用最小剪切准那么得到图像的最正确分割该方法本质上将图像分割问题转化为最优化问题。是一种点对聚类方法。对数据聚类也具有很好的应用前景。但由于其涉及的理论知识较多,应用也还处在初级阶段。因此国内这方面的研究报道并不多见,本文将对图论方法用于图像分割的根本理论进行简要介绍,并对当前图论方法用于图像分割的最新研究进展进行综述,并着重介绍基于等周图割的图像分割的方法。图像目标分割与提取技术综述图像分割是一种重要的图像技术,在理论研究和实际应用中都得到了人们的广泛重视。图像分割的方法和种类有很多,有些分割运算可直接应用于任何图像,而另一些只能适用于特殊类别的图像。有些算法需要先对图像进行粗分割,因为他们需要从图像中提取出来的信息。例如,可以对图像的灰度级设置门限的方法分割。值得提出的是,没有唯一的标准的分割方法。许多不同种类的图像或景物都可作为待分割的图像数据,不同类型的图像,已经有相对应的分割方法对其分割,同时,某些分割方法也只是适合于某些特殊类型的图像分割。分割结果的好坏需要根据具体的场合及要求衡量。图像分割是从图像处理到图像分析的关键步骤,可以说,图像分割结果的好坏直接影响对图像的理解。3.1.3为后续工作有效进行而将图像划分为假设干个有意义的区域的技术称为图像分割(ImageSegmentation)目前,有许多的图像分割方法,从分割操作策略上讲,可以分为基于区域生成的分割方法,基于边界检测的分割方法和区域生成与边界检测的混合方法.3.2图像分割的根本原理图像分割是将图像划分成假设干个互不相交的小区域的过程,小区域是某种意义下具有共同属性的像素的连通集合。图像分割有三种不同的途径:其一是将各像素划归到相应物体或区域的像素聚类方法,即区域法;其二是通过直接确定区域间的边界来实现分割的边界方法;其三是首先检测边缘像素,再将边缘像素连接起来构成边界形成分割。在图像分割技术中,最常用的是利用阈值化处理进行的图像分割。灰度阈值法分割常用的图像分割方法是把图像灰度分成不同的等级,然后用设置灰度门限〔阈值〕的方法确定有意义的区域或分割物体的边界。常用的阈值化处理就是图像的二值化处理,即选择一阈值,将图像转换为黑白二值图像,用于图像分割及边缘跟踪等预处理。图像阈值化处理的变换函数表达式为 图9-2阈值变换曲线3.3罗伯特边缘算子罗伯特〔Robert〕边缘检测算子是一种利用局部差分方法寻找边缘的算子,Robert梯度算子所采用的是对角方向相邻两像素值之差,算子形式如下: Robert算子边缘检测结果索贝尔〔Sobel〕边缘算子所采用的算法是先进行加权平均,然后进行微分运算,算子的计算方法如下:Sobel算子边缘检测结果普瑞维特〔Prewitt〕边缘检测算子是一种利用局部差分平均方法寻找边缘的算子,它表达了3对像素点像素值之差的平均概念,算子形式如下: Prewitt算子边缘检测结果通常分割的方法如下:=1\*GB3①梯度法为把图像中各不同走向的边缘和线条突出,可采用各向同性且具有旋转不变性的梯度算子,由于f(x,y)的梯度为其梯度幅度为总梯度为简化可用代替。=2\*GB3②Roberts梯度这种梯度实践证明比梯度法更有效。=3\*GB3③平面拟合算子=4\*GB3④算子=5\*GB3⑤Sobel算子3.4图像边缘检测
数字图像的边缘检测是图像分割、目标区域的识别、区域形状提取等图像分析领域十分重要的根底,是图像识别中提取图像特征的一个重要属性,图像理解和分析的第一步往往就是边缘检测,目前它以成为机器视觉研究领域最活泼的课题之一,在工程应用中占有十分重要的地位。物体的边缘是以图像的局部特征不连续的形式出现的,也就是指图像局部亮度变化最显著的局部,例如灰度值的突变、颜色的突变、纹理结构的突变等,同时物体的边缘也是不同区域的分界处。图像边缘有方向和幅度两个特性,通常沿边缘的走向灰度变化平缓,垂直于边缘走向的像素灰度变换剧烈,根据灰度变化的特点,可分为阶跃型、房顶型和凸缘型,如图一所示,这些变化对应图像中不同的景物。需要读者注意的是,实际分析中图像要复杂的多,图像边缘的灰度变化情况并不仅限于上述标准情况。〔a〕阶跃型 (b)房顶型 (c)凸缘型图一边缘灰度变换的几种类型由于边缘是图像上灰度变化最剧烈的地方,传统的边缘检测就是利用了这个特点,对图像各个像素点进行微分或求二阶微分来确定边缘像素点。一阶微分图像的峰值处对应着图像的边缘点;二阶微分图像的过零点处对应着图像的边缘点。根据数字图像的特点,处理图像过程中常采用差分来代替导数运算,对于图像的简单一阶导数运算,由于具有固定的方向性,只能检测特定方向的边缘,所以不具有普遍性。为了克服一阶导数的缺点,我们定义了图像的梯度为梯度算子为,它是图像处理中最常用的一阶微分算法,式子中表示图像的灰度值,图像梯度的最重要性质是梯度的方向是在图像灰度最大变化率上,它恰好可以放映出图像边缘上的灰度变化。
图像边缘提取的常用梯度算子有Robert算子、Sobel算子、Prewitt算子、Krisch算子等。下面以边缘检测Sobel算子为例来讲述数字图像处理中边缘检测的实现:对于数字图像,可以用一阶差分代替一阶微分;
△xf(x,y)=f(x,y)-f(x-1,y);
△yf(x,y)=f(x,y)-f(x,y-1);
求梯度时对于平方和运算及开方运算,可以用两个分量的绝对值之和表示,即:
Sobel梯度算子是先做成加权平均,再微分,然后求梯度,即:
△xf(x,y)=f(x-1,y+1)+2f(x,y+1)+f(x+1,y+1)-f(x-1,y-1)-2f(x,y-1)-f(x+1,y-1);
△yf(x,y)=f(x-1,y-1)+2f(x-1,y)+f(x-1,y+1)-f(x+1,y-1)-2f(x+1,y)-f(x+1,y+1);
G[f(x,y)]=|△xf(x,y)|+|△yf(x,y)|;
上述各式中的像素之间的关系见图二F(x-1,y-1)F(x,y-1)F(x+1,y-1)F(x-1,y)F(x,y)F(x+1,y)F(x-1,y+1)F(x,y+1)F(x+1,y+1)图二Sober算子中各个像素点的关系图第四章系统的设计与实现4.1写的外界环境要求系统的硬件配置系统开发所需的硬件配置为:处理器:Intel®Core™2CPUT5500@1.66GHZ内存:512MDDR硬盘:80G显卡:Intel82945GMGraphicsController0[a-3]系统软件配置系统开发所需的软件配置为:操作系统:WindowsXPSP2开发平台:VisualC++6.04.2黑白图像分割头文件声明DispBMP(); Lightening(); formRGBPixel();//形成RGB黑白图像分割程序/*intWidth,Height;voidCImageprocessView::DispBMP(){ BITMAPBmp;//定义一个BITMAP类型的变量来存放图象的信息 CDC*DispMemDC=newCDC;//定义一个指向设备环境类的指针 CBitmap*pBitmap=newCBitmap;//定义一个指向比特图象类的指针 CClientDCdc(this);pBitmap->LoadBitmap(IDB_BITMAP1);//将标识为IDB_BITMAP1的资源载入 DispMemDC->CreateCompatibleDC(&dc);//为位图创造一个设备内存环境DispMemDC->SelectObject(pBitmap);//将位图载入设备内存环境 pBitmap->GetObject(sizeof(Bmp),&Bmp);//获取位图的信息 Width=Bmp.bmWidth; Height=Bmp.bmHeight; pBitmap->GetObject(sizeof(Bmp),&Bmp); dc.BitBlt(0,0,Width,Height,DispMemDC,0,0,SRCCOPY);//显示图象}voidCImageprocessView::Lightening(){intx,y,grey,delta_x,delta_y,delta;for(y=0;y<Height;y++) for(x=0;x<Width;x++) {delta_x=ReadPixel(x+1,y)-ReadPixel(x,y);delta_y=ReadPixel(x,y+1)-ReadPixel(x,y); delta=abs(delta_x)+abs(delta_y);//梯度的计算 if(delta>40) grey=255; else grey=0;WritePixel(x+Width,y,grey); }}CImageprocessView::ReadPixel(intx,inty){ CClientDCdc(this);//获得客户设备环境类的指针 return(dc.GetPixel(x,y)&0xff);//调用GetPixel(x,y)获得象素值}voidCImageprocessView::WritePixel(intx,inty,intc){COLORREFcolor; color=0xff&c;//限制象素的范围在0-255之间color=(color<<16)|(color<<8)|color; //使RGB相等CClientDCdc(this);//获得客户设备环境类的指针 dc.SetPixelV(x,y,color);//调用SetPixel(x,y)设置象素值}原图:运行程序后显示结果:4.3彩色图像分割头文件声明voidDispBMP();voidLightening();ReadPixel(intx,inty);voidWritePixel(intx,inty,intc);voidformRGBPixel();voidWriteRGBPixel(intx,inty,intr,intg,intb); 彩色图像分割程序intWidth,Height;voidCImageprocessView::DispBMP(){ BITMAPBmp;//定义一个BITMAP类型的变量来存放图象的信息 CDC*DispMemDC=newCDC;//定义一个指向设备环境类的指针 CBitmap*pBitmap=newCBitmap;//定义一个指向比特图象类的指针CClientDCdc(this);pBitmap->LoadBitmap(IDB_BITMAP4);//将标识为IDB_BITMAP1的资源载入 DispMemDC->CreateCompatibleDC(&dc);//为位图创造一个设备内存环境DispMemDC->SelectObject(pBitmap);//将位图载入设备内存环境 pBitmap->GetObject(sizeof(Bmp),&Bmp);//获取位图的信息 Width=Bmp.bmWidth; Height=Bmp.bmHeight; pBitmap->GetObject(sizeof(Bmp),&Bmp); dc.BitBlt(0,0,Width,Height,DispMemDC,0,0,SRCCOPY);//显示图象}voidCImageprocessView::Lightening(){COLORREFcolor; intx,y,r,g,b,grey,delta_xr,delta_yr,deltar;intdelta_xg,delta_yg,deltag,delta_xb,delta_yb,deltab;for(y=0;y<Height;y++) for(x=0;x<Width;x++) {color=ReadRGBPixel(x,y);//读取彩色图像的值r=color&0xff;//取红基色 WriteRGBPixel(x+Width,y,r,0,0);delta_xr=(ReadRGBPixel(x+1,y+1)&0xff)-(ReadRGBPixel(x,y)&0xff);delta_yr=(ReadRGBPixel(x,y+1)&0xff)-(ReadRGBPixel(x+1,y)&0xff);deltar=abs(delta_xr)+abs(delta_yr);//Roberts梯度 if(deltar>20) grey=0; elsegrey=255; WriteRGBPixel(x+Width,y,grey,0,0); g=color&0xff00;//取绿基色 WriteRGBPixel(x,y+Height,0,g,0);delta_xg=((ReadRGBPixel(x+1,y+1)&0xff00)>>8)-((ReadRGBPixel(x,y)&0xff00)>>8);delta_yg=((ReadRGBPixel(x,y+1)&0xff00)>>8)-((ReadRGBPixel(x+1,y)&0xff00)>>8);deltag=abs(delta_xg)+abs(delta_yg);//Roberts梯度 if(deltag>21) grey=0; elsegrey=255; WriteRGBPixel(x,y+Height,0,grey,0); b=color&0xff0000;//取蓝基色 WriteRGBPixel(x+Width,y+Height,0,0,b);delta_xb=((ReadRGBPixel(x+1,y+1)&0xff0000)>>16)-((ReadRGBPixel(x,y)&0xff0000)>>16);delta_yb=((ReadRGBPixel(x,y+1)&0xff0000)>>16)-((ReadRGBPixel(x+1,y)&0xff0000)>>16);deltab=abs(delta_xb)+abs(delta_yb);//Roberts梯度 if(deltab>22) grey=0; elsegrey=255; WriteRGBPixel(x+Width,y+Height,0,0,grey); }}CImageprocessView::ReadRGBPixel(intx,inty){CClientDCdc(this);//获得指向客户区的指针 return(dc.GetPixel(x,y));//调用GetPixel()函数获得(x,y)坐标点的像素值}voidCImageprocessView::WritePixel(intx,inty,intc){COLORREFcolor; color=0xff&c;color=(color<<16)|(color<<8)|color;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度环保材料研发合同标的调整协议
- 二零二五年度文化娱乐产业投资基金交易服务合同3篇
- 《流程改进培训》课件
- 二零二五年度建材市场租赁合同附违约责任及赔偿计算协议2篇
- 汽车电子行业技术工作总结
- 二零二五年度智能办公租赁合同及5G网络接入服务协议3篇
- 2024版脚手架租赁合同范本
- 电子商务行业市场营销策略分析
- 二零二五年度快递快递业务经营权转让及区域合作合同2篇
- 二零二五年度养老护理机构安防与日常保洁服务合同范本3篇
- 《报任安书》优秀-课件
- 曼陀罗中毒课件
- (新版)焊工(初级)理论知识考试200题及答案
- 满堂脚手架计算书
- MRAS系统标准用户手册
- HAPS系统实现协同仿真验证-基础电子
- 欧洲地下车库诱导通风系统设计手册
- 现代文答题技巧课件2023年中考语文二轮复习
- YS/T 673-2013还原钴粉
- TY/T 3001-2006中国青少年儿童 手腕骨成熟度及评价方法
- GB/T 32545-2016铁矿石产品等级的划分
评论
0/150
提交评论