您好,欢迎访问三七文档
目录1技术要求..........................................................12基本原理..........................................................12.1颜色模型....................................................12.1.1RGB模型...............................................12.1.2HSI模型...............................................22.2红眼图像....................................................23建立模型描述......................................................33.1去红眼的算法................................................33.2程序框图....................................................33.3程序中用到的相关函数........................................43.3.1uigetfile函数.........................................43.3.2strcat函数............................................53.3.3函数...................................................63.3.4find函数..............................................73.3.5cat函数...............................................84模块功能分析或源程序代码.........................................115调试过程及结论...................................................166心得体会.........................................................187参考文献.........................................................19武汉理工大学《能力拓展训练》报告书1彩色图像去红眼1技术要求参考教材p213页,编程可用Matlab或VC++,要求设计程序界面。2基本原理2.1颜色模型为了科学地定量描述和使用颜色,人们提出了各种颜色模型。目前常用的颜色模型按用途可分为三类:计算颜色模型、视觉颜色模型和工业颜色模型。计算颜色模型用于进行有关颜色的理论研究。常见的RGB模型、CIEXYZ模型、Lab模型等均属于此类型。视觉颜色模型是指与人眼对颜色感知的视觉模型相似的模型,它主要用于色彩的理解,常见的有HIS模型、HSV模型和HSL模型。工业颜色模型侧重于实际应用,包括彩色系统、彩色传输系统及电视传输系统等。如印刷中用的CMYK模型、电视系统中用的YUV模型、用于彩色图像压缩的YCbCr模型。2.1.1RGB模型RGB模型也称为加色法混色模型。它是以RGB三色光互相叠加来实现混色的方法,因而适合于显示器等发光体的显示。其混色规律是:以等量的红、绿、蓝基色光混合。设颜色传感器把数字图像上的一个像素编码成(R,G,B),每个分量量化范围为[0,255]共256级。因此,RGB模型可以大约表示成1670万种颜色。这足以表示自然界的任一颜色,故又称其为24位真彩色。RGB模型与显示器等设备有着很好的对应关系,RGB显示器中,有三种荧光粉能够分别发出红、绿、蓝三种颜色,三个相邻的荧光点构成一个像素,这些荧光点受武汉理工大学《能力拓展训练》报告书2到三束强度分别为c1、c2、c3的电子束的轰击,会发生不同的亮度,通过物理上的叠加或混合,使可显示出相应的颜色。2.1.2HSI模型HIS模型是美国色彩学家蒙塞尔于1915年提出的,它反映了人的视觉系统感知彩色的方式,以色调、饱和度和强度三种基本特征量来感知颜色。色调H(Hue)与光波的波长有关,它表示人的感官对不同的颜色的感受,如红色、绿色、蓝色等,它可以表示一定的范围的颜色,如暖色、冷色等。饱和度S(Saturatuin)表示颜色的纯度,纯光谱色是完全饱和的,加入白光会稀释饱和度。饱和度越大,颜色看起来就会越鲜艳,反之亦然。强度I(Intensity),对应成像亮度和图像灰度,是颜色的明亮程度。HIS模型的建立是基于两个重要的事实:a、I分量与图像的彩色信息无关;b、H和S分量与人感受颜色的方式是紧密相联的。这些特点使得HIS模型非常适合彩色特性检测与分析。2.2红眼图像红眼对于动物来说产生的现象各不相同,根据专家介绍,家畜出现红眼现象的情况比较常见,宠物的眼睛在视网膜底部通常都有一个反射层,这能够增强它们在夜间的视物能力,很明显,这些眼膜反射层同动物本身的毛色有所不同,因此在闪光灯的刺激下出现的现象会各不相同,比如一条黑狗具有绿色的放射层,那么出现的就不是红眼现象而是绿眼现象。有一些动物,比如一些狗和兔子没有眼膜放射层,因此在闪光灯下会出现和人类一样的红眼现象。人类红眼现象一般是在光线较暗的环境下拍摄的时候,瞳孔放大让更多的光线通过,因此视网膜的血管就会在照片上产生泛红现象,而对于动物来说,即使在光线充足的情况下拍摄也会出现这类现象。在光线较暗的环境中,人眼瞳孔会放大让更多的光线通过。在这种情况下,如果拍摄时打开了闪光灯,眼底视网膜上毛细血管就会被拍摄下来,在照片上的反映就是人眼发红,即红眼现象。武汉理工大学《能力拓展训练》报告书3消除红眼的原理即减少瞳孔放大的程度,使得照射到视网膜上的光线减少,从而减轻红眼现象。现在常用的消除红眼方式有两种,其中一种方法是在和镜头方向一致的方向上发射出明亮的光线,另外一种方法是先启动闪光灯然后再曝光,或者缩短闪光灯持续时间。对于已经产生红眼的图像,我们可以用一些软件进行修整去掉红眼,去红眼技术常用的颜色模型有:RGB模型、CIELab模型、HIS模型。统计资料表明,人眼中的红眼有如下特征:440.3{hs式(1)3建立模型描述3.1去红眼的算法根据式(1)得出的算法如下:(1)确定眼部区域Reye;(2)对Reye中的每一个像素,将其由RGB模型转换为HIS模型。(3)将满足式(1)的像素的饱和度s置为零,即变成灰色。(4)重复执行(2)~(3),直到处理完Reye中的所有像素。3.2程序框图开始获取一张存在红眼现象的一张图片,并将其数据读取用RGBHIS模型来处理获取的图片数据,分别获得H、S、I的图像武汉理工大学《能力拓展训练》报告书43.3程序中用到的相关函数3.3.1uigetfile函数此函数的用法为[FileName,PathName,FilterIndex]=uigetfile(FilterSpec,DialogTitle,DefaultName)其中FileName:返回的文件名;PathName:返回的文件的路径名;FilterIndex:选择的文件类型;FilterSpec:文件类型设置;DialogTitle:打开对话框的标题;DefaultName:默认指向的文件名。1.最简单的形式,只设置了一种可选择的文件类型[FileName,PathName]=uigetfile('*.m','SelecttheM-file');2.设置多种文件类型[filename,pathname]=...uigetfile({'*.m';'*.mdl';'*.mat';'*.*'},'FileSelector');根据前面获得的数据,将HIS模型和RGB模型进行转换,然后处理获得除去红眼的图像程序结束图(1)武汉理工大学《能力拓展训练》报告书53.可以为文件类型设置说明,注意书写格式[filename,pathname]=uigetfile(...{'*.m;*.fig;*.mat;*.mdl','MATLABFiles(*.m,*.fig,*.mat,*.mdl)';'*.m','M-files(*.m)';...'*.fig','Figures(*.fig)';...'*.mat','MAT-files(*.mat)';...'*.mdl','Models(*.mdl)';...'*.*','AllFiles(*.*)'},...'Pickafile');4.可返回选择的文件类型序号,并且可以设置文件多选,设置文件多选时注意,当只选了一个文件时,返回的filename为字符串,选择多个文件时,返回的元胞类型。[filename,pathname,filterindex]=uigetfile(...{'*.mat','MAT-files(*.mat)';...'*.mdl','Models(*.mdl)';...'*.*','AllFiles(*.*)'},...'Pickafile',...'MultiSelect','on');5.可以设置默认文件名uigetfile({'*.jpg;*.tif;*.png;*.gif','AllImageFiles';...'*.*','AllFiles'},'mytitle',...'C:\Work\myfile.jpg')3.3.2strcat函数1.定义strcat即StringsCatenate,横向连接字符串。2.语法combinedStr=strcat(s1,s2,...,sN)武汉理工大学《能力拓展训练》报告书63.描述将数组s1,s2,...,sN水平地连接成单个字符串,并保存于变量combinedStr4中。如果任一参数是元胞数组,那么结果combinedStr是一个元胞数组,否则,combinedStr是一个字符数组。4.实例a='Hello'a=Hellob='Matlab'b=Matlabc=strcat(a,b)c=HelloMatlab3.3.3函数该函数用于读取图片文件中的数据。在matlab的命令窗口中输入docimread或者helpimread即可获得该函数的帮助信息。调用格式A=imread(filename,fmt)[X,map]=imread(filename,fmt)[...]=imread(filename)[...]=imread(URL,...)[...]=imread(...,idx)(CUR,GIF,ICO,andTIFFonly)[...]=imread(...,'PixelRegion',{ROWS,COLS})(TIFFonly)[...]=imread(...,'frames',idx)(GIFonly)[...]=imread(...,ref)(HDFonly)[...]=imread(...,'BackgroundColor',BG)(PNGonly)[A,map,alpha]=imread(...)(ICO,CUR,andPNGonly武汉理工大学《能力拓展训练》报告书73.3.4find函数它的功能是找到非零元素的索引和值。语法如下:1.ind=find(X)2.ind=find(X,k)3.ind=find(X,k,'first')4.ind=find(X,k,'last')5.[row,col]=find(X,...)6.[row,col,v]=find(X,...)说明:1.ind=find(X)找出矩阵X中的所有非零元素,并将这些元素的线性索引值(linearindices:按列)返回到向量ind中
本文标题:去红眼报告
链接地址:https://www.777doc.com/doc-6284591 .html