数字图形处理_第1页
数字图形处理_第2页
数字图形处理_第3页
数字图形处理_第4页
数字图形处理_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘 要数字图像处理技术是近年来新兴的一门技术,随着电脑的硬件配置的不断升级,数字图像的实时进行处理已经成为可能了,再由于图像处理的各种各样的算法的出现,变得其处理的速度越来的越快。这样就能更好的为人民服务了。数字图像处理是一种通过电脑采用一定的算法对图形图像进行处理的技术。这种技术已经在全球各个领域上都有了比较广泛的应用。图像处理的信息量是相当大的。对处理的速度要求也是特别高的。C#简易的编写环境使得程序员在编写图像处理的算法变得简单和直观。本文也会介绍C#语言的特点,以及基于visual2010的图像处理环境。介绍了如何利用C#及其图像处理工具箱进行数字的图像处理,并通过一些例子来说明C#图像处理工具箱进行图像处理的各类方法。主要论述利用C#实现图像的Filter(过滤)、Gamma校正、Brightness(亮度)、Contrast(对比度)、Grayscale(灰度)、Invert(底片效果)等图像处理。关键字:C#、visualstudio2010、图像处理、Filter(过滤)、Gamma校正、Brightness(亮度)、Contrast(对比度)、Grayscale(灰度)、Invert(底片效果)AbstractDigitalimageprocessingtechnologyisanemergingtechnologyinrecentyears,withthecomputer'shardwareconfigurationescalatingreal-timeprocessingofdigitalimageshasbecomepossible,andthenduetotheemergenceofavarietyofimageprocessingalgorithms,becomeitsincreasinglyfasterprocessingspeed.Sothatitcanbetterservethepeopleof.Digitalimageprocessingisacomputergraphicsalgorithmsusingcertainimageprocessingtechniquesadopted.Thistechnologyhashadarelativelywiderangeofapplicationsinvariousareasoftheglobe.Theimageprocessinginformationisconsiderable.Speedprocessingrequirementsareparticularlyhigh.C#simpleauthoringenvironmentallowstheprogrammertowritethealgorithmforimageprocessingbecomessimpleandintuitive.ThisarticlealsodescribesthecharacteristicsoftheC#language,aswellasvisualimage-basedprocessingenvironment2010.ItdescribeshowtouseC#andimageprocessingtoolboxfordigitalimageprocessing,andthroughanumberofexamplestoillustratethevarioustypesofmethodsC#imageprocessingtoolboxforimageprocessing.FocusesontheuseofC#achieveFilterimage(filter),GammaCorrection,Brightness(brightness),Contrast(contrast),Grayscale(gray),Invert(negativeeffect)andotherimageprocessing.Keywords:C#,visualstudio2010,imageprocessing 目录1.绪论 51.1课题研究的目的以及意义 51.2国内外研究现状 62图像处理原理与技术 72.1主要应用 72.2C#在图像处理中的应用 73可行性与系统需求分析 83.1可行性分析 83.2系统功能需求分析 83.3系统界面需求分析 94概要设计 104.1系统流程 104.2功能框架结构 124.3用户界面设计 134.4小结 135详细设计 145.1ColorFilter(色相) 145.2Gamma(曲线) 175.3Brightness(亮度) 195.4.Contrast(对比度) 215.5Grayscale(灰度) 245.6Invert(底片效果) 257总结与展望 277.1总结 277.2展望 27参考文献 28第27页1.绪论1.1课题研究的目的以及意义获得的信息和图形图像的信息交流主要来源是经过视觉去提取相关的信息。并且是最有效的视觉探知的方法,图像的处理技术已成为各个领域得科研工作者研究和认定的最有效的手段,其中包括:航天科学,电子学,医学等。图像处理技术是一项比较广泛而又较实用的科学。而且它在心理学,生物工程,金融,计算机,学校等领域得到了非常广泛的应用。本文的意义在于发展自我收集的数据和调查能力熟悉的数字图像处理的二进制图像处理技术和验证二值图像处理。而且也能提高学生的自我解决问题能力,以及给未来充电。电脑对图像的噪声,加强,恢复,剪切,特征提取等加工方法和技巧就是图像处理技术。从1970左右图像的处理技术的各项应用以及逐渐需求的的增长。促使人们提出了更加促进本学科先进的发展方向。重点是在现场及时理解和计算机视觉等方面,两维图象技术已经用来开发处理三维图像以及解释三维图像了。近年来,随着计算机和数字图像处理应用越来越广泛其它相关领域的快速发展,从空间探索到微观研究(如癌细胞的检测),从军事部门,以工业和农业生产,从科学教育,娱乐游戏(如大家来找茬)等。从研究的专业领域到科学和人机接口,通用的应用工具,数字图像处理。总体而言,21世纪的数字图像处理往往纯数字,并希望在高品质的方向发展。品质的加强包含:多媒体化,快速,三维立体,高分辨率,自动化和标准化。在此次毕业设计中,我主要研究的是利用C#编程出数字图像处理系统,完成一些经常用到的图像处理功能,掌握BMP位图文件格式。包括图像的打开,显示和保存以及实现图像的Filter(过滤)、Gamma校正、Brightness(亮度)、Contrast(对比度)、Grayscale(灰度)、Invert(底片效果)等图像处理查阅整理有关二值图像处理技术的资料,掌握BMP位图文件格式以及基本的数字图像操作方法↓查阅整理有关二值图像处理技术的资料,掌握BMP位图文件格式以及基本的数字图像操作方法↓画出系统软件框图↓学习用C#编程的基本知识↓编程实现图像的Filter(过滤)、Gamma校正、Brightness(亮度)、Contrast(对比度)、Grayscale(灰度)、Invert(底片效果)等图像处理。↓调试程序,实现数字图像处理系统的各模块功能人们得到信息的主要来源都源自于图像。因而,图像的处理技术的应用肯定会牵扯到人们生活里的方方面面。在图像处理领域的应用人类活动的范围不断扩大也将不断扩大,已然成为国家安全,经济发展和社会稳定越来越重要的角色,在国民经济中的作用也不容小觑。1.2国内外研究现状图像的处理技术早期是出现在1950年。在那会计算机的平均水平已经到了一个非常可观的程度了。然后人们开始用计算机做一些图形图像的处理。图像处理大概是在1960年左右才正式创办了这个学科。最早时候图形图像技术的主要任务是为了提高图片的效果。它是仅仅是以人来做为一个参考的对象用以提高人的视觉整体效果。图像处理就是把低质量的图片输入进去,进行还原高质量的通常它是使用像图像的复原,编码,增强和压缩等处理。第一次的试验成功是在美国的喷气式推进实验室里面。他们当时通过太空探测仪拍摄的照片进行复原等图像处理技术进行处理成功的绘制出了月球表面的地图。此后又通过外太空的探测器发回的图片进行图像处理成功的恢复出了月球表面的彩色地图,为人类进行登月做出了伟大的贡献。同时加快了图像图形处理技术这么学科的产生。在之后的航天领域里。如研究和探索金星,木星等外太空,数字图像处理技术也发挥着非常重要的作用。在20世纪70年代一个来自英国的工程师Housefild在EMI公司发明了X射线的计算机断层的映射装置诊断颅骨情况,也就是我们常说的CT。第二年在此前的技术的基础下发明了全身的为单位的CT仪。并1990年代获得非损害性诊断技术的诺贝尔奖。同时表明了它为人类做出了伟大而又跨越时代的贡献。而且图形图像的处理在很多的地方受到了关注,而且取得了一些很明显的成果,这些地方包括:外太空探测,生物工程,工业检测,智能视觉,国家安全,军事作战,教育领域。总的来说图像处理已成为一个非常重要的科学,拥有光明的前景。在数字图像不断的发展。许多国家里像一些发达国家更应该投入人力和物力到研究里面去,使得人类将取得一大批重要的研究成果。1978年由麻省理工提出的图像处理尖端领域,在后十年一直引导着世界图像处理技术。图形图像的处理技术在教育的领域里也取得了不小的成果。但是本身就是一个非常困难理解学科。因此它需要科学家投入更多的资源去探索和开发相关技术,促进计算机科学在视觉领域得发展。

