版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE78目录第一章图像增强…………………31.1空域变换增强 31.1.1直接灰度调整 41.1.2直方图处理 101.1.3图像间的代数运算 141.2空域滤波增强 161.2.1基本原理 161.2.2平滑滤波器 171.2.3锐化滤波器 201.3频域增强 231.3.1低通滤波 241.3.2高通滤波 24第二章图像恢复和重建…………262.1退化模型 262.1.1连续退化模型 272.1.2离散退化模型 282.2复原的代数方法 292.2.1逆滤波复原 292.2.2最小二乘方滤波 302.3MATLAB实现图像复原 30第三章图像编码与压缩…………333.1图像编码与压缩概述 333.1.1图像压缩与编码的必要性 333.1.2图像压缩编码的分类 333.2无损压缩技术 343.2.1无损压缩技术概述 343.2.2霍夫曼(huffman)编码 353.2.3行程编码 383.3有损压缩编码 403.3.1有损压缩编码原理 40第四章图像分割…………………454.1灰度阈值分割法 454.1.1双峰法 454.1.2p-参数法 464.1.3最大方差自动取阈法 464.2边缘检测方法 494.2.1边缘算子法 49第五章工件尺寸和面积测量…………………….535.1图像采集部分 545.2图像处理与面积计算部分 545.2.1图像预处理 545.2.2工件面积计算 56第六章车牌识别………………….586.1总体设计方案 586.2各模块实现方法 59实验一MATLAB基本图像处理算法实验…………..78实验二机器视觉基本程序编写实验………………79实验三尺寸测量………………..80实验四模式识别…………………..81
第一章图像增强图像增强是指按特定的需要突出一幅图像中的某些信息,同时,削弱或去除某些不需要的信息的处理方法。其主要目的是处理后的图像对某些特定的应用比原来的图像更加有效。图像增强技术主要包含直方图修改处理、图像平滑化处理、图像尖锐化处理和彩色处理技术等。在实际应用中,常常是几种方法联合处理,以便达到预期的增强效果。根据具体的应用目的和要求,所需要的具体增强技术也可以大不相同。增强将不增加图像数据中的相关信息,但它将增加所选择特征的动态范围,从而使这些特征检测或识别更加容易。例如噪声(即各种干扰信号)减弱、对比度改善、变形修正、模糊消除等都属于图像增强的内容。由于种种原因,图像的品质常常是不理想的,因此图像增强成为图像处理中的重要环节。图像增强主要有空域增强和频域增强等。目前常用的增强技术根据对图像进行处理所在的空间不同,可分为基于图像域的方法和基于变换域的方法。第一类,直接在图像所在的空间处理,也就是在像素组成的空间里直接对像素进行操作,为空域变换增强;第二类,在图像的变换域对图像间接进行处理,为频域增强。空域处理法是直接对图像中的像素进行处理,基本上是以灰度映射变换为基础的,所用的映射变换取决于增强的目的。例如增加图像的对比度,改善图像的灰度层次等处理均属于空域处理法。另外,在第一类方法里还可分为两组:一是基于像素(点)的,也就是对图像的每次处理是对每个像素进行的,增强过程对每个像素的处理与其它像素无关;二是基于模板的,也就是对图像的每次处理是对于小的子图像(模板)进行的。频域处理法的基础是卷积定理,它采用修改图像傅立叶变换的方法实现对图像的增强处理。空域增强方法可以表示为g(x,y)=EH[f(x,y)](1.1)其中,f(x,y)和g(x,y)分别为增强前后的图像,EH代表增强操作。如果EH是定义在每个(x,y)上的,则EH是点操作;如果EH是定义在(x,y)的某个邻域上的,则EH成为模板操作。如果模板最小,则可以是一个点,此时就变成了点操作,所以点操作可以看作是模板操作的一个特例。本章将分别介绍利用MATLAB实现以上所提到的各种图像处理技术。1.1空域变换增强当g(x,y)的值取决于在(x,y)处的f(x,y)值时,EH就是一个灰度变换。如以s和t分别表示f(x,y)和g(x,y)在(x,y)位置处的灰度值,则此时式(1.1)可以写成:T=EH(s)(1.2)基于点操作的方法也叫灰度变换,常用的方法有以下几类:(1)直接对每个像素进行操作(2)借助直方图进行操作;(3)借助对一系列图像间的操作进行变换。1.1.1直接灰度调整1.增强对比度增强对比度实际是增强原图的各部分的反差。实际中往往是通过增加原图中某两个灰度值之间的动态范围来实现的。典型的增强对比度的变换曲线如图1.1所示。图1.1增强对比度的变换曲线图1.1增强对比度的变换曲线从图中可以看出,通过这样一个变换,原图中灰度值在和的动态范围减小了,而灰度值在的动态范围增加了,从而使这个范围内的对比度增加了。在实际应用中,、、、可取不同的值进行组合从而可到不同的效果。通常在进行特定任务的模式识别工作之前,要对所要识别的图像进行增强对比度的处理,以使辨识工作更容易,辨识结果更准确。应用变换曲线增强对比度的程序如下所示,其处理结果如图1.2所示。%(1)应用变换曲线增强对比度clear;closeall;X1=imread('flower.JPG');figure(1),subplot(2,2,1),imshow(X1),title('原图像');f0=0;g0=0;f1=70;g1=30;f2=180;g2=230;f3=255;g3=255;%绘制变换函数曲线subplot(1,2,2),plot([f0,f1,f2,f3],[g0,g1,g2,g3])axistight,xlabel('f'),ylabel('g')title('增强对比度的变换曲线')r1=(g1-g0)/(f1-f0);b1=g0-r1*f0;r2=(g2-g1)/(f2-f1);b2=g1-r2*f1;r3=(g3-g2)/(f3-f2);b3=g2-r3*f2;[m,n]=size(X1);X2=double(X1);fori=1:m%循环对矩阵中的每个元素进行变换处理forj=1:nf=X2(i,j);g(i,j)=0;if(f>=0)&(f<=f1)g(i,j)=r1*f+b1;elseif(f>=f1)&(f<=f2)g(i,j)=r2*f+b2;elseif(f>=f2)&(f<=f3)g(i,j)=r3*f+b3;end;end;end;subplot(2,2,3),imshow(mat2gray(X2));title('增强对比度后的图像');%(2)利用imadjust()函数增强对比度X1=imread('camera.gif');figure(2),subplot(1,2,1),imshow(X1),title('原图像');J=imadjust(X1,[0.25,0.6],[],1.2322)subplot(1,2,2),imshow(J),title('增强对比度后的图像);图1.2增强对比度图1.2增强对比度图1.2是在所选的参数模式下所得的增强图像,对比处理过的图像和原图像可以看出,应用变换曲线增强对比度后图像的对比度增强,更容易辨认了。对于不同的图像,根据不同的情况,所选的参数有所不同,要根据实际情况而定。2.图像求反对图像求反是将原图的灰度值翻转,简单地说,就是使黑变白,使白变黑,普通的黑白底片和照片就是这样的关系。具体的变换就是将图像中每个像素的灰度值根据变换曲线进行映射。应用变换曲线对图像求反的程序如下,运行求反的变换曲线以及所得结果如图1.3所示:X1=imread('lena.gif');figure(3),subplot(2,2,1),imshow(X1),title('原图像');f1=200;%f1和g1分别表示变换曲线在纵轴和横轴上的最大范围subplot(1,2,2),plot([0,f1],[g1,0])axistight,xlabel('f'),ylabel('g')title('图像求反的变换曲线')k=g1/f1;[m,n]=size(X1);X2=double(X1);fori=1:m%循环对矩阵中的每个元素进行变换处理forj=1:nf=X2(i,j);g(i,j)=0;if(f>=0)&(f<=f1)g(i,j)=g1-k*f;elseg(i,j)=0;end;end;end;subplot(2,2,3),imshow(mat2gray(X2)),title('求反后的图像');图1.3求反的变换曲线以及所得结果图1.3求反的变换曲线以及所得结果3.动态范围压缩这种方法的目标与增强对比度相反。当原图的动态范围太大,超出了某些显示设备所允许的动态范围时,如果直接使用原图,则有一部分信息可能丢失。解决的办法是对原图进行灰度压缩。利用对数形式的变换函数进行动态范围压缩的程序如下。我们可以使用不同的参数组合来得到不同的效果。采用对数形式的变换函数的变换曲线和处理结果如图1.4所示。%(4)采用对数形式的变换函数进行动态范围压缩X1=imread('camera.gif');figure(4),subplot(2,2,1),imshow(X1),title('原图像');%绘制变换函数曲线c=255/log(256);x=0:1:255;y=c*log(1+x);subplot(1,2,2),plot(x,y)axistight,xlabel('f'),ylabel('g')title('对数变换曲线')%循环对矩阵中的每个元素进行变换处理[m,n]=size(X1);X2=double(X1);fori=1:mforj=1:ng(i,j)=c*log(X2(i,j)+1);endendsubplot(2,2,3),imshow(mat2gray(X2)),title('对数变换处理的图像');图1.4对数形式的变换函数进行动态范围压缩结果图1.4对数形式的变换函数进行动态范围压缩结果4.灰度切分灰度切分的目的与增强对比度相似,即将某个灰度范围变得比较突出:所不同的是,这里将所要突出的灰度范围变换成较高的灰度值,而将其余灰度值变换为较低的灰度值。灰度切分的程序如下。其处理结果如图1.5所示。%(5)取s1=100;s2=200进行灰度切分s1=100;s2=200;g1=20;g2=200;X1=imread('lena.gif');figure(5),subplot(2,2,1),imshow(X1),title('原图像');%绘制变换函数曲线s1=100;s2=200;g1=20;g2=200;subplot(1,2,2),plot([0,s1,s1,s2,s2,255],[g1,g1,g2,g2,g1,g1])axistight,xlabel('f'),ylabel('g')title('s1=100,s2=200时的灰度切分变换曲线')[m,n]=size(X1);X2=double(X1);fori=1;m%循环对矩阵中的每个元素进行变换处理forj=1:nf=X2(i,j);g(i,j)=0;if(f>=s1)&(f<=s2)g(i,j)=g2;elseg(i,j)=g1;end;endend;subplot(2,2,3),imshow(mat2gray(X2));title('灰度切分的图像');图1.5灰度切分变换曲线和变换结果图1.5灰度切分变换曲线和变换结果图中的s1=100,s2=200为用户选定的参数,而s1和s2之间的灰度范围是用户想要突出的部分。图像二值化可以看作是灰度切分的一种特殊情况,它将灰度值小于某个f1的所有像素点都置为0,而将灰度值大于f1的所有像素点都置为255;如果再将0和255这两个灰度级分别映射为0和1,就得到了二值图像。图像二值化的结果和原图像如图1.6所示。图1.6图像二值化结果图1.6图像二值化结果1.1.2直方图处理图像的灰度统计直方图是一个一维离散函数:k=0,1…,L-1(1.3)式中,是图像f(x,y)的第级灰度值;是f(x,y)中具有灰度值的像素的个数;n是图像中像素的总数。由定义式可知,给出了对出现概率的一个估计,所以直方图表明了图像中灰度值的分布情况。因此,可以通过改变直方图的形状来达到增强图像对比度的效果。这种方法是一概率论为基础的,常用的方法有直方图均衡化和直方图规定化。偏暗的图像灰度范围很窄,而且主要集中在低灰度级上;偏亮的图像灰度范围主要集中在高灰度级上;灰蒙蒙的图像同样是因为灰度范围窄,动态范围小,主要集中在中间的灰度级上;正常的图像灰度范围很大,在各个灰度级上都有像素,从而使图像看起来对比度较大,细节清晰。后面将要提到的直方图均衡化和直方图规定化主要就是基于此种分析,对图像的直方图进行操作,来达到增强图像的目的。1.直方图均衡化这个方法的基本思想是把原始图像的直方图变换成均匀分布的形式,这样就增加了像素灰度值的动态范围,从而达到了增强图像整体对比度的效果。具体方法是:计算出原始图像的所有灰度级,0,1,…,L-1;统计原始图像各个灰度级的像素数;计算原始图像的直方图;计算原始图像的累计直方图,即(1.4)取整计算:(1.5)定义映射关系:;统计新直方图各灰度级的像素数:计算新的直方图:(1.6)对一幅图像实现直方图均衡化的程序如下%(7)实现直方图均衡化I=imread('peppers.gif');J=histeq(I);%直方图均衡化函数,n是均衡化后的灰度级数,缺省为64figure(7),subplot(2,2,1),imshow(I),title('原图像');subplot(2,2,2),imhist(I,64),title('原图像直方图');subplot(2,2,3),imshow(J),title('直方图均衡化');%变换后所得图像矩阵subplot(2,2,4),imhist(J,64),title('直方图均衡化后的直方图');直方图均衡化的结果如图1.7所示:图1.7直方图均衡化结果图1.7直方图均衡化结果从处理前后的图像和直方图可以看出,在许多原始图像中看不清的细节在直方图均衡化处理所得的图像中都十分清晰。2.直方图规定化直方图均衡化的优点是能增强整个图像的对比度,但它的具体增强效果不易控制;处理的结果总是得到全局均衡化的直方图。实际应用中有时需要变换直方图,使之成为某个特定的形状,从而有选择地增强某个灰度值范围的对比度。这时可以采用比较灵活的直方图规定化。直方图规定化方法主要有三个步骤:(1)对原始图像的直方图进行灰度均衡化,即k=0,1,…,M-1(1.7)(2)规定所需要的直方图,并计算能使规定化的直方图均衡化的变换,即j=0,1,…,N-1(1.8)(3)将第一步所得到的变换翻转过来,也就是将原始图像对应映射到规定的直方图上,将所有的对应到中去。对应规则可选用组映射规则(GroupMappingLaw,GML)。设有一个整数函数I(1),1=0,1,…,N-1,满足现在要确定能使下式达到最小的I(1)。I(1)=0,1,…,N-1(1.9)如果I=0,则将其i从0到I(0)的对应到中去。如果I〉1,则将其从I(1-1)+1到I(1)的对应到中去。对图像实现直方图规定化的程序如下。直方图规定化的结果如图1.8所示。%(8)直方图规定化I=imread('lena.gif')hgram=0:255%hgram是由用户指定的向量,hgram的每一个元素都在[0,1]中J=histeq(I,hgram);%直方图规定化函数,规定将原始图像的直方图近似变成hgramfigure(8),subplot(2,2,1),imshow(I),title(‘原图像‘);subplot(2,2,2),imshow(J)title(‘直方图规定化后图像’);subplot(2,2,3),imhist(I,64)title('原图像直方图');subplot(2,2,4),imhist(J,64)title('直方图规定化后的直方图');比较可知,使用直方图均衡化得到的图像在一些较暗的区域有些细节仍不太清楚;采用直方图规定化函数对同一幅图像进行直方图规定化变换,所得的结果比均衡化的结果更亮,对应于均衡化图像中较暗区域的一些细节更清晰。从直方图上看,灰度值高的一边更为密集。图1.8直方图规定化结果图1.8直方图规定化结果1.1.3图像间的代数运算有些图像增强技术是靠对多幅图像进行图像间的代数运算实现的。代数运算是指对两幅图进行点对点的加、减、乘、除计算而得到输出图像的运算。对于相加和相乘的情形,可能不止有两幅图像参加运算。常用的图像间的代数运算有图像相减和图像相加两种。1.图像相减运算设有图像f(x,y)和h(x,y),它们的差为:g(x,y)=f(x,y)-h(x,y)。图像相减可以用于去除一幅图像中所不需要的加性图案。加性图案可能是缓慢变化的背景阴影、周期性的噪声或在图像上每个像素处均已知的附加污染等。减法也可以用于检测同一场景的两幅图像之间的变化,例如,通过对一场景的序列图像的减法运算可检测运动。在计算用于确定物体边界位置的梯度时,也要用到图像减法运算。以下程序是一个根据原始图像生成其背景亮度图像,然后再从原始图像中将背景亮度图像减去的程序。其运行结果如图1.9所示。%(9)图像相减运算I=imread('lena.gif');background=imopen(I,strel('disk',15));I2=imsubtract(I,background);figure(9)subplot(1,2,1),imshow(I),title('原图像');subplot(1,2,2),imshow(I2)title('去除背景亮度后的图像');图1.9图像相减图1.9图像相减若希望从图像数据I的每一个像素中减去一个常数,可以将上述调用格式中的Y替换为一个制定的常数值,如Z=imsubtract(I,50).2.图像相加运算设有图像f(x,y)和h(x,y),它们的和为g(x,y)=f(x,y)+h(x,y)图像相加的一个重要应用是对同一场景的多幅图像求平均值。这种方法常用来有效地减低加性随机噪声的影响。图像相加也可以用来将一幅图像的内容叠加到另一幅图像上去,以达到二次曝光的效果。实现图像相加的程序如下:I=imread('lena.gif');J=imread('cameraman.tif');figure(10)subplot(1,3,1),imshow(I)title('lena');subplot(1,3,2),imshow(J)title('camera')K=imadd(I,J);subplot(1,3,3),imshow(K)title('相加后的图像');图1.10图像相加结果两个图像相加的结果如图1.10所示:图1.10图像相加结果1.2空域滤波增强一般情况下像素的领域比该像素要大,也就是说,这个像素的邻域中除了本身外还包括了其他像素。在这种情况下,g(x,y)在(x,y)位置处的值不仅取决于f(x,y)在以(x,y)为中心的领域内所有像素的值。如仍以s和t分别表示f(x,y)和g(x,y)在(x,y)位置处的灰度值,并以n(s)代表f(x,y)在(x,y)领域内像素的灰度值,则可写成t=EH[s,n(s)](1.10)为在领域内实现增强操作,常可利用模板与图像进行卷积,每个模板实际上是一个二维数组,其中各个元素的取值确定了模板的功能。这种模板操作也成为空域滤波。1.2.1基本原理空域滤波一般可以分为线性滤波和非线性滤波两类。线性滤波器的设计常基于对傅立叶变换的分析,非线性空域滤波器则一般直接对邻域进行操作。另外,各种空域滤波器根据功能又主要分成平滑滤波器和锐化滤波器。平滑可用低通来实现。平滑的目的可分为两类:一类是模糊,目的是在提取较大的目标前去除太小的细节或将目标内的小间断连接起来;另一类是消除噪声。锐化可用高通滤波来实现,锐化的目的是为了增强被模糊的细节。结合这两种分类方法,可将空域滤波增强分为以下四类:(1)线性平滑滤波器(低通)(2)非线性平滑滤波器(低通)(3)线性锐化滤波器(高通)(4)非线性锐化滤波器(高通)空域滤波器的工作原理都可借助频域进行分析。他们的基本特点都是让图像在傅立叶空间的某个范围的分量受到抑制,而让其它分量不受影响,从而改变输出图像的频率分布,达到增强的目的。在增强中用到的空间滤波器主要有以下两类:(1)平滑(低通)滤波器。它能减弱或消除傅立叶空间的高频分量,但不影响低频分量。因为高频分量对应图像中的区域边缘的灰度值具有较大较快变化的部分,滤波器将这些分量滤去,可使图像平滑。(2)锐化(高通)滤波器。它能减弱或消除傅立叶空间的低频分量,但不影响高频分量。因为低频分量对应图像中灰度值缓慢变化的区域,所以与图像的整体特性,如整体对比度和平均灰度值等有关,滤去这些高频分量可使图像锐化。空域滤波器都是基于模板卷积,其主要工作步骤是:(1)将模板在图中漫游,并将模板中心与图中某个像素位置重合;(2)将模板上的系数与模板下对应的像素相乘;(3)将所有像素相加;(4)将和(模板的输出相应)赋给图中对应模板中心位置的像素。1.2.2平滑滤波器1.线性平滑滤波器线性低通滤波器是最常用的线性平滑滤波器。这种滤波器的所有系数都是正的。对的模板来说,最简单的是取所有系数都为1。为保证输出图像仍在原来的灰度范围,在计算出R后要将其除以9再进行赋值。这种方法称为邻域平均法。实现均值过滤器的程序见附录一种程序(11)。其处理结果如图1.11所示:%(11)实现线性平滑均值过滤器I=imread('lena.gif');J=imnoise(I,'salt',0.02);figure(11),subplot(2,2,1),imshow(I),title('原图像');subplot(2,2,2),imshow(J),title('加入椒盐噪声的图像');K1=filter2(fspecial('average',3),J)/255;%的均值滤波处理结果K2=filter2(fspecial('average',5),J)/255;%的均值滤波处理结果subplot(2,2,3),imshow(K1),title('的均值滤波处理结果');subplot(2,2,4),imshow(K2),title('的均值滤波处理结果');图1.11均值滤波图1.11均值滤波比较以上采用不同尺寸的均值滤波器进行低通滤波器进行低通滤波处理的结果可知,当所用的平滑模板的尺寸增大时,消除噪声的效果更强,但同时所得的图像变得更加模糊,细节的锐化程度逐步减弱。此外,维纳滤波器也是经典的线性降噪滤波器。维纳滤波是一种自适应滤波,它能根据图像的局部方差调整滤波器的输出。局部方差越大,滤波器的平滑作用越强。它的最终目标是使恢复图像与原图像的均方误差最小。Wiener2函数非常适用于图像中的白噪声(比如高斯噪声),实现维纳滤波器的程序如下,维纳滤波的效果如图1.12所示。%(12)实现高斯滤波器I=imread('lena.gif');J=imnoise(I,'gaussian',0,0.005);h=fspecial('gaussian');K=filter2(h,J)/255;K1=wiener2(J,[5,5]);figure(12),subplot(2,2,1),imshow(I),title('原图像');subplot(2,2,2),imshow(J),title('加入高斯噪声的图像');subplot(2,2,3),imshow(K),title('高斯低通滤波的结果');subplot(2,2,4),imshow(K1),title('维纳滤波后的结果');图1.12加入高斯噪声的图像和高斯滤波的效果图1.12加入高斯噪声的图像和高斯滤波的效果2.非线性平滑滤波器中值滤波器是最常用的非线性平滑滤波器。它是一种邻域运算,类似于卷积,但计算的不是加权求和,而是把邻域中的像素按灰度级进行排序,然后选择该组的中间值作为输出像素值。具体步骤是:(1)将模板在图像中漫游,并将模板中心与图像中某个像素的位置重合;(2)读取模板下各对应像素的灰度值;(3)将这些灰度值从小到大排成一列,找出这些值里排在中间的一个;(4)将这个中间值赋给对应模板中心位置的像素。由此可以看出,中值滤波器的主要功能就是让与周围像素灰度值的差比较大的像素改取与周围的像素值接近的值,从而可以消除孤立的噪声点。实现均值过滤器的程序如下。此处采用的是的中值滤波器,效果如图1.13所示。%(13)非线性平滑滤波器%加入椒盐噪声并采用模板实现中值过滤器I=imread('peppers.gif');J=imnoise(I,'salt',0.02);figure(13),subplot(2,2,1),imshow(I),title('原图像');subplot(2,2,2),imshow(J),title('加入椒盐噪声后的图像');K1=medfilt2(J,[3,3]);%用模板实现中值过滤器subplot(2,2,3),imshow(K1),title('中值滤波后的结果');图1.13中值滤波图1.13中值滤波由图1.13的处理结果可以看出,中值滤波器不像均值滤波器那样,它在衰减噪声的同时不会使图像的边界模糊,这也是中值滤波受欢迎的主要原因。中值滤波器去噪声的效果依赖于两个要素:邻域的空间范围和中值计算中所涉及的像素数。一般来说,小于中值滤波器面积一半的亮或暗的物体基本上会被滤掉,而较大的物体则几乎会原封不动地保存下来。因此,中值滤波器的空间尺寸必须根据现有的问题来进行调整。较简单的模板是的方形(这里N常是奇数),计算使用到的所有各像素点。另外,我们也可以使用稀疏分布的模板来节省时间。对于不同的模板,中值也要依情况而定。计算中值所使用的像素的增加跟去噪时的效果之间的关系是非线性的。如果现在的问题需要用到大尺度的中值滤波器,那么用稀疏分布的中值模板或许能得到令人满意的效果。中值滤波只是排序统计滤波中的一种。如果邻域中的输入像素已经安排好了,那么中值代表的是第50个百分点的数值。其它百分点的数值也可以用。第0个百分点可用于最小值滤波器,它用来检测图像中最暗的点;第100个百分点可用最大值滤波器,它用来检测图像中最亮的点;在MATLAB中,这几种滤波器都可以用B=ordfilt2(A,order,domain)函数来实现,分别举例如下:B=ordfilt2(A,1,ones(3,3))实现的最小值滤波器,因为它取全1的模板中排在最小位置处的那个像素;B=ordfilt2(A,1,[010;101;010])的输出是每个像素的东、南、西、北四个方向相邻像素灰度的最小值,因为它取四邻域的模板中排在最小位置处的那个像素。1.2.3锐化滤波器1.线性锐化滤波器线性高通滤波器是最常用的线性锐化滤波器。这种滤波器的中心系数都是正的,而周围的系数都是负的(如果中心和周围正负交换,则产生边缘锐化效果),所有系数之和0。对的模板来说,典型的系数取值是:[-1-1-1;-18-1;-1-1-1]事实上这是拉普拉斯算子。例如,语句h=-fspecial(‘laplacian’,0.5)所得到的拉普拉斯算子为:h=-0.3333-0.3333-0.3333-0.33332.6667-0.3333-0.3333-0.3333-0.3333可以看出这两个模板只是一个比例的不同(经过比例变换后的结果图像是相同的)。当这样的模板放在图像中灰度值为常数或者变化很小的区域时,其输出0或很小。这个滤波器将原图像中的零频率分量去除了,也就是将输出图像的平均灰度值变为0,这样就会有一部分像素灰度值小于0。在图像处理中,我们一般只考虑正的灰度值,所以还要将输出图像的灰度值范围通过尺度变换回到所要求的范围。用unsharp算子实现边缘锐化的程序如下,处理效果如图1.14所示。%(14)线性锐化滤波器I=imread('peppers.gif');h=fspecial('laplacian');I2=filter2(h,I);figure(14),subplot(2,2,1),imshow(I),title('原图像');subplot(2,2,2),imshow(I2),title('拉普拉斯算子滤波后的结果);%采用'unsharp'算子实现对比度增强滤波器h=fspecial('unsharp',0.5);I3=filter2(h,I)/255;subplot(2,2,3),imshow(I3),title('unsharp算子实现对比度增强滤波后的结果');这里只是简单介绍了锐化滤波器,在后面的边缘检测中还要详细介绍。图1.14unsharp算子实现边缘锐化图1.14unsharp算子实现边缘锐化2.非线性锐化滤波器邻域平均可以模糊图像,因为平均对应积分,所以利用微分可以锐化图像。图像处理中最常用的微分算法是利用梯度。对一个二维连续函数f(x,y),其梯度是一个矢量(需要用两个模板分别沿x和y方向计算),即(1.11)其模(以2为模,对应欧氏距离)为(1.12)在使用中为了计算简便,也可不用上述对应欧氏距离的以2为模的方法组合两个模板的输出。一种简单的方法是利用城区距离(以1为模),即(1.13)另一种简单的方法是利用棋盘距离(以为模),即(1.14)上述这些组合的方法本身都是非线性的。常用的空域微分算子有sobel算子、prewitt算子、高斯—拉普拉斯算子等。对几种边缘增强算子的效果进行比较的程序如下。几种边缘增强算子的效果如图1.15所示:%(15)非线性锐化滤波器%对几种边缘增强算子的效果进行比较I1=imread('peppers.gif');h1=fspecial('sobel');I2=filter2(h1,I1);%sobel卷积I3=conv2(I1,h1);h2=fspecial('prewitt');I4=filter2(h2,I1);h3=fspecial('log');I5=filter2(h3,I1);figure(15),subplot(2,2,1),imshow(I1),title('原图像');subplot(2,2,2),imshow(I3);title('sobel滤波');subplot(2,2,3),imshow(I4);title('prewitt滤波');subplot(2,2,4),imshow(I5);title('log滤波');图1.15几种边缘增强算子的效果图1.15几种边缘增强算子的效果1.3频域增强卷积理论是频域技术的基础。设函数f(x,y)与线性位不变算子h(x,y)的卷积结果是g(x,y),即g(x,y)=h(x,y)*f(x,y)(1.15)那么,根据卷积定理在频域有G(u,v)=H(u,v)F(u,v)(1.16)其中,G(u,v)、H(u,v)、F(u,v)分别是g(x,y)、h(x,y)、f(x,y)的傅立叶变换。频域增强的主要步骤是:(1)计算所需增强图的傅立叶变换;(2)将其与一个(根据需要设计的)转移函数相乘;(3)在将结果进行傅立叶反变换以得到增强的图。常用的频域增强方法有低通滤波和高通滤波。下面分别介绍这两种滤波方法。1.3.1低通滤波图像的能量大部分集中在幅度谱的低频和中频部分,而图像的边缘和噪声对应于高频部分。因此能降低高频成分幅度的滤波器就能减弱噪声的影响。Butterworth低通滤波器是一种物理上可以实现的低通滤波器。n阶截断频率为d0的Butterworth低通滤波器的转移函数为:(1.17)%(16)实现Butterworth低通滤波器I1=imread('lena.gif');I2=imnoise(I1,'salt');f=double(I2);g=fft2(f);%采用傅立叶变换g=fftshift(g);%数据矩阵平移[N1,N2]=size(g);n=2;d0=50;d1=5;n1=fix(N1/2);n2=fix(N2/2);fori=1:N1forj=1:N2d=sqrt((i-n1)^2+(j-n2)^2);%计算Butterworth低通变换函数h=1/(1+0.414*(d/d0)^(2*n));result(i,j)=h*g(i,j);endendresult=ifftshift(result);X2=ifft2(result);X3=uint8(real(X2));1.3.2高通滤波高通滤波也称高频滤波,它的频率值在0频率处为单位1,随着频率的增长,传递函数的值逐渐增加;当频率增加到一定值后,传递函数的值通常又回到0值或者降低到某个大于1的值。在前一种情况下,高频增强滤波器实际上是一种带通滤波器,只不过规定0频率处的增益为单位1。在实际应用中,为了减少图像种面积大而且缓慢变化的成分的对比度,有时让0频率处的增益小雨单位1更合适。如果传递函数通过原点,则可称为laplacian滤波器。用Butterworth高、低通滤波器的结果如图1.16所示:%(17)实现Butterworth高通滤波器%计算Butterworth高通变换函数ifd==0h=0;elseh=1/(1+(d1/d)^(2*n));endresult(i,j)=h*g(i,j);result=ifftshift(result);X4=ifft2(result);X5=uint8(real(X2));figure(16),subplot(2,2,1),imshow(I1),title('原图像');subplot(2,2,2),imshow(I2),title('加噪图像');subplot(2,2,3),imshow(X3),title('Butterworth低通滤波器去噪图像');图1.16用Butterworth高、低通滤波器滤波结果subplot(2,2,4),imshow(X5),图1.16用Butterworth高、低通滤波器滤波结果title('Butterworth高通滤波器去噪图像');从图1.16可见,高通滤波图像很昏暗,很多细节都看不清了,这是由于图像的大部分能量集中在低频区域,而高通滤波器使得途中各区域的边界得到明显增强的同时滤掉了低频分量,使得图中原来比较平滑区域内部的灰度动态范围被压缩,因而整幅图比较昏暗。第二章图像恢复和重建图像复原是早期图像处理的主要内容之一,目的在于消除或减轻在图像获取、传输及保存过程中造成的图像品质下降,即退化现象,恢复图像的本来面目。退化主要原因如下:(1)摄像机在捕捉图像过程中的移动或长时间的曝光。(2)远距离聚焦、宽角度镜头、大气存在物的影响或由于曝光比较短而是的捕捉的光子量少。(3)光学系统离散的集合畸变。(4)图像远距离传输产生的加性噪声。(5)图片(照片)保存不当,引起纸质的变化等。复原图像要尽可能和原图像保持一致。图像重建方法一般是根据物体的一些横截面部分的投影而进行的,由于这种重建在检测某个物体的内部结构时不会有任何物理上的损伤,因此在医学、天文等领域中应用广泛。傅立叶变换是最简单的重建方法。通过将物体投影进行旋转和傅立叶变换可以首先构造整个傅立叶变换的平面,然后只需再通过傅立叶反变换就可以得到重建后的物体。另外还有卷积重建、代数重建法等。2.1退化模型图2.1退化模型图像恢复处理的关键问题在于建立退化模型。一幅纯净的图像f(x,y)是由于通过一个系统H及加入外来加性噪声n(x,y)而退化为一幅图像g(x,y)的。如图2.1所示.图2.1退化模型图像复原可以看作一个估算的过程。若已经给出了退化图像g(x,y)并估算出系统参数H,从而可近似地恢复f(x,y).这里n(x,y)是一种统计性质的信息。对于上图的模型,线性系统可以表示为:(2.1)这里不妨令n(x,y)=0,输入信号为、,对应的输出信号为、,通过系统后有下式成立:(2.2)如果一个系统的参数不随时间变化,则该系统称为时不变系统,否则,称为时变系统。对于线性系统有:(2.3)则H是空间不变系统(或称为位置不变系统),式中和分别是空间位置的偏移量。也就是说图像中任意一点通过该系统H后的相应只与该点的输出值有关,与它所处的位置无关。在实际中,绝大多数系统都是非线性时变系统,这对系统的处理带来极大的不便。为了便于计算机的处理,一般采用近似的办法。把系统近似为线性时不变系统,可以直接应用线性系统理论解决图像复原的问题。因此,在图像复原处理特别是数字图像复原处理中,主要采用线性时不变(空间不变)的复原技术。2.1.1连续退化模型依据线性系统理论有(2.4)推广到二维空间,定义为冲击激函数。这样(f(x,y)就变成:(2.5)则有以下方程式成立:(2.6)这里的H是线性算子,不妨令,则有(2.7)其中,就是系统H的冲激响应。在光学中,冲激为一光点,所以又称为点扩散函数(PSF,Point_SpreadFunction).式(2.7)实际上就是线性系统理论中著名的费雷霍姆(Fredholm)积分。在空间位置不变系统中,(2.8)在这种情况下,显然有:(2.9)这表明了系统H加入输入信号的响应就是系统输入信号与冲激响应的卷积积分。在右加性噪声的条件下,线性退化模型可表示为:(2.10)2.1.2离散退化模型前面讨论了连续退化模型,如果把和进行均匀采样,就可以引伸出离散的退化模型。假设有两个函数图像大小为,的点扩散函数大小为。首先作成大小为的周期延拓图像,如下所示:(2.11)(2.12)经过这样的延拓后,和分别成为二维周期函数,它们在x和y方向上的周期分别为M和N。由此得到二维退化模型为一个二位卷积形式:(2.13)式中:,卷积函数也是周期函数,其周期与和一样。为避免重叠,同样要按以下规则延拓:(2.14)所以式(2.13)的模型同样可用矩阵来表示:(2.15)其中,代表的列向量。这些列向量是由的函数矩阵,的各行堆积而成的。一个含有加性噪声的退化模型为:(2.16)2.2复原的代数方法代数复原方法的中心是寻找一个估计,它使事先确定的某种优度准则为最小。2.2.1逆滤波复原如果退化图像为,原始图像为,在不考虑噪声的情况下,其退化模型用下式表示:(2.17)这显然是一个卷积表达式。由傅立叶变换的卷积定理可知有下式成立:(2.18)式中,、、分别是退化图像g(x,y)、点扩散图像h(x,y)、原始图像f(x,y)的傅立叶变换。所以(2.19)这说明了已知退化图像的傅立叶变换和“滤波”传递函数,则可以求得原始图像的傅立叶变换,经傅立叶反变换就可求得原始图像f(x,y)。这里,G(u,v)除以H(u,v)起到了反向滤波的作用。这就是逆滤波复原的基本原理。一般而言,逆滤波法不能正确地估算H(u,v)的零点,因此必须采用一个折中的办法加以解决。实际上,逆滤波是一个新的函数M(u,v)来表示的,处理框图如图2.2所示:图2.2实际的逆滤波处理框图图2.2实际的逆滤波处理框图M(u,v)的选择为:(2.20)的选择应该将的零点排除在外。2.2.2最小二乘方滤波最小二乘方滤波也就是维纳滤波。它是使原图像f(x,y)及其恢复图像之间的均方误差最小的复原方法。(2.21)对给定的,未能精确求解出f(x,y).在此只能找到一个估算值,使得均方误差式(2.22)最小,其中就叫给定g(x,y)时f(x,y)的最小二乘方估计。最小二乘方滤波器的传递函数为:(2.23)式中,是噪声对信号的功率密度比,它近似为一个适当的常数。2.3MATLAB实现图像复原1.维纳滤波复原对图像进行维纳滤波复原使用deconvwnr函数。函数调用格式为:J=deconvwnr(I,PSF)J=deconvwnr(I,PSF,NSR)J=deconvwnr(I,PSF,NCORR,ICORR)J=deconvwnr(I,PSF)复原PSF(点扩散函数)和可能的加性噪声卷积退化的图像I。算法是基于最佳的估计图像和真实图像的最小均方误差以及图像和噪声数组的相关运算的。在没有噪声的情况下,维纳滤波器就是理想逆滤波器。J=deconvwnr(I,PSF,NSR)中NSR是噪信功率比。NSR可以是标量或和1相同大小的数组,缺省值为0。J=deconvwnr(I,PSF,NCORR,ICORR)中NCORR和ICORR分别是噪声和原始图像自相关函数。NCORR和ICORR不大于原始图像的大小或维数。一个N维NCORR或ICORR数组是对应于每一维的自相关。若PSF为向量,NCORR或ICORR向量表示第一维的自相关函数。若PSF是数组,一维自相关函数可由所有非单元素维的PSF对称推断出。NCORR或ICORR向量表示噪声或图像的功率。创建一个棋盘图像并实现维纳滤波复原的程序如下。用维纳滤波进行复原的结果如图2.3所示:(1)对棋盘图像进行维纳滤波复原I=checkerboard(8);%创建一个棋盘图像noise=0.1*randn(size(I));%产生随机噪声PSF=fspecial('motion',21,11);Blurred=imfilter(I,PSF,'circular');%输入图像滤波,使图像变模糊BlurredNoisy=im2uint8(Blurred+noise);%添加噪声NP=abs(fftn(noise)).^2;%噪声功率NPOW=sum(NP(:))/prod(size(noise));NCORR=fftshift(real(ifftn(NP)));%噪声的自相关IP=abs(fftn(I)).^2;%原始图像功率IPOW=sum(IP(:))/prod(size(I));ICORR=fftshift(real(ifftn(IP)));%图像的自相关ICORR1=ICORR(:,ceil(size(I,1)/2));NSR=NPOW/IPOW;%噪信比figure(17),subplot(2,2,1);imshow(BlurredNoisy,[]);title('模糊和噪声图像');subplot(2,2,2);imshow(deconvwnr(BlurredNoisy,PSF,NSR),[]);title('deoconvwnr(A,PSF,NSR)');subplot(2,2,3);imshow(deconvwnr(BlurredNoisy,PSF,NCORR,ICORR),[]);title('deconvwnr(A,PSF,NCORR,ICORR)');subplot(2,2,4);imshow(deconvwnr(BlurredNoisy,PSF,NPOW,ICORR1),[]);title('deconvwnr(A,PSF,NPOW,ICORR-1-D)');图2.3维纳滤波复原图2.3维纳滤波复原图2.4图像边缘模糊化图2.4图像边缘模糊化
第三章图像编码与压缩近年来,随着计算机通信技术的迅速发展,特别是多媒体网络技术的兴起,图像压缩与编码已受到了人们越来越多的关注。图像压缩与编码从本质上说就是要对处理的图像按照一定的规则进行变换和组合,从而达到以尽可能少的代码(符号)来表示尽可能多的数据信息。压缩通过编码来实现,或者说编码带来压缩的效果。因此,一般把此项处理称为压缩编码。图像压缩所要解决的问题是研究如何最大限度地压缩图像数据,并保证利用这些数据所重建的图像是用户能够接受的。由此而发展而来的数据压缩基本方法有两类:无损压缩和有损压缩,具体的实现方法将在后面详细介绍。3.1图像编码与压缩概述3.1.1图像压缩与编码的必要性随着信息技术的发展,数字图像系统在天文学、遥感、医学、摄影、图形艺术等各个领域中都得到了广泛应用。在信息高速流通时代,不仅要求大量存储和传输图像,而且往往要求在保证质量的前提下以较小的空间存储图像和较少的比特传输速率传输图像。为了利用有限的存储容量存储更多的图像,或者为了以最短的时间传递尽可能多的图像,就要研究怎样才能最大限度地压缩图像数据,并保证解压后的图像书用户能够接受的,这就是图像压缩需要解决的问题。另外,在研究图像数据压缩编码的过程中,还要考虑的一个重要问题是重建后图像的质量问题。如果一幅图像的编码率很低,但是重建后效果却不能令人满意,那么这种编码就是毫无意义的。图像数据的压缩是基于这样两个特点:其一,图像信息存在着很大的冗余度,数据之间存在着相关性,如相邻色素之间色彩的相关性等。通常,数字图像的冗余度有以下三种:(1)空间冗余度,它是由相邻像素数值之间的相关性造成的;(2)频谱冗余度,它是由不同彩色平面或频谱带之间的相关性造成的;(3)时间冗余度,它是由活动图像中图像序列不同帧的相关性造成的。其二,由于人眼是图像信息的接收端,所以可利用视觉对于边缘急剧变化不敏感(视觉掩盖效应),以及对图像的亮度信息敏感、对颜色分辨率弱等特点来实现对图像的高压缩比,使得解压后的图像信号仍有着满意的质量。3.1.2图像压缩编码的分类图像压缩的目的就在于,通过消除这些冗余度来减少表示图像所需的比特数。由此发展起来的数据压缩基本方法有两类:其一,将相同的或相似的数据或数据特征归类,使用较少的数据量描述原始数据,以达到原始数据量的目的,这种压缩一般称为无损压缩;其二,利用人眼视觉特征有针对性地简化不重要的数据,以减少总的数据量,这种压缩称为有损压缩。数据压缩技术的一般处理框图如图5.1所示。其中的原始数据(又称源数据)经过压缩处理,得到的输出即是被压缩的数据。当这些数据所占的存储空间和传输中所用的时间小于原始数据时,即实现了数据压缩。在需要时用这些数据时,只要经过还原(或称释放)处理即可。实现方式可用软件,也可用专用硬件设备来实现。图3.1数据压缩处理框图图3.1数据压缩处理框图3.2无损压缩技术3.2.1无损压缩技术概述无损压缩是对图像本身的压缩,是对文件的数据存储方式进行优化,采用某种算法表示重复的数据信息,文件可以完全还原,不会影响文件内容,对于图像而言,也就不会使图像细节有任何损失。由于无损压缩只是对数据本身进行优化,所以压缩比例有限,压缩比一般为2:1至5:1。这类方法广泛用于文本数据、程序和特殊应用场合的图像数据(如指纹图像、医学图像等)的压缩。由于受到压缩比的限制,因而仅使用无损压缩方法是不可能解决图像和数字视频的存储和传输问题的。无损压缩算法可以分为两大类:一种是基于字典的编码方法;另一种是基于统计的编码方法。基于字典的编码方法生成的压缩文件包含的是定长码,即采用相同的位数对数据进行编码。大多数存储数字信息的编码系统都采用定长码。例如,常用的ASCⅡ码就是定长码,其码长为1,汉字国标码也是定长码,起码长为2。该种方法所生成的每个码都代表原文件中数据的一个特定序列,常用的压缩方法有行程编码和LZW等。基于统计方法生成的压缩文件包含的是变长码,即采用不相同的位数对数据进行编码,以节省存储空间。不同的字符或汉字出现的概率是不同的,有的字符出现的概率非常高,有的则非常低。例如,英文字母E使用的概率为18%,而Z字母仅为0.08%。另外,因在图像中常含有大面积的单色的图块和颜色出现频繁不同,故在进行数据编码时,就可以通过对那些经常出现的数据指定较少的位数来表示,而对那些不常出现的数据指定较多的位数来表示,从而节省了存储空间。在实际中,最常用的统计编码方法是霍夫曼编码和算术编码方法等。3.2.2霍夫曼(huffman)编码1.huffman编码的基本原理在无损编码方法中,Huffman编码是一种较为有效的编码方法。Huffman编码是一种长度不均匀的、平均码率可以接近信息源熵值的一种编码。它的编码基本思想是:对于出现概率大的信息,采用短字长的码,对于出现概率小的信号采用长字长的码,以达到缩短平均码长,从而实现数据的压缩。Huffman编码过程如下:(1)将信源符号按其出现概率的大小顺序排列,然后把出现概率最小的两个符号的概率值相加,得到一个新的概率。(2)把这个新概率看成是一个新符号的概率,和其它符号再按概率大小排列,再把最后两个概率相加。(3)重复上述步骤(1)和步骤(2)的做法,直到最后只剩下两个符号的概率为止。(4)完成以上概率相加作顺序排列后,再反过来逐步向前进行编码,每一步有两个分支各赋予一个二进制码,可以对概率大的赋码元0,对概率小的赋码元1,亦可对该率达的赋码元1,对概率小的赋码元0。Huffman编码在变字长编码方法中是最佳的,其码字平均长度很接近信息符号的熵值。Huffman编码的最高压缩效率可以达到8:1,但是在一般实施过程中,很难达到这种压缩比例。若图像文件中存在许多拥有长行程的字节值时,使用行程编码压缩算法可能更好。MATLAB的图像处理工具并没有提供直接进行图像编码的函数或命令,这是因为MATLAB的图像输入、输出和读、写函数能够识别各种压缩图像格式文件,利用这些函数就可以间接地实现图像压缩。下面介绍Huffman编码和行程编码方法的实现。2.Huffman编码的MATLAB实现Huffman编码的MATLAB实现程序如下。进行Huffman编码首先要统计图像中各种颜色值出现的概率,然后再进行排序编码。这种编码方法较为复杂,但是相对于行程编码方法而言,其效果要好得多。%(1)霍夫曼编码的实现I=imread('lena.gif');[m,n]=size(i);p1=1;s=m*n;fork=1:mforL=1:nf=0;forb=1:p1-1if(c(b,1)==I(k,L))f=1;break;endendif(f==0)c(p1,1)=I(k,L);p1=p1+1;endendend%上面这段程序将图像的不同颜色统计在数组c的第一列中forg=1:p1-1p(g)=0;c(g,2)=0;fork=1:mforL=1:nif(c(g,1)==I(k,L))p(g)=p(g)+1;endendendp(g)=p(g)/s;end%这段程序将相同颜色的像素数占图像总数的比例统计在数组p中pn=0;p0=1;while(1)if(pn>=1.0)break;else[pm,p2]=min(p(1:p1-1));p(p2)=1.1;[pm2,p3]=min(p(1:p1-1));p(p3)=1.1;pn=pm+pm2;p(p1)=pn;tree(p0,1)=p2;tree(p0,2)=p3;p0=p0+1;p1=p1+1;endend%这段程序在数组p(相同颜色的像素数占图像总数的比例)中找出两个最小的概率,将它们向加在一起,然后继续进行该过程,直到两概率之和为1为止。fork=1:p0-1tt=k;m1=1;if(or(tree(k,1)<g,tree(k,2)<g))if(tree(k,1)<g)c(tree(k,1),2)=c(tree(k,1),2)+m1;m2=1;while(tt<p0-1)m1=m1*2;forL=tt:p0-1if(tree(L,1)==tt+g)c(tree(k,1),2)=c(tree(k,1),2)+m1;m2=m2+1;tt=1;break;elseif(tree(L,2)==tt+g)m2=m2+1;tt=1;break;endendendc=(tree(k,2)<g)endtt=k;m1=1;if(tree(k,2)<g)m2=1;while(tt<p0-1)m1=m1*2;forL=tt:p0-1if(tree(L,1)==tt+g)c(tree(k,2),2)=c(tree(k,2),2)+m1;m2=m2+1;tt=L;break;elseif(tree(L,2)==tt+g)m2=m2+1;tt=L;break;endendendc(tree(k,2),3)=m2;endendendHuffman编码的MATLAB实现程序中在数组p(相同颜色的像素数占图像总数的比例)中找出两个最小的概率,将它们加在一起,然后继续进行该过程,直到凉概率之和为1为止。每次查找两个最小概率时,将找到的最小概率的序号保存在数组tree的第一列中,将次小概率的序号保存在第二列中,将两个概率之和放在数组p继像素比例之后。程序中的输出数组C的第一维表示颜色值,第二维表示代码的数值大小,第三位表示该代码的位数,将这三个参数作为码表在压缩文件头部,则其以下的数组将按照这三个参数记录图像中的所有像素颜色值,于是就可以得到霍夫曼编码的压缩文件。值得注意的是:由于MATLAB不支持对某一位(bit)的读和写,所以利用该码表生成的每一个码字实际上还是8位的,最好使用其它软件(例如,C语言等)进行改写,以实现真正的压缩,事实上MATLAB将图像写成JPEG文件也是用C语言实现的。3.2.3行程编码1.行程编码的基本原理有些图像,尤其是计算机生成的图形往往有许多颜色相同的图块。在这些图块中,许多连续的扫描行都具有同一种颜色,或者同一扫描行上有许多连续的像素都具有相同的颜色值。在这些情况下就可以不需要存储每一个像素的颜色值,而仅仅存储一个像素值以及具有相同颜色的像素数目。这种编码称为行程编码,或称游程编码,常用RLE(Run_LengthEncoding)表示。2.行程编码的MATLAB实现行程编码的MATLAB实现见附录一中第五章程序(1),进行行程编码的方法可以是多种多样的,这个程序是将一个不同(即不同颜色的像素块)的起始坐标和灰度值都记录下来。运行结果如下:原图像大小NameSizeBytesClassI40x4012800doublearrayGrandtotalis1600elementsusing12800bytes压缩图像大小NameSizeBytesClassJ1x4003200doublearrayGrandtotalis400elementsusing3200bytes图像的压缩比4(2)行程编码的实现I=checkerboard(8);[m,n]=size(I);J=[];fori=1:mvalue=I(i,1);num=1;forj=2:nifI(i,j)==valuenum=num+1;elseJ=[Jnumvalue];num=1;value=I(i,j);endendJ=[Jnumvalue00];%添加的行判断位00enddisp('原图像大小')whos('I');disp('压缩图像大小')whos('J');disp('图像的压缩比')disp(m*n/length(J))3.3有损压缩编码3.3.1有损压缩编码原理有损压缩是对图像本身的改变,所以压缩比可以很高。JPEG就是这种压缩方式。用有损压缩的方法压缩后的图像解压后不可能完全还原原始信息,但只要适当地选择压缩比,解压后的图像也是可以接受的。有损压缩方式被广泛地应用于语音、图像和视频等的数据压缩中。无损压缩编码只是去掉一些冗余信息,图像信息量都保存下来了。因此,这种图像的压缩比受到限制,对于图像质量要求低,传输速率要求较高的情况下显然不太实用。为了获得较高的压缩比,常见的图像压缩算法如变换编码压缩算法等,涉及量化过程,因而都是有损压缩的算法,通常的压缩率范围为。1.预测编码预测编码是一种设备简单质量较佳的高效编码法,是目前应用比较广泛的编码技术之一。常见的DPCM、ADPCM等都属于预测编码方式的编码技术。通常,图像的相邻像素之间具有很强的相关性,这样在很大程度上降低了图像的空间冗余度,可达到压缩信息的目的。采用预测编码时,传输的不是图像的实际像素值(色度值或亮度值),而是实际像素值和预测像素值之差,即预测误差。预测编码分为无失真预测编码和有失真预测编码。无失真预测编码是指对预测误差不进行量化,所以不会丢失任何信息。有失真编码要对预测误差进行量化处理,而量化必然要产生一定的误差。2.差分脉冲编码调制DPCM编码法图像的相邻像素之间具有很强的相关性,利用相关性对当前的像素进行预测,对样本实际值与预测值之差进行编码,这样在很大的程度上减低了图像的空间冗余度,可达到压缩信息的目的。计算证明差值的相关性很小,在某种情况下基本为零。图3.2DPCM的基本原理图图3.2DPCM的基本原理图DPCM(DifferentialPulseCodeModulation)的基本原理如图3.2所示。在DPCM编码方案中,用当前像素的因果性邻近范围内的k个像素来产生该像素的预测值。先于当前像素值的前k个像素用来构成预测值,并以表示,则有。DPCM系统工作时,发送端先发送一个起始像素值,接着就只发送预测误差值。接收端把接收到的量化误差与本地算出的预测值相加,即得恢复信号,如果传输中没有误码,且接收端和发端两个预测器在相同条件下工作,则接受端恢复信号与发送端原始信号之间的误差为:(3.1)这正是发送量化器造成的量化误差,即整个预测编码系统的失真完全由量化器产生,不会再产生其它附加误差。如果在图3.2的DPCM系统框图中,当已经是数字信号时,去掉量化器,则有,结果可以做到。这就表明:不带量化器的DPCM系统可以完全不失真地恢复原始信号,成为信号保持型编译码系统;带有量化器的系统,则称信息非保持型编译码系统。3.线性预测编码DPCM系统的设计包括预测器和量化器的设计,预测器的设计是DPCM系统的核心。预测器设计的越好,差值就越集中分布在零附近,压缩率就越高。最简单的预测器是线性预测器,即
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度商标许可合同的品牌使用范围和许可费用3篇
- 2024年度物流企业仓储配送服务合同范本2篇
- 2024版叉车租赁及租赁物使用规范合同2篇
- 2024年度借款合同香港利息支付方式约定2篇
- 2024年度土地承包经营权流转中介服务合同范本3篇
- 2024年度版权交易合同:某影视公司与其他公司的版权交易3篇
- 2024年汽车带牌转让与二手车鉴定评估及保养维修服务合同3篇
- 2024年度物业管理公司车辆停放管理合同3篇
- 2024年房地产公司合作开发项目联营合同模板3篇
- 2024年度生物科技市场调研与产业发展合同3篇
- 中建型钢混凝土结构施工方案
- 2022年全国应急普法知识竞赛试题库大全-上(单选题库-共4部分-1)
- 2024年厂长岗位聘用合同范本版B版
- 船用动力系统电气化改造实践
- 木制品加工销售承包协议
- 实+用法律基础-形成性考核任务三-国开(ZJ)-参考资料
- 汽车修理厂喷漆合作合同
- 模拟法庭课件教学课件
- 吉林师范大学《微积分》2021-2022学年第一学期期末试卷
- JJF(浙) 1134-2017 微米千分尺校准规范
- 1-5的认识比大小课件
评论
0/150
提交评论