1、实验一 计算图像的基本统计指标实验目的:1) 熟悉 Matlab 图像处理工具箱的使用方法。2) 了解计算图像统计指标的方法及其在图像处理中的意义。实验原理:1) 可将一幅图视为一个二维矩阵,因此 Matlab 处理图像十分方便。2) 利用 Matlab 图像处理工具箱读、写和显示图像。实验内容:将图像反白。图像是 RGB 彩色图像 football.jpg,采用 rgb2gray 函数可以将彩色图像转换为黑白图像。I=imread(football.jpg);subplot(131);imshow(I);J=rgb2gray(I);subplot(132);imshow(J);Ave=mea
2、n2(J);SD=std2(double(J);s=size(J);all_white=255*ones(s(1),s(2);all_white_uint8=uint8(all_white);K=imsubtract(all_white_uint8,J);subplot(133);imshow(K);imwrite(K,football_inverse.jpg);实验结果:实验二 图像的数字化实验目的:1) 了解静止图像的数字化原理。2) 掌握常用数字化设备的使用。实验原理:通过将模拟图像数字化后,用计算机对图像进行灵活的处理。实验内容:2.1 用 Matlab 程序说明实际数字图像量化特点。
3、clc;clear;W=16;I=imread(kids.tif);s=size(I);J=I(s(1)/2-W/2:s(1)/2+W/2-1,s(2)/2-W/2:s(2)/2+W/2-1)imshow(J);K=I(2*W:s(1)-W,2*W:s(2)-5*W);figure,imshow(K);实验结果:实验三 图像变换实验目的:1) 了解图像正变换和逆变换的原理2) 理解图像变换的系数特点3) 掌握常用图像变换的实现过程4) 掌握图像的频谱分析方法5) 了解图像变换在图像数据压缩等方面的应用实验原理:1) 二维离散傅立叶变换、余弦变换、小波变换的正逆变换公式。2) Matlab 中变
4、换的实现函数。3) 讨论正交变换的应用。实验内容:3.1 应用 Matlab 实现图像的傅立叶变换。I=imread(pout.tif);imshow(I);F1=fft2(I);figure,imshow(log(abs(F1)+1),0 10);F2=fftshift(F1);figure,imshow(log(abs(F2)+1),0 10);实验结果:原始图像 图像的频谱图 中心化的频谱图3.2 应用 Matlab 实现图像的 DCT 变换。clear all;clcI=imread(tire.tif);subplot(121);imshow(I);C1=dct2(I);C2=ffts
5、hift(C1);subplot(122);imshow(log(abs(C2)+1,0 10);实验结果:原始图像 DCT 系数3.3 已知二维数字图像矩阵 f,求此图像的二维 DWT,并反求 f。f=2 5 5 2;3 3 3 3;3 3 3 3;2 5 5 1;G=1 1 1 1;1 1 -1 -1;1 -1 -1 1;1 -1 1 -1;W=(1/16)*G*f*G实验结果:W =3.1875 0.0625 -0.8125 0.06250.0625 -0.0625 0.0625 -0.06250.1875 0.0625 -0.8125 0.06250.0625 -0.0625 0.06
6、25 -0.06253.4 bior3.7 是双正交样条小波对应的滤波器。应用 Matlab 对 wbarb.mat 图像实现小波变换。load wbarb;image(X);colormap(map);cA1,cH1,cV1,cD1=dwt2(X,bior3.7);A1=upcoef2(a,cA1,bior3.7,1);H1=upcoef2(h,cH1,bior3.7,1);V1=upcoef2(v,cV1,bior3.7,1);D1=upcoef2(d,cD1,bior3.7,1);figure;colormap(map);subplot(221);image(wcodemat(A1,18
7、0);title(Approximation A1);subplot(222);image(wcodemat(H1,255);title(Horizontal Detail H1);subplot(223);image(wcodemat(V1,255);title(Vertical V1);subplot(224);image(wcodemat(D1,255);title(Diagonal D1);Y=2.0*IDWT2(A1,H1,V1,D1);Y=imresize(Y,0.5);figure;image(Y);colormap(map);实验结果:原图像一层小波变换的 4 个分量实验四 频
8、率域高通滤波法实验目的:1) 熟悉并学会使用 Matlab 中图像增强的相关函数。2) 了解图像增强的方法、去噪的方法和效果。实验原理:1) 将一幅图视为一个二维矩阵,用 Matlab 进行图像增强。2) 利用 Matlab 图像处理工具箱中的 imread、imshow、imnoise、filter2 对图像进行去噪处理。3) 图像灰度修正:灰度变换。对不满意的图像通过线性灰度映射关系进行变换,其效果可以得到明显提高。通过分析,会发现前后图像的直方图也会发生相应的变化。4) 图像平滑方法:领域平均、中值滤波。5) 图像锐化方法。人眼对目标边缘和轮廓较为敏感,对图像进行锐化,有助于突出这些图像
9、的特征。从频率域看,锐化提升了图像的高频分量。实验内容:4.1 采用线性变换进行图像增强。应用 Matlab 函数 imadjust 将图像在 0.32550.7255灰度之间的值通过线性变换映射到 0255 之间。I=imread(pout.tif);subplot(2,2,1),imshow(I);subplot(2,2,2),imhist(I);J=imadjust(I,0.3 0.7,);subplot(2,2,3),imshow(J);subplot(2,2,4),imhist(J);实验结果:原图 原图像的直方图输出图像 输出图像的直方图4.2 求“布罗格的画”图像的归一化直方图I
10、=imread(布格罗的画 .jpg);J=rgb2gray(I);subplot(1,2,1),imshow(J);N=numel(J);pr = imhist(J)/N;k=0:255;subplot(1,2,2),stem(k,pr);实验结果布罗格的画图像 布罗格的画的直方图4.3 在 Matlab 环境中,采用直方图均衡的方法对 tire.tif 图像进行图像增强。I = imread(tire.tif);J= histeq(I);subplot(2,2,1),imshow(I);subplot(2,2,2),imhist(I);subplot(2,2,3),imshow(J);su
11、bplot(2,2,4),imhist(J);实验结果原图像 原图像的直方图均衡后的图像 均衡后图像的直方图4.4 分别采用上述前 4 种模块对受到椒盐噪声污染的 eight.tif 图像进行平滑处理。I=imread(tire.tif); %读入原始图像Imshow(I ,);f= imnoise(I ,salt %对图像加椒盐噪声,噪声强度为 0,04figure , imshow(f);h0 = 1/9. *1 1 1 1 1 1 1 1 1; %定义平滑模板h1 = 0.1 0.1 0.1; 0.1 0.2 0.1; 0.1 0.1 0.1; h2 = 1/16. *1 2 1; 2
12、4 2 ;1 2 1; %高斯模板h3 = 1/8. *1 1 1; 1 0 1 ;1 1 1; g0= filter2(h0,f); %用模板进行滤波处理g1= filter2(h1,f); g2= filter2(h2,f); g3= filter2(h3,f); figure,imshow(g0, ); %显示平滑处理结果figure,imshow(g1, );figure,imshow(g2, );figure,imshow(g3, );实验结果原始图像 有噪声的图像 用模版 0 处理后的图像用模版 1 处理后的图像 用模版 2 处理后的图像 用模版 3 处理后的图像4.5 选用 3*
13、3 的窗口对椒盐造噪声进行中值滤波。I=imread(tire.tif); Imshow(I );J= imnoise(I ,salt figure , imshow(J);K=medfilt2(J); %二维中值滤波figure,imshow(K);实验结果:原始图像 加噪声的图 二维中值滤波后的图像4.6 利用罗伯茨梯度对 rice.tif 图像进行锐化处理I=imread(tire.tif); Imshow(I );BW= edge(I ,roberts , 0.1); %对输入图像求罗伯茨梯度figure , imshow(BW);实验结果:原始图像 锐化后结果图4.7 应用拉普拉斯算
14、子对 rice.tif 图像进行锐化处理。I=imread(tire.tif); imshow(I );h = 0 -1 0; -1 4 -1 ;0 -1 0; J= imfilter(I ,h); figure , imshow(J);figure , imhist(J);K=imadjust(J,0.0 0.2,); %二维中值滤波figure,imhist(K);figure , imshow(K);实验结果:原始图像 拉普拉斯锐化 对比扩展后的图像拉普拉斯锐化后图像的直方图 对锐化后图像的对比扩展实验五 图像编码与压缩实验目的:1) 了解图像的压缩编码原理。2) 掌握常用的图像压缩算法
15、。实验原理:1) 去除数据冗余度可以有效的压缩数据。2) 图像压缩编码的主要技术指标:压缩比、客观评价 SNR、主管评价。实验内容:1) 利用维纳滤波对有噪声模糊图像进行复原。2) 比较直接维娜滤波、设置信噪比参数、设置噪声和自相关函数这三种情况下的图像复原效果。实验步骤1) 选择图 6.19 所示的原始图像作为测试图像。2) 设计图像复原算法。3) 设置维娜滤波中的相关参数。对图像复原效果的影响。4) 显示原始图像和复原后的重建图像。5) 通过修改这些参数来观察参数对图像复原效果的影响。程序代码如下:blurred = imread (flower.gif); %读入无噪声模糊图像并命名为
16、blurredlen=28;theta=14;PSF=fspecial(motion , len , theta);wnr1 = deconvwnr(blurred,PSF); %维娜滤波复原图像figure, imshow(wnr1);- %读入有噪声模糊图像并命名为 blurrednoisyV=0.02;NP=V*prod(size(I); %计算噪声强度Edged=edgetaper(blurrednoisy,PSF);%使用 edgetaper 函数对图像进行预处理,以消除图像的不连续边界reg1 LAGRA=deconvreg(Edged,PSF,NP);figure,subplot
17、(2,2,1), imshow(reg1); %小 NPreg2=deconvreg(Edged,PSF,NP*1.2);subplot(2,2,2), imshow(reg2); %大 NPreg3=deconvreg(Edged,PSF,LAGRA);figure,subplot(2,2,1), imshow(reg3); %小范围搜索reg4=deconvreg(Edged,PSF,50*LAGRA);subplot(2,2,2), imshow(reg4);REGOP=1 -2 1; %大范围搜索reg3=deconvreg(Edged,PSF,LAGRA,REGOP); figure
18、,subplot(2,2,1), imshow(reg5); %平滑约束复原- %读入有噪声的模糊图像并命名为 Noisylen=9;theta=12;PSF=fspecial(gaussian, len, theta); %真是的 PSFUNDERPSF=ones(size(PSF) - 4);%该 PSF 数据的每一维都比真实的 PSF 少 4 个像素J1 P1=deconvblind(Nosiy,UNDERPSF);figure,subplot(2,2,1); imshow(J1);OVERPSF=padarray(UNDERPSF, 4,4,replicate,both);%该 PSF
19、 数组的每一维都比真实的 PSF 多 4 个像素J2 P2=deconvblind(Nosiy,OVERPSF);subplot(2,2,2); imshow(J2);INITPSF=padarray(UNDERPSF, 2,2,replicate,both);J3 P3=deconvblind(Nosiy,INITPSF);subplot(2,2,3); imshow(J3);实验六 图像复原实验目的1) 了解图像复原的原理。2) 掌握常用图像复原方法。实验原理1) 了解不同条件下的图像退化成因河处理方法。2) 根据退化的数学模型对退化图像进行处理,恢复原始图像。实验内容:6.1 使用 de
20、convwnr 对图像的无噪模糊图像进行复原重建,观察结果,并将不同 PSF 产生的复原效果进行比较。实验结果:原始图像 无噪声模糊图像 使用真实 PSF 复原 使用较“长”的 PFS 复原 使用较“陡峭”的 PFS 复原6.2 对有噪声的模糊图像进行重建。实验结果:原始图像 有噪声的模糊图像 较小的 PSF 较大的 PSF6.3 对无噪声的模糊图像使用最小二乘方滤波方法进行复原重建。实验结果:原始图像 无噪声模糊图像 小 NP 大 NP小范围搜索 大范围搜索实验七 图像的边缘检测实验目的1) 熟悉 MATALB 图像工具箱的使用方法2) 熟悉图像边缘的检测方法3) 理解边缘检测在图像分割中的
21、作用实验原理采用查差分、梯度、拉普拉斯算子及各种高通滤波处理方法可以对图像边缘进行检测。实验内容:7.1 根据 4 连通或 8 连通准则在二值图像中判断目标BW=1 1 1 0 0 0 0 0;1 1 1 0 1 1 0 0;1 1 1 0 1 1 0 0;1 1 1 0 0 0 1 0;1 1 1 0 0 0 1 0;1 1 1 0 0 0 1 0;1 1 1 0 0 1 1 0;1 1 1 0 0 0 0 0; %给定的二值图像矩阵L4=bwlabel(BW,4) %根据 4 连通准则判定目标L8=bwlabel(BW,8) %根据 8 连通准则判定目标实验结果:L4 =1 1 1 0 0
22、 0 0 01 1 1 0 2 2 0 01 1 1 0 2 2 0 01 1 1 0 0 0 3 01 1 1 0 0 0 3 01 1 1 0 0 0 3 01 1 1 0 0 3 3 01 1 1 0 0 0 0 0L8 =1 1 1 0 0 0 0 01 1 1 0 2 2 0 01 1 1 0 2 2 0 01 1 1 0 0 0 2 01 1 1 0 0 0 2 01 1 1 0 0 0 2 01 1 1 0 0 2 2 01 1 1 0 0 0 0 07.2 给出利用值分割图像 tire.tif 的实例I=imread(tire.tif);subplot(131);imshow(
23、I);subplot(132);imhist(I);T=110;S=size(I);maxI,maxP=max(max(I(:,:); %maxI 为图像 I 的最大灰度值, maxP 为其位置minI,minP=min(min(I(:,:); % maxI 为图像 I 的最大灰度值,maxP 为其位置 for i=1:S(1)for j=1:S(2)if I(i,j)=T I(i,j)=255;else I(i,j)=0;endendendsubplot(133);imshow(I);实验结果:原始图像 直方图合适的阈值分割(T110)7.3 给出利用梯度算子对图像 tire.tif 进行边
24、缘检测的实例I=imread(tire.tif);imshow(I);BW1=edge(I,roberts); %进行 Roberts 算子边缘检测,门限值采用 MATLAB 默认值BW2=edge(I,prewitt); %进行 Prewitt 算子边缘检测,门限值采用 MATLAB 默认值BW3=edge(I,sobel); %进行 Sobel 算子边缘检测,门限值采用 MATLAB 默认值BW4=edge(I,log); %进行 LoG 算子边缘检测,门限值采用 MATLAB 默认值BW5=edge(I,canny); %进行 canny 算子边缘检测,门限值采用 MATLAB 默认值f
25、igure,imshow(BW1,);figure,imshow(BW2,);figure,imshow(BW3,);figure,imshow(BW4,);figure,imshow(BW5,);实验结果:原图像 roberts 算子检测 prewitt 算子检测sobel 算子检测 log 算子检测 canny 算子检测7.4 利用 bwtraceboundary 函数对图像 blobs.png 进行边缘跟踪BW=imread(blobs.png);imshow(BW,);s=size(BW);for row=2:55:s(1)for col=1:s(2)if BW(row,col),br
26、eak;endendcontour=bwtraceboundary(BW,row,col, W,8,50,counterclockwise);if(isempty(contour) hold on;plot(contour(:,2),contour(:,1), g ,LineWidth,2);hold on;plot(col,row,gx, LineWidth ,2);elsehold on;plot(col,row, rx ,LineWidth,2);end实验结果:实验八 彩色空间的表示和转换实验目的1) 了解颜色空间的基本概念及转换原理2) 能利用 MATLAB 工具箱和有关公式,在 RGB、YIQ、HSV 等颜色空间中读取、显示彩色图像实验原理1) 利用 MATLAB 图像工具箱读、写和显示图像文件2) 颜色的基本概念实验内容:clear all;RGB1 = imread(football.jpg);RGB2 = imadjust(RGB1,.2 .3 0; .6 .7 1,);subplot(1,2,1);imshow(RGB1),xlabel(原始彩色图像);subplot(1,2,2), imshow(RGB2);xlabel(增强后的图像);