2图像处理原理与技术2.1主要应用主要应用包括在医学,航天,金融,教育,军事等相关技术都于图像处理技术的发展息息相关。这些年来,计算机的视觉识别技术和图形图像理解的技术发展的非常的迅速。这是图形图像的处理技术的另外的原因,直接供人观看(如医学图像为医生监视诊断),而且计算机视力不佳的进一步发展相关的应用,如自动行驶的车辆,智能眼镜。以下是一些典型的应用实例只是一个列表,并且实际应用更广。(1)生物医学中的应用包括显微图像处理;分析及显示DNA螺旋式结构;对血球的红,白细胞分析及记数,以确定肿瘤细胞;染色体分析,等等。(2)遥感应用空间军事侦察,导航和指挥等应用;分析卫星及云层;地势的相关状况以及对大地客观测量;(3)工业应用CAD和CAM技术加工,零部件制造,服装,印染等行业;(4)在公安领域的军事应用克鲁斯地形识别;AFIS;识别手写识别,人像,密封;过期的恢复文本文件;无盒检查容器等。(5)其它应用智能电视;可视电话。2.2C#在图像处理中的应用它在图形图像的处理里面主要功能包含转换彩色图像,灰度图形图象的处理和图形的图象增亮过程。为图像处理部中的程序代码被包括在一个特殊类别内筛,并且在调取类的静态成员函数可以达到适当的图像处理效果。在图形图像的处理过程中我们需要图中的每个像素点进行依次处理。正如我们所知的图像是由每一个像素点构成的,处理好了每一个像素点也就处理好了整张图片了。所以在处理图像的过程里,我们只需要考虑每一个像素点的问题,并不需要考虑一张图所有像素点在这个过程中,我们只需要处理与每个像素点然后慢慢的遍布整张图,所以相对来说更加的简单。BitmapData类是不能直接提供GDI+访问内部的图像数据的方法的。现在只能通过指针去调取图形图像内部的信息。那么就要必须的使用关键字来指示图形图像的数据的存取功能不安全一个模块。而且这个过程里我们也用打开和保存按钮以便我们辛苦的劳动成果不会白白的浪费了。3可行性与系统需求分析主要图像的主要操作:打开,关闭,保存;图像的基本处理:Filter(过滤)、Gamma(校正)、Brightness(亮度)、Contrast(对比度)、Grayscale(灰度)、Invert(底片效果)3.1可行性分析经济可行性分析:经济可行性分析主要是估计值,并且可以得到开发成本效益评估,拟以确定系统是否值得投资和开发,研制。在开发成本方面的估计,由于这种软件的大小由较小的开发成本制定不高,个人开发者所能承受的。(b)技术可行性分析:技术可行性分析的主要目的是未来对系统的功能性,性能性和一些规则的限制条件的分析,并且在以及拥有的资源下考虑是不是能实现相关的功能。(c)用户使用可行性分析:随着计算机的普及,大学一般使用办公室的电脑,基本上每个人都在计算机的基本操作。该系统的操作非常的简便,界面也非常的简洁,良好适用性。这样来说,所以操作是可行的。因为微型计算机的技术发展,图像的处理技术也越来越接近生活了。现如今的图像处理系统以及发展的非常的成熟了,在已经在市场的多数软件都相对来说很成型了。总结汇编,后系统已不是一系列可行性分析是多了,我们已经发现,即使已经制定并在成熟和完整的使用,使系统可以立即启动开发3.2系统功能需求分析本系统主要考虑以下几个功能:Filter(过滤)、Gamma(校正)、Brightness(亮度)、Contrast(对比度)、Grayscale(灰度)、Invert(底片效果)。Gamma(曲线):Gamma(曲线)从CRT(监视器/电视)的响应曲线,就是亮度和输进来的电压它们之间的非线性关系。Gamma(曲线)校正补偿现有彩色显示的差别,因而在不同的设备里图像的显示效果是非常接近的,几乎可以达到相同。Brightness(亮度):从中等一系列非常暗淡(暗)到非常亮(亮)之间的颜色不显示颜色相近的颜色范围。这个区间范围内是在-255到255之间。Grayscale(灰度):Grayscale(灰度):灰色与黑色调表示物体。在每个像素点都有从0到100的灰度值。通常生成的图像黑白或灰度扫描仪显示为灰色。Invert(底片效果):减去各颜色分量的由255例如,红色为当前像素00的值,一般设定值为II=255-0。3.3系统界面需求分析一个软件好不好用主要是看他是否你让用户能更加容易的和有效的使用该系统的关键。从现在的市场需求来看,一个好的友好型软件可以在市场具有更好的竞争力。因此我们不仅需要在核心技术上有过硬的技术,还必须在用户体验上投入精力。本系统采用大众界面的开发,更加简洁的界面已经友好的操作体验,美观得体的要求。界面的设计一般情况下都是按照下面的基本原则:一致的用户界面风格。保证界面和产品他们俩的相同性。对于一个列表框,在点击该条的条目在点击该条目下面的字列表条目具有相同的事件。接口布局是非常重要的。首先他需要从上到下从左到右的进行阅读,因为这些要求都是根据人类的习惯进行编排的。信息和标签的写法应该是合适的。显示器上的各类文本的信息是使用者可以得到信息的最主要的来源。要是文辞没有写好,这样用户将很难去理解本意所以文辞非常重要。所以在写说辞时一定要注意不要去写那种缩写,这样很容易让用户理解不清楚造成用户体验非常差。使用适当的颜色。使用颜色要谨慎。如果使用的话,还使用了指示器。问题在于,一些用户可能色盲。对于大部分来说颜色不是阻碍他们理解信息的的障碍石,但是作为一个进入市场的软件同样需要考虑部分小群体,所以在软件字体颜色上,我们需要做到全面。所以我们必须在做一些额外的工作使得软件的可使用性达到最大化。

