《图像处理综合实验报告(共18页).doc》由会员分享,可在线阅读,更多相关《图像处理综合实验报告(共18页).doc(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上专业综合实验报告图像处理学 院: 专 业: 班 级: 学 号: 姓 名:指导教师: 2011.12.1实验二 图像变换一、 实验目的学习灰度变换修正图像的颜色和灰度的方法。学习图像直方图的生成和修正技术的原理和实现方法,理解其对于观察图像的意义。了解图像变换的意义和手段,熟练掌握傅里叶变换等图像正交变换方法,了解二维频谱的分布特点。二、 实验要求1.掌握灰度变换函数的用法,对图像进行灰度变换,增强对比度,显示变换前后的图像以及它们的灰度直方图。2.选择一幅直方图不均匀的图像,对其作直方图均衡化处理,显示处理前后的图像以及它们的灰度直方图。三、实验内容1.直方图均衡化处
2、理I1=imread(h1.bmp); % 读入原图像I2=imread(h2.bmp); % 读入原图像I3=imread(h3.bmp); % 读入原图像I4=imread(h4.bmp); % 读入原图像J=histeq(I); %对原图像进行直方图均衡化处理imshow(I); %显示原图像title(原图像); %给原图像加标题名figure,imshow(J); %对原图像进行屏幕控制;显示直方图均衡化后的图像title(直方图均衡化所得图像); %给直方图均衡化后的图像加标题名figure;subplot(121); %对直方图均衡化后的图像进行屏幕控制;作一幅子图作为并排两幅图
3、的第1幅图imhist(I,64); %将原图像直方图显示为64级灰度title(原图像直方图); %给原图像直方图加标题名subplot(122); %作第2幅子图imhist(J,64); %将均衡化后图像的直方图显示为64级灰度title(均衡变换后的直方图); %给均衡化后图像直方图加标题名2. 显示图像频谱I=imread(chuizhi.bmp); %读入原图像文件imshow(I); %显示原图像fftI=fft2(I); %二维离散傅立叶变换sfftI=fftshift(fftI); %直流分量移到频谱中心RR=real(sfftI); %取傅立叶变换的实部II=imag(sf
4、ftI); %取傅立叶变换的虚部A=sqrt(RR.2+II.2);%计算频谱幅值A=(A-min(min(A)/(max(max(A)-min(min(A)*225; %归一化figure; %设定窗口imshow(A); %显示原图像的频谱四、思考题1直方图是什么概念?它反映了图像的什么信息?答:直方图是图像亮度分布的概率密度函数,是图像最基本的统计特征,它反映的是图像的灰度值的分布情况和图像的明暗分布规律,。直方图操作能有效地用于图像增强,其固有的信息还可用于在其他图像处理应用中,如图像压缩与分割。直方图在软件中易于计算,也适用于商用硬件设备,因此,它们成为了实时图像处理的一个流行工具。
5、2直方图均衡化是什么意思?它的主要用途是什么?答:直方图均衡化的目的是使图像在整个灰度值动态变化范围内的分布均匀化,改善图像的亮度分布状态,增强图像的视觉效果。灰度直方图是图像预处理中涉及最广泛的基本概念之一。直方图均衡化是通过灰度变换将一幅图像转换为另一幅具有均衡直方图,即在每个灰度级上都具有相同的象素点数的过程3直方图规定化是什么意思?它的主要用途是什么?答:直方图匹配(规定化)函数histeq实现直方图匹配的形式为:g=histeq(f,hspec)其中,f为输入图像,hspec为指定的直方图(一个由指定值构成的行向量),g为输出图像,其直方图近似于指定的直方图hspec。向量中包含对应
6、于等分空间bin的整数值。histeq的一个特性是在length(hspec)远小于图像f中的灰度级数时,图像g的直方图通常会较好地匹配hspec。4傅里叶变换有哪些重要的性质?答:1.在傅里叶变换(FT, Fourier Transform)域中,高频分量往往对应图像的边缘2. 傅里叶变换后,图像能量往往集中在少数项上,或者说能量主要集中在低频分量上,于是通过对低频成分分配较多的比特数,对高频成分分配较少的比特数,即可实现图像数据压缩。3. 舍弃变换函数矩阵中某些幅度小的系数,可缩减计算维数,提高计算速度等等。5图像的二维频谱在显示和处理时应注意什么? 这两种处理过程不可互换。即fftshi
7、ft(fft2(f)fft2(fftshift(f)。实验三 图像增强一、 实验目的掌握常见的图像噪声种类。学习用于图像增强中的去噪声等平滑技术。理解在空间域邻域平均法和中值滤波的原理、特点、适用对象。学习用于突出目标形状特征、改善视觉效果的图像锐化技术的原理和常用方法。二、 实验要求1用邻域平均法对含噪声图像进行滤波,比较不同邻域半径的处理效果。2用邻域平均法和中值滤波两种方法分别处理叠加椒盐噪声和高斯噪声的图像,比较其滤波效果。三、实验原理及内容图像增强是指按特定的需要突出一幅图像中的有用信息,同时,消弱或去除某些不需要的信息,提高图像的使用价值的处理方法。常用的图像增强技术有灰度修正法、
8、直方图修正法,图像平滑处理、图像锐化处理、几何校正和彩色处理技术等空间域处理方法。还有频域增强、维纳滤波和卡尔曼滤波等频率域处理方法。1.邻域平均法滤波I=imread(Example-1.bmp);J=imnoise(I,gaussian,0,0.02);subplot(2,2,1),imshow(I);title(原图像)subplot(2,2,2),imshow(J);title(添加高斯噪声图像)K1=filter2(fspecial(average,3),J)/255; %应用33邻域窗口法subplot(2,2,3),imshow(K1);title(33窗的邻域平均滤波图像)K2
9、=filter2(fspecial(average,5),J)/255; %应用33邻域窗口法subplot(2,2,4),imshow(K2);title(55窗的邻域平均滤波图像)I=imread(Example-1.bmp);J1=imnoise(I,gaussian,0,0.02);J2=imnoise(I,salt & pepper,0.02);subplot(2,2,1),imshow(I);subplot(2,2,1),imshow(I);title(原图像)subplot(2,2,2),imshow(J);title(添加高斯噪声图像)K1=filter2(fspecial(a
10、verage,3),J)/255; %应用33邻域窗口法subplot(2,2,3),imshow(K1);title(33窗的邻域平均滤波图像)B=medfilt2(K1); %应用33邻域窗口法subplot(2,2,4),imshow(B);title(中值滤波图像)四、思考题1在对图像进行邻域平均法滤波时,邻域半径的大小对图像有什么影响,为什么?答:半径不同,图像的模糊度也不同。2邻域平均法更适合于处理高斯噪声还是椒盐噪声?试分析原因。答:邻域平均法更适合于处理高斯噪声。3中值滤波更适合于处理高斯噪声还是椒盐噪声?试分析原因。答:中值滤波更适合于处理椒盐噪声。4对叠加有乘性噪声的图像,
11、设计一种处理方法,既能去噪声又能保持边缘清晰。答:采用取对数的方法使乘性噪声变为加性噪声。实验四 图像分割一、 实验目的掌握常用的边缘提取算法,从图像中提取感兴趣的区域,实现图像分割。在图像中,寻找灰度相同或相似的区域,区分图像中的背景区域和目标区域,利用Matlab实现图像的边缘检测,进行图像分割。二、 实验要求1 运用罗伯特梯度算子、Sobel算子、Prewitt算子、LoG算子、Canny算子等检测图像边缘,编程实现并观看图像分割的效果。2 运用边缘检测函数edge对图像作边缘检测,并观看检测效果。三、实验原理及内容图像边缘是图像中特性(如像素灰度、纹理等)分布的不连续处,图像周围特性有
12、阶跃变化或屋脊状变化的那些像素的集合。图像边缘存在于目标与背景、目标与目标、基元与基元的边界,标示出目标物体或基元的实际含量,是图像识别信息最集中的地方。图像分割处理主要用于检测出图像中的轮廓边缘、细节以及灰度跳变部分,形成完整的物体边界,达到将物体从图像中分离出来或将表示同一物体表面的区域检测出来的目的。常用的分割方法是边缘检测。边缘检测是采用多种边缘算子实现突出图像边缘,抑制图像中非边缘信息,使图像轮廓更加清晰。1. Laplacian算子和模板匹配法示例I=imread(Example-2.bmp);subplot(1,4,1);imshow(I);title(原图像);H=fspeci
13、al(sobel); %应用sobel模板滤波锐化图像sobelH=filter2(H,I);subplot(1,4,2);imshow(sobelH);title(sobel模板锐化图像);H=fspecial(laplacian); %应用Laplacian算子滤波锐化图像laplacianH=filter2(H,I);subplot(1,4,3);imshow(laplacianH);title(laplacian算子锐化图像);H=fspecial(prewitt); %应用prewitt模板滤波锐化图像prewittH=filter2(H,I);subplot(1,4,4);imsh
14、ow(prewittH);title(prewitt模板锐化图像);2边缘检测的函数edgeI=imread(Example-2.bmp);subplot(1,4,1);imshow(I);title(原图像);BW1 = edge(I,sobel ); subplot(1,4,2);imshow(BW1);title(edge- sobel);BW2 = edge(I,prewitt); subplot(1,4,3);imshow(BW2);title(edge- prewitt );BW3 = edge(I,roberts); subplot(1,4,4);imshow(BW3);titl
15、e(edge- roberts);四、思考题1分析Sobel算子特点,并给予说明。答:Sobel相对于先对图像进行加权平均再做差分。2分析laplacian算子特点,并解释它为何能增强图像的边缘?答:拉普拉斯算子定义图像f(x,y)的梯度为 锐化后的图像g为 式中k为扩散效应系数。对系数k的选择要合理,太大会使图像中的轮廓边缘产生过冲;太小则锐化不明显。3比较各个边缘算子对图像边缘的检测效果。答:laplacian算子对边缘的处理最明显,Sobel和 prewitt较差一些。4比较各个边缘检测算子对噪声的敏感性,并提出抗噪声性能较好的边缘检测的方法。答:laplacian算子对噪声的敏感性最强
16、,可先对图像进行平滑处理,再进行边缘检测实验五 图像压缩一、 实验目的1 理解有损压缩和无损压缩的概念;2 理解图像压缩的主要原则和目的;3 了解几种常用的图像压缩编码方式。4 利用MATLAB程序进行图像压缩。二、 实验原理图像压缩原理图像压缩主要目的是为了节省存储空间,增加传输速度。图像压缩的理想标准是信息丢失最少,压缩比例最大。不损失图像质量的压缩称为无损压缩,无损压缩不可能达到很高的压缩比;损失图像质量的压缩称为有损压缩,高的压缩比是以牺牲图像质量为代价的。压缩的实现方法是对图像重新进行编码,希望用更少的数据表示图像。信息的冗余量有许多种,如空间冗余,时间冗余,结构冗余,知识冗余,视觉
17、冗余等,数据压缩实质上是减少这些冗余量。高效编码的主要方法是尽可能去除图像中的冗余成分,从而以最小的码元包含最大的图像信息。三、实验内容I = imread(Example-3.bmp);m n=size(I);J=;for i=n:m value=I(i,1); num=1; for j=2:n if I(i,j)=value num=num+1; else J=J num value; num=1; value=I(i,j); endendI=J num value 0 0; %添加的行判断位 0 0enddisp(原图像大小:)whos(I);disp(压缩图像大小:)whos(J);d
18、isp(图像的压缩比:)disp(m*n/length(J)原图像大小: Name Size Bytes Class I 1x454 454 uint8 arrayGrand total is 454 elements using 454 bytes压缩图像大小: Name Size Bytes Class J 1x450 450 uint8 arrayGrand total is 450 elements using 450 bytes图像的压缩比: 145.6356JPEG:76.9KBTIF: 364KBBMP: 102KB四、思考题1图像中哪些信息是主要的,哪些信息是次要的?2简述离散
19、余弦变换(DCT)和行程编码(RLE)的原理。答:离散余弦变换(DCT)图像压缩原理1).离散余弦变换DCT在图像压缩中具有广泛的应用,它是JPEG、MPEG等数据压缩标准的重要数学基础。和相同图像质量的其他常用文件格式(如GIF(可交换的图像文件格式),TIFF(标签图像文件格式),PCX(图形文件格式)相比,JPEG是目前静态图像中压缩比最高的。JPEG比其他几种压缩比要高得多,而图像质量都差不多(JPEG处理的图像只有真彩图和灰度图)。正是由于其高压缩比,使得JPEG被广泛地应用于多媒体和网络程序中。JPEG有几种模式,其中最常用的是基于DCT变换的顺序型模式,又称为基本系统(Basel
20、ine)。2).行程编码(RLE)原理:例如如下这幅 的二值图像,如果采用行程编码可以按如下格式保存其中10和8表示图像的宽和高。在这个小例子中行程编码并没有起到压缩图像的作用。这是由于这个图的尺寸过小,当图像尺寸较大时行程编码还是不错的无损压缩方法。对于灰度图像和二值图像,用行程编码般都有很高的压缩率。行程编码方法实现起来很容易,对于具有长重复值的串的压缩编码很有效,例如:对于有大面积的阴影或颜色相同的图像,使用这种方法压缩效果很好。很多位图文件格式都采用行程编码,如TIFF,PCX,GEM,BMP等实验六 图像运算与区域处理一、实验目的学习并掌握图像运算的一些方法,便于图像的分析与理解。二
21、、实验内容和要求a) 实现图像的算术运算(加、减、乘、除及求补运算)。b) 实现图像的位逻辑运算。c) 实现图像的几何运算。d) 实现图像的空间变换。e) 实现图像的区域处理。三、实验结果及分析5.1 车牌图像预处理首先要做的是去除背景,为下一步的二值化做铺垫,在这里我们对车辆图像背景进行TopHat变换,车牌图像被很好的保留下来,背景图像则变得不清晰。如图b所示。 (a) (b)图车牌灰度转换(a)转换前;(b)转换后进行灰度拉伸前后车牌区域的效果对比如图四所示。从图中可以看出,拉伸后的对比度明显增强。 图像进行灰度拉伸前后牌照区域的效果对比5.2 车牌图像二值化即边缘检测对顶帽变换后的图像
22、本文选取了Otsu的方法进行二值化,对不同的图片效果进行特定的阈值设定,结果见图。图c. 二值化操作效果图边缘检测对比图如图所示。 原灰度图 canny边缘检测 Roberts边缘检测 sobel边缘检测5.3对灰度图像进行车牌区域提取提取出的灰度图像车牌区域如图:5.4对二值图像进行车牌区域提取对二值图像进行车牌区域提取的结果如图:5.5车牌字符分割的MATLAB实现如图程序源码图象提取程序如下:close all;%Tophat算法:I=imread(831.bmp);%读取图片se=strel(disk,10);%使用顶帽算法处理此图片f1=imtophat(I,se);%二值化算法:f
23、2= imadjust(f1, stretchlim(f1), 0 1);%首先调整图像亮度值f3 = im2double(f2);bw = im2bw(f3,0.8);%对图像进行二值化%横向截取图片%bwImage=bw;hist = sum(bwImage);%统计图像的白色点数noise=20;%设定噪声min_height = 26;%设定最小阈值max_height = 48;%设定最大阈值res = -1;found = 0;% 在发现一个好信号之前反复迭代%while res = -1 if noise 40 break; end; % 如果信号高于噪声,我们增加噪声反复迭代%
24、 noise = noise + 1; s = find(hist noise); % 没有发现满足条件的信号% if(length(s) = min_height & s(1) - 1 = min_height&length(hist)-s(length(s)= min_height & s(i)-s(i-1) max_height res = i-1; found =1; break; end; end; if found = 1 break; end;end;% 成功的话,返回创建区域的图像%if res = -1 low = s(res); high = s(res+1); image
25、 = bwImage(low: high, :);else % 否则,返回原始图像% image = bwImage;end;%统计白色像素点x,y=size(image);myI=double(image);%统计分析%X方向%white_x=zeros(x,1);for i=1:x for j=1:y if(myI(i,j)=1)%判断是否为白色亮度点 white_x(i,1)=white_x(i,1)+1;%统计每行白色点的个数 end endendtemp MaxX=max(white_x);PX1=x/2;while (white_x(PX1,1)1)%设定阈值 PX1=PX1-1;
26、end PX2=x/2;while (white_x(PX2,1)=200)&(PX2x) PX2=PX2+1;endIX=image(PX1:PX2,:);figure(55),imshow(IX)%Y方向%white_y=zeros(1,y);for j=1:y for i=PX1:PX2 if(myI(i,j)=1) white_y(1,j)=white_y(1,j)+1; end endendPY1=1;while ( white_y(1,PY1)13)&(PY1y) PY1=PY1+1;end PY2=y;while ( white_y(1,PY2)PY1) PY2=PY2-1;en
27、dPlate=image(PX1:PX2,PY1:PY2,:);%提取车牌figure(8),imshow(Plate)%显示各步骤的图像%subplot(2,3,1),imshow(I);subplot(2,3,2),imshow(f1);subplot(2,3,3),imshow(bw);subplot(2,3,4),imshow(image);subplot(2,3,5),imshow(IX);subplot(2,3,6),imshow(Plate);图象切分程序如下:I=imread(车牌截取.JPG);%I=imread(49-3-BW01.jpg);I=im2bw(I,0.43);
28、y x=size(I);Top=zeros(1,x); %顶端轮廓检测for i=1:x j=1; while(I(j,i)=1)&(j1) j=j-1; end Bottom(i)=y-j;endHeight=Top-Bottom;WordHeight=max(Height); %文字高度%=轮廓线的凹检测=%TopD=zeros(1,x-1);Concave=1; %记录凹轮廓出的位置,1表示默认起始列为第一个ConcaveDeep=0; %下降值DeepH=0; %上升值DeepT=5; %凹轮廓的深度阈值Sign=0;for i=1:x-1 TopD(i)=Top(i+1)-Top(i
29、);endfor i=1:x-2 if(TopD(i)0) if(abs(Deep)=DeepT) DeepH=DeepH+TopD(i); if(abs(DeepH)=DeepT) Concave=Concave tempX; Sign=0; %确认为凹后,复位标志位 DeepH=0; end else Sign=0; %确认为凹后,复位标志位 Deep=0; end endend%=轮廓线的凸检测=%BottomD=zeros(1,x-1);Convex=1;Asend=0; %上升值Desend=0; %下降值ConvexT=3; %凸程度阈值Sign=0;for i=1:x-1 Bot
30、tomD(i)=Bottom(i+1)-Bottom(i);endfor i=1:x-2 if(BottomD(i)0) Sign=1; Desend=0; Asend=Asend+BottomD(i); tempX=i+1; %最接近于左端 end if(Sign=1)&(BottomD(i)=ConvexT) Desend=Desend+BottomD(i); if(abs(Dsend)=ConvexT) ConvexT=Convex tempX; Sign=0; %复位 Desend=0; end else Sign=0; %复位 Asend=0; end endend%= 切分 =%M
31、ytemp n=size(Concave); %注意Concave的第一个数值无效StrokeT=5; %笔划宽度阈值GapT=8;W=zeros(1,n);for i=1:n-1 W(i)=Concave(i+1)-Concave(i);endW(n)=x-Concave(n);Width=median(W); %近似的字符宽度PXR1=1; %记录第一次切分位置PXR2=1; %记录第二次切分位置Mark=0; %记录黑白转换的次数%CrossSign=0; %交错粘连的标志White=zeros(1,x); %统计笔划像素点BP=zeros(1,x);SegSoke=zeros(3,x)
32、; %切分点处的笔划宽度RH=zeros(1,x); %切分后的高度比RW=zeros(1,x); %切分后的宽度比Score=zeros(1,x); %特征值的总得分XGood=1; %X切分位置SegY=1; %记录第一次切分的Y深度for k=2:n WordH=max(Height(Concave(k-1):Concave(k); WordW=Concave(k)-Concave(k-1); if (WordW=0.5*Width)&(WordW=1.5*Width) %选定切分的区域 PX1=Concave(k); PX2=PX1; while (TopD(PX2)=0)&(PX2x
33、) PX2=PX2+1; %凹右边的列位置 end i=fix(PX1+PX2)/2); if (Top(i)=1) %无粘连 PXR1=PXR1 i; PXR2=PXR2 i; else j=y+1-Top(i); %PY为实际的y坐标值,此处已为黑色像素点 Mark=0; while(jy)&(Mark1)&(I(j,Si)=0) %左笔划宽度 Si=Si-1; SegSoke(1,i)=SegSoke(1,i)+1; end Si=1; while(Si1)&(I(j-1,SLi)=1) %选定区域左边界 SLi=SLi-1; end SRi=i; while(SRi1.5*Width)
34、 PX=fix(Concave(k)+Concave(k-1)/2); %避免水平“横”的粘连 k=k-1; end %如果宽度过小,则不切分 endend%=Segment=%for i=2:n WI=I(:,fix(PXR1(i-1)+PXR2(i-1)/2):fix(PXR1(i)+PXR2(i)/2); figure(10+i);imshow(WI);endWI=I(:,fix(PXR1(i)+PXR2(i)/2):x);figure(10+i+1);imshow(WI);%= 图像显示 =%px=(1:x); %X轴坐标figure(1);imshow(I);figure(2);plot(Top);hold onplot(px,y,red);gridtitle(上轮廓);figure(3);plot(Bottom);hold onplot(px,y,red);gridtitle(下轮廓);figure(4);plot(Height);grid专心-专注-专业