数图各实验代码 联系客服

发布时间 : 星期三 文章数图各实验代码更新完毕开始阅读53dc8d6d59eef8c75ebfb334

实验一 数字图像的基本操作与代数运算

1.对各RGB图像、索引图像、灰度图像,用imread读出图像文件,并用imshow将图像显示出来,并用iminfo给出图像信息。观察一下图像数据的特点,理解数字图像在MATLAB中的处理就是处理一个矩阵,根据图像文件信息和图像数据矩阵的特点,确定图像的类型,体会各自数据的特点。

x=imread('RGBimageD.tiff') imshow(x)

imfinfo('RGBimageD.tiff')

2.选择一幅RGB彩色图像(图像RGBimageA),分别显示出原图像和R、G、B三个分量图像(用subplot函数显示在同一窗口中),观察对比它们的特点,体会不同颜色所对应的R、G、B分量的不同之处。

subplot(2,2,1),imshow (y),title ('原图像'); subplot(2,2,2),imshow (y(:,:,1)),title ('R分量'); subplot(2,2,3),imshow (y(:,:,2)),title ('G分量'); subplot(2,2,4),imshow (y(:,:,3)),title ('B分量');

3.将图像A中心部分选取出来,显示中心部分,并保存为与图像A相同格式的图像文件。

y=imread('RGBimageA.tiff') A1=imcrop(y,[100,100,300,300]); subplot(1,2,1),imshow (y),title ('原图像');

subplot(1,2,2),imshow (A1),title ('图像A的中心部分'); imwrite(A1,'A1.tiff','tiff')

4.选择一幅RGB图像(图像RGBimageB),使用imread和imwrite进行图像文件格式的相互转换(TIFF与JPG相互转换)。

z=imread('RGBimageB.tiff','tiff') imwrite(z,'RGBimageB.jpg','jpg')

5.给灰度图像加入高斯噪声,并显示。运用for循环,分别将5幅、50幅和500幅加有随机高斯噪声的图像进行相加并求其平均值。将几种求平均后的图像显示在同一图像对话框中,比较其结果。

[I, M] = imread('eight.tif'); J = imnoise(I, 'gaussian', 0, 0.02);

subplot(1,2,1), imshow(I, M), title('原图像'); subplot(1,2,2), imshow(J, M), title('加噪声后图像'); [m, n] = size(I); K = zeros(m, n); for i = 1 : 100

J = imnoise(I, 'gaussian', 0, 0.02); J1 = im2double(J); K = K + J1; end

K = K / 100; %求图像的平均

figure; imshow(K), title('相加求平均后的图像');

6.自行下载两幅的图像,进行相加、相减、相乘的代数运算(注意运算时候图像的尺寸、类型等,如果不同,应将尺寸较大的图像裁剪或缩放),显示运算之前和运算之后的图像。

四种图像处理代数运算的数学表达式如下:

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)

其中A(x,y)和B(x,y)为输入图像,而C(x,y)为输出图像。

7.选择一幅索引图像,将图像文件读出,并将这个图像显示出来。尝试修改MAP颜色矩阵的值,再将图像显示出来,观察图像颜色的变化。(选做)

[X,MAP] = imread ('flowers.tif','tif'); MAP1 = MAP + MAP; subimage (X,MAP1);

实验二 图像的灰度变换与空域滤波

1.显示图像A及其灰度直方图。用imadjust函数将它的灰度值调整到[0,1]之间,并观察调整后的图像与原图像的差别,调整后的灰度直方图与原灰度直方图的区别;改变灰度值调整范围,观察调整后的图像的变化及其与原图像的差别,调整后的灰度直方图的变化及其与原灰度直方图的区别;进一步利用改变灰度值调整范围,实现图像的反转。

X = imread('A.tif'); Y = imadjust(X,[0.2 0.8],[]); Z = imadjust(X,[],[1,0]);

subplot(3,2,1),imshow(X),title('图像A');

subplot(3,2,2),imhist(X),title('原图像的灰度直方图'); subplot(3,2,3),imshow(Y),title('调整后的图像A'); subplot(3,2,4),imhist(Y),title('调整后的灰度直方图'); subplot(3,2,5),imshow(Z),title('反转后的图像A'); subplot(3,2,6),imhist(Z),title('反转后的灰度直方图');