4概要设计4.1系统流程图形图像的处理系统分成三个部分。一开始是图形图像的信息收集,其次是图形图像的分析,最后是图形图像的处理并进行界面表达。图像信息收集阶段就是对图片进行扫描收集好每一个像素点然后进行保存好。然后在对每一个像素点进行进行分析判断它的值并给与标识,最后通过相应的算法进行进行相应的图像处理。通过在每个目标图像和之前图像的像素关系,进行抽象的符号运算,理解和解释原始图像内容来把握客观场景的描述,研究的主要阶段的性质图像理解,客观世界提供信息,引导和调节行为,这样的过程和人类思维是及其相识的。由于时间及能力的原因,这次系统设计只能实现以下几个功能:完成了图像处理中的打开、关闭、保存、Filter(过滤)、Gamma校正、Brightness(亮度)、Contrast(对比度)、Grayscale(灰度)、Invert(底片效果)等处理;图4-1总体框架流程图这次的设计是建立在图形图像的分析的过程:运行程序,首先选择位图文件路径,选择图像文件,再对选取的位图文件进行图像处理,Filter(过滤)、Gamma校正、Brightness(亮度)、Contrast(对比度)、Grayscale(灰度)、Invert(底片效果)等处理。 4-2打开图像处理流程4-3图像保存处理流程4.2功能框架结构本系统采用C#语言在VC6.0平台下实现。整个系统的功能采用菜单式法,也就是系统进入到MainDlg时用户可以通过系统Menu来进行一系列的操作,下面简述一下系统的功能。图像基本处理:这个功能就是将选取的图像进行处理,将选取的BMP格式的图像分别进行各种功能的处理,也可以对图片同时进行各种功能的处理,最后将图像保存为BMP格式。退出系统:推出所有服务和关闭所有相关进程。文件的功能模块分为打开、保存两个功能。打开:为用户提供浏览BMP图片的功能。保存:用户截图下来的图像会在MainDlg界面中显示出来,用户可以通过这个功能来将处理后的图像保存下来。4-4系统设计总体框架34.3用户界面设计系统界面设计如图4-5所示:图4-5系统界面4.4小结本节主要是对系统的概要设计,从刚开始的完全没有头绪到最后的慢慢有了思绪,并且在老师和同学的帮助下对系统的流程和步骤更加的清晰,然后在画流程图也就非常顺利了。这有助于我之后的代码实现,使得编写程序不会那么的无头无需了,加快了系统设计的进程,其实这程序最主要也是最难的就是一些图像处理的算法,以及对图像的像素点的遍历和获取,做好了这些事也就把这个系统最主要的地方解决了。最后谢谢老师和同学们的帮助。

