数字图像处理课程设计--基于Matlab的数字图像处理数字图像处理课程设计基于Matlab的数字图像处理——图像的运算院系信息技术学院专业班级电气6班学号 201107111282姓名何英娜指导教师章瑞平课程设计时间 2012年11月目录一、摘要 (3)二、图像代数运算1、1图像的加法运算 (4)1、2图像的减法运算 (4)1、3图像的除法运算 (4)1、4绝对差值运算 (7)1、 5 图像的求补运算 (7)3三、图像的几何运算2、1 图像插值 (7)2、2图像的旋转 (8)2、3图像的缩放 (9)2、4图像的投影变换 (10)2、4图像的剪切 (11)四、课程设计总结与体会 (13)五、参考文献 (14)摘要图像运算涵盖程序设计、图像点运算、代数运算、几何运算等多种运算;设计目的和任务:1、熟悉图像点运算、代数运算、几何运算的基本定义和常见方法;2、掌握在MTLAB中对图像进行点运算、代数运算、几何运算的方法3、掌握在MATLAB中进行插值的方法4、运用MATLAB语言进行图像的插值缩放和插值旋转5、学会运用图像的投影变换和图像的剪切46、进一步熟悉了解MATLAB语言的应用,将数字图像处理更好的应用于实际7、通过各类算法加强图像各种属性、一、图像的几何运算何运算图像代数运算是指对两幅或两幅以上输入图像对应的像素逐个进行和差积商运算以产生增强效果的图像。
图像运算是一种比较简单有效的增强处理手段是图像处理中常用方法。
四种图像处理代数运算的数学表达式如下:C(x,y)=A(x,y)+B(x,y)C(x,y)=A(x,y)-B(x,y)C(x,y)=A(x,y)*B(x,y)C(x,y)=A(x,y)/B(x,y)1图像加法运算一般用于多幅图像求平均效果,以便有效降低具有叠加性的随机噪声,在matlab中imadd用于图像相加,其调用格式为z=imadd(X,Y);程序演示如下:I=imread('rice.png');subplot(2,2,1),imshow(I),title('原图像1'); J=imread('cameraman.tif');subplot(2,2,2),imshow(J),title('原图像52');K=imadd(I,J,'uint16'););subplot(2,2,3),imshow(K,[]),title('相加后图像'2、图像减法运算也称差分运算,是用于检测图像变化及运动物体的方法;用imsubtract函数实现。
图像乘法运算可以实现掩膜操作,已屏蔽图像某些部分,乘以常数被称为缩放,以显示不同明暗效果,应用函数为immultiply。
图像除法运算也成比例变换,运用函数imdivide,一般对图像进行归一化处理;再进行乘除操作时一般使用double类型进行运算,immultiply(X,Y)可将对应像素值分别进行相乘,该函数可对每个像素值进行平方处理,为非线性操作,可使高亮度区对比度进一步增强,低亮度区对比度进一步减弱;程序演示1:图像加减乘除运算I = imread('moon.tif');J=imadd(I, 50);subplot(1,5,1), imshow(I);title('原图像');subplot(1,5,2), imshow(J);title('加法运算后图像');J1=imsubtract(I, 50);subplot(153),imshow(J1);title('减法运算图像');6J2= immultiply(I,2);subplot(154),imshow(J2);title('乘法运算图像');J3= imdivide(I,2);subplot(155),imshow(J3),title('除法运算图像')图片效果:直方图操作能有效地用于图像增强。
除了提供有用的图像统计资料外,直方图固有的信息在其他图像处理应用中也是非常有用的,直方图是图像的最基本的统计特征,它反映的是图像的灰度值的分布情况。
直方图均衡化的目的是使图像在整个灰度值动态变化范围内的分布均匀化,改善图像的亮度分布状态,增强图像的视觉效果。
灰度直方图是图像预处理中涉及最广泛的基本概念之一。
图像的直方图事实上就是图像的亮度分布的概率密度函数,是一幅图像的所有象素集合7的最基本的统计规律。
直方图反映了图像的明暗分布规律,可以通过图像变换进行直方图调整,获得较好的视觉效果程序演示2:X=imread('pout.tif');X=im2double(X);Z=immultiply(X,X);imshow(X),title('原始图像'),figure,imhist(X),title('原始图像灰度直方图');figure,imshow(Z),title('平方后图像'),figure,imhist(Z),title('平方后图像灰度直方图')图片演示效果图如下,可以明显看出亮度区域被展开,暗区域被进一步压缩。
83、图像绝对差值运算运用函数imabsdiff实现两幅图像的绝对差值运算,图像的类型应该相同,即把相同类型相同长度的数组的对应位分别做减法,返回结果是每一位差的绝对值,即返回类型相同;图像求补运算运用函数imcomplement,适用于各种图像格式,取补操作是对每个像素值都取补,即用像素类型最大值减去像素值,得到最终结果,用于将目标与背景调换和对相片底片图像进行取补操作可得到真实景象。
程序演示如下:I=imread('cameraman.tif');subplot(131),imshow(I),title('原图像');J=uint8(filter2(fspecial('gaussian'),I));K=imabsdiff(I,J);subplot(132),imshow(K,[]),title('绝对差值后图像');L=imcomplement(I);subplot(133),imshow(L),title('图像求反后')图片效果:910二、 图像几何运算几何运算可改变图像中各物体之间的空间关系。
这种运算可以被看成是将(各)物体在图像内移动。
一个几何运算需要两个独立的算法。
首先,需要一个算法来定义空间变换本身,用它来描述每个像素如何从其初始位置“移动”到终止位置,即每个像素的“运动”。
同时,还需要一个用于灰度插值的算法,这是因为,在一般情况下,输入图像的位置坐标(x,y)为整数,而输出图像的位置坐标为非整数,反过来也如此。
因此插值就是对变换之后的整数坐标位置的像素值进行估计。
● 1图像插值,matlab 提供了三种差值方法:1最邻近差值是最简便的插值,在这种算法中,每一个插值输出像素的值就是在输入图像中与其最临近的采样点的值。
最近邻插值是工具箱函数默认使用的插值方法f (x )=f (x k )1/2(x k-1+x k )<x<1/2(x k +x k+1) 2双线性插值,的输出像素值是它在输入图像中2×2领域采样点的平均值,它根据某像素周围4个像素的灰度值在水平和垂直两个方向上对其插值。
3双三次差值,核为三次函数,其插值邻域的大小为4×4。
它的插值效果比较好,但相应的计算量也比较大。
● 图像噪声按噪声和信号之间关系分为乘性噪声和加性,按其与图像之间的相关性分为无关噪声和相关噪声;为图像添加噪声函数调用为J=imoise(I,type,parameters)程序演示:I=imread('saturn.png');subplot(131),imshow(I),title('原图像'); A=imnoise(I,'gaussian',0,0.02);subplot(132),imshow(A),title('加高斯噪声后图像'); B=imnoise(I,'speckle',0.02);subplot(133),imshow(B),title('加乘性噪声后图像');图片效果:图像的旋转在工具箱中的函数imrotate可用上述三种方法对图像进行插值旋转,默认的插值方法也是最邻近插值法,数字图像进行旋转时,各像素坐标将会发生变化,使得旋转之后不能正好落于整数坐标处,因此需进行差值。
Imrotate的语法格式为:B = imrotate(A,angle,method)函数imrotate对图像进行旋转,参数method用于指定插值的方法,,可选用的值为'nearest'(最邻近法),'bilinear'(双线性插值),'bicubic'(双三次插值),默认为'nearest'。
一般说来旋转后的图像会比原图大分别用不同插值旋转程序演示如下:I=imread('cameraman.tif');J1=imrotate(I,-45,'bicubic');J2=imrotate(I,45,'bilinear','crop');J3=imrotate(I,45,'loose');figure,subplot(221),imshow(I),title('原图像');subplot(222),imshow(J1),title('顺旋转1');subplot(223),imshow(J2),title('逆旋转1');subplot(224),imshow(J3),title('逆旋转2')图片效果:图像的缩放函数调用B = imresize(A,m,method)这里参数method用于指定插值的方法,可选用的值为'nearest'(最邻近法),'bilinear'(双线性插值),'bicubic'(双三次插值),默认为'nearest',通过不同放大缩小会改变图片的清晰度。
程序演示如下:I=imread('kids.tif');[m,n]=size(I);J1=imresize(I,0.2);J2=imresize(I,5,'nearest');J3=imresize(I,[8*m 8*n],'bilinear');figure, imshow(I),title('ÔͼÏñ');,imshow(J1);,imshow(J2);,imshow(J3)图片效果:图像的投影变换投影变换是将图像像素点的坐标变换成另一种像素点的坐标的过程,其调用函数为maketform,imtransform,程序演示:J=imread('lena1.tiff');T=maketform('affine',[.5 0 0;.5 2 0;0 0 1]);I1=imtransform(J,T);I2=size(J);I3=zeros(I2(1)*2,I2(2)*0.5+I2(2)*0.5);for i=1:I2(1)for j=1:I2(2)I3(2*i,uint8(i*0.5+j*0.5))=J(i,j);endendI3=uint8(I3);subplot(131);imshow(J);title('原图像')subplot(132);imshow(I1);title('结构变换后图像');subplot(133);imshow(I3);title('空间变换后图像')图片显示效果:图像的裁剪对于要处理图像,有时只关心一部分图像,所以需对整个图像进行处理,matlab中imcrop函数对图像进行剪切处理,可以大大提高处理效率。