数图各实验代码Word文件下载.docx
《数图各实验代码Word文件下载.docx》由会员分享,可在线阅读,更多相关《数图各实验代码Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。
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);
fori=1:
100
J=imnoise(I,'
J1=im2double(J);
K=K+J1;
end
K=K/100;
%求图像的平均
figure;
imshow(K),title('
相加求平均后的图像'
6.自行下载两幅的图像,进行相加、相减、相乘的代数运算(注意运算时候图像的尺寸、类型等,如果不同,应将尺寸较大的图像裁剪或缩放),显示运算之前和运算之后的图像。
四种图像处理代数运算的数学表达式如下:
其中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.20.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)显示原图像、加有噪声的图像及均值滤波的图像。
比较结果。
C.tif'
Y=imnoise(X,'
0,0.005);
Z1=filter2(fspecial('
average'
3),Y)/255;
Z2=filter2(fspecial('
5),Y)/255;
Z3=filter2(fspecial('
7),Y)/255;
Z4=filter2(fspecial('
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)显示原图像、加有噪声的图像及中值滤波的图像。
I1=medfilt2(Y,[3,3]);
I2=medfilt2(Y,[7,7]);
subplot(2,2,1),imshow(X),title('
subplot(2,2,2),imshow(Y),title('
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('
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('
subplot(2,3,5),imshow(log(1+abs(J)),[]),title('
subplot(2,3,6),imshow(log(abs(Y)),[]),title('
2.设计一个简单的巴特沃斯低通滤波器(截止频率自选),对图像A作频域低通滤波,再作反变换,观察两种不同的截止频率下反变换后的图像与原图像的区别。
A=imread('
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较小的滤波'
D0=0.08*PQ
(1);
D0较大的滤波'
3.(选做内容)设计一个高斯高通滤波器(截止频率自选),对图像B作高频增强滤波,再作反变换,观察两种不同的截止频率下反变换后的图像与原图像的区别。
B=imread('
PQ=paddedsize(size(B));
D0=0.01*PQ
(1);
HBW=hpfilter('
PQ
(1),PQ
(2),D0,2);
H=0.5+2*HBW;
g=dftfilt(B,H);
subplot(1,2,1),imshow(B),title('
D0=0.1*PQ
(1);
实验四图像复原
利用imnoise3对图像I进行加入参数为C=[032;
064;
1616;
320;
640;
-1616]的周期噪声,得到图像J。
对含噪图像J进行陷波滤波图像复原。
要求列出各个步骤的运行代码。
显示I,J,差分图像I-I'
。
显示I、J、以及噪声的频谱。
img=im2double(imread('
peppers.tiff'
));
C=[032;
-1616];
A=[100020003000400050006000];
[r,R,S]=imnoise3(512,512,C,A);
img_noise=img+r;
F0=fft2(img);
F0=fftshift(F0);
F=fft2(img_noise);
F=fftshift(F);
sizec=size(img);
H=ones(sizec
(1),sizec
(2));
x0=sizec
(1)/2+1;
y0=sizec
(2)/2+1;
x=x0;
w=0.4*2*pi;
N=2*pi/w;
y=y0-round(sizec
(2)/N);
H(x,y-3:
y+3)=0;
H(x,(y0-y)+y0-3:
(y0-y)+y0+3)=0;
I=ifftshift(F.*H);
img1=ifft2(I);
subplot(4,2,1),imshow('
),title('
subplot(4,2,2),imshow(img),title('
原图转double类型'
subplot(4,2,3),imshow(S),title('
规定脉冲的谱'
subplot(4,2,4),imshow(r,[]),title('
空间域中相应的正弦噪声模式'
subplot(4,2,5),imshow(img_noise),title('
加噪图像'
subplot(4,2,6),imshow(log(1+abs(F0)),[]),title('
原图像频谱'
subplot(4,2,7),imshow(log(1+abs(F)),[]),title('
加噪图像频谱'
subplot(4,2,8),imshow(img1,[]),title('
陷波滤波结果'
实验五图像变化与编码
1.已知符号{x1,…x8}对应概率为0.4,0.18,0.1,0.1,0.07,0.06,0.05,0.04。
按教材图8.2的方式将其转换为霍夫曼码(编码过程写在实验报告中),并利用huffman.m转换为霍夫曼码,对照结果是否相同。
p=[0.40.180.10.10.070.060.050.04];
c=huffman(p)
结果如下:
c=
'
1'
010'
0111'
000'
0011'
0010'
01101'
01100'
2.对给定图像I利用mat2huff.m,huff2mat.m进行霍夫曼编码、解码。
计算压缩率CR。
>
I=imread('
Tracy.tif'
J=mat2huff(I);
cr1=imratio(I,J)
cr1=
1.2191
save('
tracy.mat'
J'
cr2=imratio('
cr2=
1.2386
loadtracy.mat
K=huff2mat(J);
L=imread('
rmse=compare(K,L)
rmse=
0
3.对给定图像I先进行预测编码、霍夫曼编码,然后进行霍夫曼解码、预测解码。
计算压缩率CR。
显示预测误差图像x-xˆ。
预测器采用xˆ=(A+B+C)/3,如下图所示:
A
C
B
x
比较该预测器与mat2lpc所指定的预测器性能差异(CR与执行速度)。
(提示:
可参考mat2lpc.m,lpc2mat.m,或采用循环方式设计预测器,执行速度可用tic,toc)。
x=imread('
tic
e1=mat2lpc(x);
toc
Elapsedtimeis20.392000seconds.
e2=mymat2lpc(x);
Elapsedtimeis17.553000seconds.
imshow(e1,[]);
imshow(e2,[]);
EN=[entropy(x),entropy(e1),entropy(e2)]
EN=
6.51473.97413.8448
y1=mat2huff(e1);
y2=mat2huff(e2);
z1=huff2mat(y1);
z2=huff2mat(y2);
x1=lpc2mat(z1);
x2=mylpc2mat(z2);
ComRatio=[imratio(x,y1),imratio(x,y2)]
ComRatio=
1.99522.0646
compare(x,x1)
ans=
compare(x,x2)
实验六综合实验
1、对给定的一幅彩色图像F进行图像增强,结果保存为BMP图像G。
win=[5,5];
img=imread('
F.tiff'
x=img(:
1);
y=img(:
2);
z=img(:
3);
X=medfilt2(x,win);
Y=medfilt2(y,win);
Z=medfilt2(z,win);
G=cat(3,X,Y,Z);
imwrite(G,'
G.bmp'
bmp'
subplot(1,2,1),imshow(img),title('
subplot(1,2,2),imshow(G),title('
原图像用中值滤波去除椒盐噪声'
2、将图像G以JPEG格式进行压缩,质量因子设为70,结果保存为JPG图像J。
imwrite(A,'
J.jpg'
quality'
70);
imshow('
),title('
图像G以JPEG格式压缩'
3、
(1)计算J相对于G的均方根误差RMSE。
B=imread('
rmse=compare(A,B)
5.5879
(2)计算J相对于G的压缩率CR。
cr=imratio(A,B)
cr=
1
4.提取图像G的边缘(幅值),结果保存为K。
K=imread('
K1=im2double(K);
K2=rgb2gray(K1);
[thr,sorh,keepapp]=ddencmp('
den'
wv'
K2);
K3=wdencmp('
gbl'
K2,'
sym4'
2,thr,sorh,keepapp);
%小波滤除
K4=medfilt2(K3,[99]);
%中值滤波
K5=imresize(K4,0.2,'
bicubic'
%图像大小
BW1=edge(K5,'
sobel'
BW2=edge(K5,'
roberts'
BW3=edge(K5,'
prewitt'
BW4=edge(K5,'
log'
BW5=edge(K5,'
canny'
h=fspecial('
5);
%高斯滤波
BW6=edge(K5,'
zerocross'
[],h);
subplot(2,3,1),imshow(BW1),title('
Sobel算子'
subplot(2,3,2),imshow(BW2),title('
Roberts算子'
subplot(2,3,3),imshow(BW3),title('
Prewitt算子'
subplot(2,3,4),imshow(BW4),title('
Log算子'
subplot(2,3,5),imshow(BW5),title('
Canny算子'
subplot(2,3,6),imshow(BW6),title('
零交叉算子'
[VG,A,PPG]=colorgrad(G);
figure,imshow(VG);
imwrite(VG,'
K.tiff'