5详细设计负责图像处理的ImageHandler类其中有以下功能,比如图像的存储、图像间的关联操作等。功能包括:获取图片的信息、Filter(过滤)、Gamma校正、Brightness(亮度)、Contrast(对比度)、Grayscale(灰度)、Invert(底片效果)。Paint主要是使用AutoScoolPosition属性来发现滚动的位置,然后使用AutoScrollMinSize属性进行设置。5.1ColorFilter(色相)关于色相的说明: 从光感,色相的不一样是因为光波长的长度不一样。彩色的滤光片是对色彩的光谱吸收类别进行分类:短,长,混合等波长;然后合并成切片形状,在单颜色或者彩色的颜色之间变换。这个相对简单的,只要减小每个像素的值就可以达到了。也使图片255至零下两种颜色。例如,蓝相,在保证蓝色值的不改变的状况下,而绿色和紫色分别以减去255。图5-1导入原图

图5-2RedFilter结果图图5-3GreenFilter结果图

图5-4BlueFilter结果图Code:///设置色相publicvoidSetColorFilter(ColorFilterTypescolorFilterType){Bitmaptemp=(Bitmap)_currentBitmap;Bitmapbmap=(Bitmap)temp.Clone();Colorc;for(inti=0;i<bmap.Width;i++){for(intj=0;j<bmap.Height;j++){c=bmap.GetPixel(i,j);intnPixelR=0;intnPixelG=0;intnPixelB=0;if(colorFilterType==ColorFilterTypes.Red){nPixelR=c.R;nPixelG=c.G-255;nPixelB=c.B-255;}elseif(colorFilterType==ColorFilterTypes.Green){nPixelR=c.R-255;nPixelG=c.G;nPixelB=c.B-255;}elseif(colorFilterType==ColorFilterTypes.Blue){nPixelR=c.R-255;nPixelG=c.G-255;nPixelB=c.B;}nPixelR=Math.Max(nPixelR,0);nPixelR=Math.Min(255,nPixelR);nPixelG=Math.Max(nPixelG,0);nPixelG=Math.Min(255,nPixelG);nPixelB=Math.Max(nPixelB,0);nPixelB=Math.Min(255,nPixelB);bmap.SetPixel(i,j,Color.FromArgb((byte)nPixelR, (byte)nPixelG,(byte)nPixelB));}}_currentBitmap=(Bitmap)bmap.Clone();}5.2Gamma(曲线) Gamma(曲线)从CRT(监视器/电视)的响应曲线,就是亮度和输进来的电压它们之间的非线性关系。Gamma(曲线)校正补偿现有彩色显示的差别,从而使在不同的显示器的图像显示相同的效果的不同的输出设备。图5-5原图

