数图各实验代码.docx

上传人:b****5 文档编号:8234891 上传时间:2023-01-30 格式:DOCX 页数:11 大小:27.48KB
下载 相关 举报
数图各实验代码.docx_第1页
第1页 / 共11页
数图各实验代码.docx_第2页
第2页 / 共11页
数图各实验代码.docx_第3页
第3页 / 共11页
数图各实验代码.docx_第4页
第4页 / 共11页
数图各实验代码.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

数图各实验代码.docx

《数图各实验代码.docx》由会员分享,可在线阅读,更多相关《数图各实验代码.docx(11页珍藏版)》请在冰豆网上搜索。

数图各实验代码.docx

数图各实验代码

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

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);

fori=1:

100

J=imnoise(I,'gaussian',0,0.02);

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)显示原图像、加有噪声的图像及均值滤波的图像。

比较结果。

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较大的滤波');

3.(选做内容)设计一个高斯高通滤波器(截止频率自选),对图像B作高频增强滤波,再作反变换,观察两种不同的截止频率下反变换后的图像与原图像的区别。

B=imread('rice.tif');

PQ=paddedsize(size(B));

D0=0.01*PQ

(1);

HBW=hpfilter('gaussian',PQ

(1),PQ

(2),D0,2);

H=0.5+2*HBW;

g=dftfilt(B,H);

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

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

B=imread('rice.tif');

PQ=paddedsize(size(B));

D0=0.1*PQ

(1);

HBW=hpfilter('gaussian',PQ

(1),PQ

(2),D0,2);

H=0.5+2*HBW;

g=dftfilt(B,H);

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

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

实验四图像复原

利用imnoise3对图像I进行加入参数为C=[032;064;1616;320;640;-1616]的周期噪声,得到图像J。

对含噪图像J进行陷波滤波图像复原。

要求列出各个步骤的运行代码。

显示I,J,差分图像I-I'。

显示I、J、以及噪声的频谱。

img=im2double(imread('peppers.tiff'));

C=[032;064;1616;320;640;-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('peppers.tiff'),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('Tracy.tif','tracy.mat')

cr2=

1.2386

>>loadtracy.mat

>>K=huff2mat(J);

>>L=imread('Tracy.tif');

>>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('Tracy.tif');

>>tic

>>e1=mat2lpc(x);

>>toc

Elapsedtimeis20.392000seconds.

>>tic

>>e2=mymat2lpc(x);

>>toc

Elapsedtimeis17.553000seconds.

>>figure;imshow(e1,[]);

>>figure;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=

0

>>compare(x,x2)

ans=

0

实验六综合实验

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。

A=imread('G.bmp');

imwrite(A,'J.jpg','jpg','quality',70);

imshow('J.jpg'),title('图像G以JPEG格式压缩');

3、

(1)计算J相对于G的均方根误差RMSE。

B=imread('J.jpg');

rmse=compare(A,B)

rmse=

5.5879

(2)计算J相对于G的压缩率CR。

cr=imratio(A,B)

cr=

1

4.提取图像G的边缘(幅值),结果保存为K。

K=imread('G.bmp');

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('gaussian',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','tiff');

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 工作总结汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1