目录第一章图像增强 (3)1.1 空域变换增强 (3)1.1.1直接灰度调整 (4)1.1.2 直方图处理 (10)1.1.3 图像间的代数运算 (14)1.2 空域滤波增强 (16)1.2.1 基本原理 (16)1.2.2平滑滤波器 (17)1.2.3 锐化滤波器 (20)1.3 频域增强 (23)1.3.1低通滤波 (24)1.3.2高通滤波 (24)第二章图像恢复和重建 (26)2.1退化模型 (26)2.1.1连续退化模型 (27)2.1.2离散退化模型 (28)2.2复原的代数方法 (29)2.2.1逆滤波复原 (29)2.2.2最小二乘方滤波 (30)2.3 MATLAB实现图像复原 (30)第三章图像编码与压缩 (33)3.1图像编码与压缩概述 (33)3.1.1图像压缩与编码的必要性 (33)3.1.2图像压缩编码的分类 (33)3.2无损压缩技术 (34)3.2.1无损压缩技术概述 (34)3.2.2霍夫曼(huffman)编码 (35)3.2.3行程编码 (38)3.3有损压缩编码 (40)3.3.1有损压缩编码原理 (40)第四章图像分割 (45)4.1灰度阈值分割法 (45)4.1.1双峰法 (45)4.1.2 p-参数法 (46)4.1.3最大方差自动取阈法 (46)4.2边缘检测方法 (49)4.2.1边缘算子法 (49)第五章工件尺寸和面积测量 (53)5.1 图像采集部分 (54)5.2 图像处理与面积计算部分 (54)5.2.1 图像预处理 (54)5.2.2 工件面积计算 (55)第六章车牌识别 (63)6.1 总体设计方案 (63)6.2 各模块实现方法 (64)实验一 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所示。
从图中可以看出,通过这样一个变换,原图中灰度值在10~s 和2~255s 的动态范围减小了,而灰度值在12~s s 的动态范围增加了,从而使这个范围内的对比度增加了。
在实际应用中,1s 、2s 、1t 、2t 可取不同的值进行组合从而可到不同的效果。
通常在进行特定任务的模式识别工作之前,要对所要识别的图像进行增强对比度的处理,以使辨识工作更容易,辨识结果更准确。
应用变换曲线增强对比度的程序如下所示,其处理结果如图1.2所示。
%(1)应用变换曲线增强对比度clear;close all; X1=imread('flower.JPG');图1.1 增强对比度的变换曲线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])axis tight,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);for i=1:m %循环对矩阵中的每个元素进行变换处理for j=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是在所选的参数模式下所得的增强图像,对比处理过的图像和原图像可以看出,应用变换曲线增强对比度后图像的对比度增强,更容易辨认了。
对于不同的图像,根据不同的情况,所选的参数有所不同,要根据实际情况而定。
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])axis tight,xlabel('f'),ylabel('g')title('图像求反的变换曲线')k=g1/f1;[m,n]=size(X1);X2=double(X1);for i=1:m %循环对矩阵中的每个元素进行变换处理for j=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 求反的变换曲线以及所得结果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)axis tight,xlabel('f'),ylabel('g')title('对数变换曲线')%循环对矩阵中的每个元素进行变换处理[m,n]=size(X1);X2=double(X1);for i=1:mfor j=1:ng(i,j)=c*log(X2(i,j)+1);endendsubplot(2,2,3),imshow(mat2gray(X2)),title('对数变换处理的图像');图1.4 对数形式的变换函数进行动态范围压缩结果4.灰度切分灰度切分的目的与增强对比度相似,即将某个灰度范围变得比较突出:所不同的是,这里将所要突出的灰度范围变换成较高的灰度值,而将其余灰度值变换为较低的灰度值。