图5-6Gamma校正结果图Code:///曲线publicvoidSetGamma(doublered,doublegreen,doubleblue){Bitmaptemp=(Bitmap)_currentBitmap;Bitmapbmap=(Bitmap)temp.Clone();Colorc;byte[]redGamma=CreateGammaArray(red);byte[]greenGamma=CreateGammaArray(green);byte[]blueGamma=CreateGammaArray(blue);for(inti=0;i<bmap.Width;i++){for(intj=0;j<bmap.Height;j++){c=bmap.GetPixel(i,j);bmap.SetPixel(i,j,Color.FromArgb(redGamma[c.R], greenGamma[c.G],blueGamma[c.B]));}}_currentBitmap=(Bitmap)bmap.Clone();}///获取曲线数组///<paramname="color">色彩</param>///<returns>数组</returns>privatebyte[]CreateGammaArray(doublecolor){byte[]gammaArray=newbyte[256];for(inti=0;i<256;++i){gammaArray[i]=(byte)Math.Min(255,(int)((255.0* Math.Pow(i/255.0,1.0/color))+0.5));}returngammaArray;}5.3Brightness(亮度)Brightness(亮度):是颜色区间。表示的是它从昏暗到亮的没有色彩的颜色之间的相似处。取值的范围在-255到255之间。

