2022年《数字图像处理》实验指导 .pdf
1 说明每个实验题目包含一些数字图像处理的程序设计要求,需要使用的数字图像在对应的文件夹中给出,供上机实验参考使用。 对于每个题目,只需要根据题目要求设计,对程序进行编译、调试。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 6 页 - - - - - - - - - 2 实验一图像处理的基本操作一、实验目的1熟悉有关数字图像处理的MATLAB基本操作和编写2掌握数字图像的基本读写、显示与保存。3能够利用MATLAB工具箱完成图像处理的基本运算二、实验内容1( 1)读取图像并显示真彩色图像( 2)读取图像并显示索引色图像,并转换为灰度图像;(3)读取图像并显示灰度图像,并转换为二进制图像; (4)检测内存中的图像和保存图像;moon.tif, canoe.tif, tree.tif, rice.png2查看不同分辨率下图像的显示结果;3对于彩色图像观看GRB 通道各单通道图像。4实现马赫带效应并画出灰度直方图。附录:原代码实验一:第1 题(1) clear;close all; I= imread(D:Program FilesMATLAB71workimagesBarbara24.png); imshow(I) 实验一:第1 题(2) clear;close all; I,map=imread(canoe.tif); image(I); colormap(map); %或者 imshow(I,map) load trees I = ind2gray(X,map); imshow(X,map) figure,imshow(I) 实验一:第1 题(3) clear;close all; I= imread(D:Program FilesMATLAB71workimageslena.png); imagesc(I,0 255); 预处理colormap(gray); 灰度处理pause 停留imshow(I); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 6 页 - - - - - - - - - 3 显示灰度图像I = imread(cameraman.tif); level=graythresh(I); BW=im2bw(I,level); figure,imshow(BW); 实验一:第1 题(4) whosimwrite(I2, lena_hist.png)实验一:第2 题clear all; Im,map=imread(D:Program FilesMATLAB71workimagesPeppers2.png); sizeX,sizeY,sizeZ=size(Im); figure(1);subplot(221); image(Im),axis square; title( 原始图像 ); %显示图像的R 分量Im_R=Im(:,:,1); subplot(222); image(Im_R),colormap(gray(256); axis square; title( 图像的 R 分量 ); %显示图像的G 分量Im_G=Im(:,:,2); subplot(223); image(Im_G),title( 图像的 G 分量 ); axis square; %显示图像的B 分量Im_B=Im(:,:,3); subplot(224); image(Im_B),title( 图像的 B 分量 ); axis square; 实验一:第3 题Im22=zeros(sizeX/2,sizeY/2,sizeZ); Im22=Im(1:2:sizeX,1:2:sizeY ,:); subplot(223); image(Im22),title( 尺度为原图像的1/4); axis square; Im44=zeros(sizeX/4,sizeY/4,sizeZ); Im44=Im(1:4:sizeX,1:4:sizeY ,:); subplot(224); image(Im44),title( 尺度为原图像的1/16); axis square; 实验一:第4 题%马赫带效应名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 6 页 - - - - - - - - - 4 Imm=zeros(256,256); for i=2:8 Imm(:,(i-1)*32:i*32)=32*(i-1); end figure(3); imshow(uint8(Imm),title(马赫带效应 ); figure(4); imhist(uint8(Imm); 实验二图像变换一、实验目的1熟悉有关MATLAB工具箱中提供的图像变换函数;2掌握傅立叶变换和小波变换等常用的正交变换函数。二、实验内容1对图像进行傅立叶变换和离散余弦变换,并分别求出其逆变换后重构图像的均方误差;2求两层小波分解,观察分解系数并重构,求重构图像误差值。3观察小波分解系数的方向性,实现三层小波分解,分别把HL,LH,HH子带置零和重构,观察重构图像跟原始图像的差异。附录:原代码实验二:第1 题clear;close all; d_image=double(image)/255; %将原图像的格式变换为double 格式%做 DCT 变换coef_all_dct=dct2(d_image); %逆 DCT 变换rec_image_dct= idct2(coef_all_dct); coef_all_fft=fft2(d_image); %做 DFT 变换rec_image_fft=real(ifft2(coef_all_fft); %逆 DFT 变换%求重构均方误差diff_dct=d_image-rec_image_dct; rec_error_dct=sum(sum(diff_dct.2); %存放误差的数据diff_fft =d_image-rec_image_fft; rec_error_fft=sum(sum(diff_fft.2); %存放误差的数据实验二:第2 题clear; load woman 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 6 页 - - - - - - - - - 5 imshow(X,map), xlabel(a) nbcol=size(map,1); LL1,LH1,HL1,HH1=dwt2(X,db1); coef11=wcodemat(LL1,nbcol); coef12=wcodemat(LH1,nbcol); coef13=wcodemat(HL1,nbcol); coef14=wcodemat(HH1,nbcol); LL2,LH2,HL2,HH2=dwt2(LL1,db1); coef21=wcodemat(LL2,nbcol); coef22=wcodemat(LH2,nbcol); coef23=wcodemat(HL2,nbcol); coef24=wcodemat(HH2,nbcol); figure; imshow(coef21,coef22;coef23,coef24,coef12;coef13,coef14,map) xlabel(b) rLL1=idwt2(LL2,LH2,HL2,HH2,db1); rX=idwt2(rLL1,LH1,HL1,HH1,db1); figure; imshow(rX,map), xlabel(c) err=sum(sum(abs(X-rX) 实验二:第3 题clear; X,map=imread(L4_3b.bmp); figure;subplot(2,2,1), imshow(X,map), xlabel(a) X=double(X); nbcol=size(map,1); LL1,LH1,HL1,HH1=dwt2(X,db8,mode,per); LL2,LH2,HL2,HH2=dwt2(LL1,db8,mode,per); LL3,LH3,HL3,HH3=dwt2(LL2,db8,mode,per); LL4,LH4,HL4,HH4=dwt2(LL3,db8,mode,per); altzero4=zeros(size(LL4); altzero3=zeros(size(LL3); altzero2=zeros(size(LL2); altzero1=zeros(size(LL1); rLL3=idwt2( LL4,altzero4,HL4,HH4,db8,mode,per); rLL2=idwt2(rLL3,altzero3,HL3,HH3,db8,mode,per); rLL1=idwt2(rLL2,altzero2,HL2,HH2,db8,mode,per); rX=idwt2(rLL1,altzero1,HL1,HH1,db8,size(X); difrtH=rX-X; subplot(2,2,2), imshow(discardH,map), xlabel(b) X1=rX; rLL3=idwt2( LL4,LH4,altzero4,HH4,db8,mode,per); rLL2=idwt2(rLL3,LH3,altzero3,HH3,db8,mode,per); rLL1=idwt2(rLL2,LH2,altzero2,HH2,db8,mode,per); rX=idwt2(rLL1,LH1,altzero1,HH1,db8,size(X); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 6 页 - - - - - - - - - 6 difrtV=rX-X; discardV=wcodemat(difrtV ,nbcol); subplot(2,2,3),imshow(discardV ,map), xlabel(c) X2=rX; rLL3=idwt2( LL4,LH4,HL4,altzero4,db8,mode,per); rLL2=idwt2(rLL3,LH3,HL3,altzero3,db8,mode,per); rLL1=idwt2(rLL2,LH2,HL2,altzero2,db8,mode,per); rX=idwt2(rLL1,LH1,HL1,altzero1,db8,size(X); difrtX=rX-X; discardX=wcodemat(difrtX,nbcol); subplot(2,2,4), imshow(discardX,map), xlabel(d) X3=rX; figure; subplot(2,2,1), imshow(X,map), xlabel(a) subplot(2,2,2), imshow(X1,map), xlabel(b) subplot(2,2,3), imshow(X2,map), xlabel(c) subplot(2,2,4), imshow(X3,map), xlabel(d) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 6 页 - - - - - - - - -