Matlab图像学校实验操作基础——矩阵、九宫格、噪声处理
实验(一)
- 【实验目的】:
- 一、运用Matlab对矩阵进行运算
- 二、运算Matlab对图像的基本处理
- 三、熟悉Matlab基本编程
【内容】
一、矩阵运算
矩阵的定义、矩阵的点乘、矩阵乘法和矩阵点运算
A=[4 3 -1 4; 3 7 1 -5; -1 1 2 9]
B=[0 1 2 4; -1 0 3 5; -2 -3 0 6; -9 6 5 7]
C=[0 3 -1 4; -3 0 1 -5; 1 -1 0 9]
A减C: A - C
A乘以B: A * B
B的逆矩阵 inv(B)
A点乘 C: A .* C, A.^2
A 的点平方: A.^ 2
二、图像的基本处理
. 【分割】提取Lena图像的左半上角部分,与原始Lena 图像在figure中显示,并做适当的命名,。
a =imread('Lena.bmp');
[M, N, C] = size(a);
b =a(1:floor(M/2), 1: floor(N/2), : );
c = a(1:floor(M/4), 1:floor(N/4), :);
figure:
subplot(1,3,1);
imshow(a);title( ' Oringal imagre' )
subplot(1,3,2);
imshow(b); title( 'Top-left 1/2 quarter' )
subplot(1,3,3);
imshow(c);title( 'Top-left 1/4 quarter' )
外延:九宫格切割。
a =imread( 'Lena.bmp ' );
a_m = imresize(a,1.8,'bilinear'); %先放大1.8倍
[M, N, C]= size(a_m);
figure;
imshow(a_m);
axis on;
m =floor(M/3);
temp1 = floor(M/3); %x轴参数
temp2 = floor(N/3); %y轴参数
if(temp1 > temp2)
temp1= temp2;
temp2= temp1;
else
temp2= temp1;
end
subplot(3,3,1);
imshow(a_m( 1: temp2, 1: temp1))
subplot(3,3,2);
imshow(a_m(1: temp2,temp1: temp1*2))
subplot(3,3,3);
imshow(a_m(1: temp2,temp1*2: temp1*3))
subplot(3,3,4);
imshow(a_m( temp2:temp2*2, 1:temp1 ))
subplot(3,3,5,);
imshow(a_m( temp2:temp2*2,temp1:temp1*2 ))
subplot(3,3,6,);
imshow(a_m(temp2: temp2*2,temp1*2:temp1*3))
subplot(3,3,7);
imshow(a_m(temp2*2: temp2*3,1: temp1))
subplot(3,3,8);
imshow(a_m(temp2*2: temp2*3, temp1:temp1*2))
subplot(3,3,9);
imshow(a_m( temp2*2:temp2*3, temp1*2:temp1*3 ))
三、图像去噪,图像加法
利用imnoise ,对原始Lema图像叠加高斯噪声,产生至少4幅以上的含噪声图像。对这些含噪声图像采用 相加
运算,来验证是否可以抑制噪声。将原始图像、所有噪声图像、相加结果图像显示在一个figure中。
代码:
img = imread('Lena.bmp');
nos1 = imnoise(img,'gaussian',0,0.05);
nos2 =imnoise(img, 'gussian',0,0.06);
nos3 =imnoise(img, 'gussian', 0, 0.03);
nos4 =imnoise(img,'gussian',0,0.04);
temp = uint16(nos1)+uint16(nos2)+uint16(nos3)+uint16(nos4);
img2 =uint8((tmp/4));
figure;
subplot(231);imshow(img);title('原图')
subplot(232);imshow(nos1);title('方差0.05的高斯')
subplot(233);imshow(nos2);title('方差0.06的高斯')
subplot(234);imshow(nos3);title('方差0.03的高斯')
subplot(235);imshow(nos4);title('方差0.04的高斯')
subplot(236);imshow(img2,[]);title('矩阵相加,图像加法去噪')
&
&&&&&&&参考百度:
图像噪声函数 imnoise();
类型有:a= imread(‘Lena.bmp’)
- b=imnoise(a,‘gassian’,m,s); 其中:a是图像对象;gassian为高斯噪声,m是均值,s为方差。
- b=imnoise(a,‘localvar’,V); 其中:V是局部方差,理想方差值,而且与a是大小相等的矩阵。
- b=imnoise(a, ‘localvar’, image_intensity,var); 将均值为0的高斯噪声加到图像a中,其中噪声的局部方差var是图像a的亮度值的函数。参值image_intensity和var是大小相同的向量。后面在plot(image_intensity, var)将绘制出噪声方差与图像亮度值函数的关系。
- b=imnoise(a,‘salt&pepper’ , d); 椒盐噪声处理图像。其中:d是噪声密度(是包含噪声值的图像区域的百分比),默认d=0.05;
- b=imnoise(a,‘speckle’, n,var);乘法噪声处理图像。其中:n是均值(默认=0),var是方差(默认=0.04)的均匀分布的随机噪声。
- b=imnoise(a,‘poisson’); 泊松噪声处理图像。
运行结果: