一、实验目的
1、了解图像运算的意义和手段;
2、熟练掌握图像的代数运算和几何运算方法;
3、掌握图像各类噪声的添加及消除噪声的方法;
4、比较经过各个运算后图像之间的变化;
二、实验任务
实验要求设计一个程序完成下列要求:
1、读入两幅图像,完成基本代数运算,并显示各次运算的结果图像;
2、给某幅图像加入椒盐噪声后并与前一张图显示在同一图像对话框中;
3、运用for循环,将100幅加有噪声的图像进行相加并求其平均值,显示求平均后图像。
4、将图像分别放大1.5倍和缩小0.8倍,插值方法使用双线性插值法。将图像顺时针旋转45度,显示旋转后的图像。
5、设计实验步骤,完成实验报告。
三、实验内容
Matlab源程序如下:
clear
clc
I1=imread('rice.png');
I2=imread('testpat1.png');
I1=im2double(I1);
I2=im2double(I2);
Add=imadd(I1,I2); %图像加运算
Sub=imsubtract(I1,I2); %图像减运算
Mul=immultiply(I1,I2); %图像乘运算
Div=imdivide(I1,I2); %图像除运算
Abs=imabsdiff(I1,I2); %图像差的绝对值运算
Com=imcomplement(I1); %图像补运算
figure(1);
subplot(2,4,1);imshow(I1);title('原图1');
subplot(2,4,2);imshow(I2);title('原图2');
subplot(2,4,3);imshow(Add,[]);title('图像加运算');
subplot(2,4,4);imshow(Sub,[]);title('图像减运算');
subplot(2,4,5);imshow(Mul,[]);title('图像乘运算');
subplot(2,4,6);imshow(Div,[]);title('图像除运算');
subplot(2,4,7);imshow(Abs,[]);title('图像差的绝对值运算');
subplot(2,4,8);imshow(Com,[]);title('图像1的补运算');
Noi=imnoise(I1,'salt & pepper');
figure(2);
subplot(1,3,1);imshow(I1);title('原图1');
subplot(1,3,2);imshow(Noi);title('加入椒盐噪声后的图1');
N1=zeros(256,256);
for i=1:100 %将图像加噪声再通过多次相加求平均的方法祛除噪声
Noi1=imnoise(I1,'salt & pepper');
N2=im2double(Noi1);
N1=N1+N2;
end
N3=N1/100;
subplot(1,3,3);imshow(N3);title('相加求平均的图像');
M1=imresize(I2,1.5,'bilinear');
M2=imresize(I2,0.8,'bilinear');
M11=imrotate(M1,-45,'bilinear');
M22=imrotate(M2,-45,'bilinear');
figure(3);
subplot(1,3,1);imshow(I2);title('原图');
subplot(1,3,2);imshow(M11);title('放大1.5倍并顺时针旋转45°');
subplot(1,3,3);imshow(M22);title('缩小0.8倍并顺时针旋转45°');
四、实验结果
在Figure1中显示了8幅图像,其中第一行从左至右依次是:原图1、原图2、两图像加运算后的图像、两图像减运算后的图像;第二行从左至右依次是:两图像乘运算后的图像、两图像除运算后的图像、两图像的差的绝对值图像、原图1的补运算图像。
在Figure2中显示了3幅图像,从左至右依次是:原图像、在原图像上加入椒盐噪声后的图像、将100幅加有噪声的图像进行相加并求其平均值。
在Figure3中显示了3幅图像,从左至右依次是:原图像、放大1.5倍并顺时针旋转45°、缩小0.8倍并顺时针旋转45°。
图1 程序运行结果图像1
图2 程序运行结果图像2
图3 程序运行结果图像3
五、实验过程的思考
1、关于图像代数运算:
图像的代数运算实质上是图像像素间的操作,所以就要求两幅图像类型和尺寸一致,在选择图像时不能只看其大小,有时可能会遇到二值图像。此时也可使用im2double函数将两幅图像类型化为一致。 2、关于将图像加噪声再通过多次相加求平均的方法消除噪声:
在程序中使用了for循环100次给图像加入椒盐噪声,然后用求平均的方法消除了噪声。如果把添加噪声的函数放在循环之外则不会产生这样的效果,此时相当于对同一数组的数据相加100次再求平均,数组数据并不会发生变化。同时要注意加入噪声后要使用im2double将图像矩阵化为double型,因为普通代数运算要求的是双精度型。
更多函数信息可参考matlab官网 MATLAB-函数
|
请发表评论