图5-7原图

图5-8Brightness(亮度)结果图Code///<summary>///设置亮度///</summary>///<paramname="brightness">亮度,-255到+255之间的数值</param>publicvoidSetBrightness(intbrightness){Bitmaptemp=(Bitmap)_currentBitmap;Bitmapbmap=(Bitmap)temp.Clone();if(brightness<-255)brightness=-255;if(brightness>255)brightness=255;Colorc;for(inti=0;i<bmap.Width;i++){for(intj=0;j<bmap.Height;j++){c=bmap.GetPixel(i,j);intcR=c.R+brightness;intcG=c.G+brightness;intcB=c.B+brightness;if(cR<0)cR=1;if(cR>255)cR=255;if(cG<0)cG=1;if(cG>255)cG=255;if(cB<0)cB=1;if(cB>255)cB=255;bmap.SetPixel(i,j,Color.FromArgb((byte)cR,(byte)cG, (byte)cB));}}_currentBitmap=(Bitmap)bmap.Clone();}5.4.Contrast(对比度)对比度就是指显示器上面同一个点钟最亮与最暗的亮度比值。卓越的品质和出色的液晶显示面板背光亮度可以同时合理的全彩色明亮,清晰的图像来获得。图5-9原图图5-10Contrast(对比度)结果图Code:///<summary>///设置对比度///</summary>///<paramname="contrast">对比度,-100到+100之间的数值 //</param>publicvoidSetContrast(doublecontrast){Bitmaptemp=(Bitmap)_currentBitmap;Bitmapbmap=(Bitmap)temp.Clone();if(contrast<-100)contrast=-100;if(contrast>100)contrast=100;contrast=(100.0+contrast)/100.0;contrast*=contrast;Colorc;for(inti=0;i<bmap.Width;i++){for(intj=0;j<bmap.Height;j++){c=bmap.GetPixel(i,j);doublepR=c.R/255.0;pR-=0.5;pR*=contrast;pR+=0.5;pR*=255;if(pR<0)pR=0;if(pR>255)pR=255;doublepG=c.G/255.0;pG-=0.5;pG*=contrast;pG+=0.5;pG*=255;if(pG<0)pG=0;if(pG>255)pG=255;doublepB=c.B/255.0;pB-=0.5;pB*=contrast;pB+=0.5;pB*=255;if(pB<0)pB=0;if(pB>255)pB=255;bmap.SetPixel(i,j,Color.FromArgb((byte)pR, (byte)pG,(byte)pB));}}_currentBitmap=(Bitmap)bmap.Clone();}5.5Grayscale(灰度)Grayscale(灰度):灰色与黑色调表示物体。在每个像素点都有从0到100的灰度值。通常生成的图像黑白或灰度扫描仪显示为灰色。图5-11原图图5-12Grayscale(灰度)结果图Code:///<summary>///设置灰度///</summary>publicvoidSetGrayscale(){Bitmaptemp=(Bitmap)_currentBitmap;Bitmapbmap=(Bitmap)temp.Clone();Colorc;for(inti=0;i<bmap.Width;i++){for(intj=0;j<bmap.Height;j++){c=bmap.GetPixel(i,j);bytegray=(byte)(.299*c.R+.587*c.G+.114*c.B);bmap.SetPixel(i,j,Color.Fr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论