2.读取灰度图像B,用histeq函数将原始图像的灰度直方图均衡化,同时观察均衡化后的图像与前面图像的差别,均衡化后的灰度直方图与前面的灰度直方图的区别。

I = imread('B.tif'); J = histeq(I);

subplot(2,2,1),imshow(I),title('图像B');

subplot(2,2,2),imhist(I,64),title('图像B的直方图'); subplot(2,2,3),imshow(J),title('均衡化的图像B'); subplot(2,2,4),imhist(J,64),title('均衡化图像B的直方图');

3.给图像C加入高斯噪声,分别采用不同大小的模板对加有噪声的图像进行均值滤波,用一个图像处理对话框(subplot)显示原图像、加有噪声的图像及均值滤波的图像。比较结果。

X = imread('C.tif');

Y = imnoise(X,'gaussian',0,0.005); Z1= filter2(fspecial('average',3),Y)/255; Z2= filter2(fspecial('average',5),Y)/255; Z3= filter2(fspecial('average',7),Y)/255; Z4= filter2(fspecial('average',9),Y)/255; subplot(2,3,1),imshow(X),title('图像C');

subplot(2,3,2),imshow(Y),title('加入高斯噪声的图像C'); subplot(2,3,3),imshow(Z1),title('均值滤波模版尺寸为3'); subplot(2,3,4),imshow(Z2),title('均值滤波模版尺寸为5'); subplot(2,3,5),imshow(Z3),title('均值滤波模版尺寸为7'); subplot(2,3,6),imshow(Z4),title('均值滤波模版尺寸为9');

4.分别采用不同大小的模板对上述加有噪声的图像进行中值滤波,用一个图像处理对话框(subplot)显示原图像、加有噪声的图像及中值滤波的图像。比较结果。

X = imread('C.tif');

Y = imnoise(X,'gaussian',0,0.005); I1= medfilt2(Y,[3,3]); I2= medfilt2(Y,[7,7]);

subplot(2,2,1),imshow(X),title('图像C');

subplot(2,2,2),imshow(Y),title('加入高斯噪声的图像C'); subplot(2,2,3),imshow(I1),title('3×3模版'); subplot(2,2,4),imshow(I2),title('7×7模版');

实验三 图像的频域处理

1.读取图像A(lena.tiff)和B(rice.tif),显示这两幅图像,对图像作傅立叶变换,显示图像的傅里叶幅度谱和相位谱。做傅立叶逆变换,显示重建图像,看是否与原图像相同。

A = imread('lena.tiff'); B = imread('rice.tif');

I=fftshift(fft2(A)); J=fftshift(fft2(B)); subplot(2,3,1),imshow(A);

subplot(2,3,2),imshow(log(1+abs(I)),[]); subplot(2,3,3),imshow(angle(I)); subplot(2,3,4),imshow(B);

subplot(2,3,5),imshow(log(1+abs(J)),[]); subplot(2,3,6),imshow(angle(J));

X=ifft2(I); Y=ifft2(J);

subplot(2,3,1),imshow(A),title('图像A');

subplot(2,3,2),imshow(log(1+abs(I)),[]),title('二维傅里叶变换'); subplot(2,3,3),imshow(log(abs(X)),[]),title('逆变换后图像'); subplot(2,3,4),imshow(B),title('图像B');

subplot(2,3,5),imshow(log(1+abs(J)),[]),title('二维傅里叶变换'); subplot(2,3,6),imshow(log(abs(Y)),[]),title('逆变换后图像');

2.设计一个简单的巴特沃斯低通滤波器(截止频率自选),对图像A作频域低通滤波,再作反变换,观察两种不同的截止频率下反变换后的图像与原图像的区别。

A=imread('lena.tiff'); PQ = paddedsize(size(A)); D0 = 0.01*PQ(1);

H = lpfilter('btw',PQ(1),PQ(2),D0); g = dftfilt(A,H);

subplot(1,2,1),imshow(A),title('原图像');

subplot(1,2,2),imshow(g,[]),title('D0较小的滤波');

A=imread('lena.tiff'); PQ = paddedsize(size(A)); D0 = 0.08*PQ(1);

H = lpfilter('btw',PQ(1),PQ(2),D0); g = dftfilt(A,H);

subplot(1,2,1),imshow(A),title('原图像');

subplot(1,2,2),imshow(g,[]),title('D0较大的滤波');