《2023年数字图像处理上机报告.docx》由会员分享,可在线阅读,更多相关《2023年数字图像处理上机报告.docx(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2023年数字图像处理上机报告 练习一 常用MATLAB图像处理命令 一、练习目的 1、熟悉并掌握MATLAB工具的使用; 2、实现图像的读取、显示、代数运算和简单变换。 二、练习环境 Windows操作系统 Matlab 6.5或以上应用软件 三、练习内容 1、图像文件的读写 (1)imread函数用来实现图像文件的读取。 输入以下程序: A=imread(文件名.扩展名);%用imread函数来读入图像 注:设置路径 imshow(A);%用imshow函数来显示图像 得到的结果如图: (2)imfinfo函数用来查询图像文件信息。 输入以下程序: info=imfinfo(文件名.扩展名
2、);% 用imfinfo函数查询图像文件信息 得到: info = Filename: 文件名.扩展名 (4)imshow函数用来显示图像。 刚才介绍imread函数时已使用此函数。 (5)colorbar函数将颜色条添加到坐标轴对象中。 输入以下程序: RGB=imread(*);%图像读入 I=rgb2gray(RGB);%把RGB图像转换成灰度图像 imshow(I),colorbar(vert)% 将颜色条添加到坐标轴对象中 得到如图: 2、图像处理的基本操作 一、图像代数运算 (1)imadd函数实现两幅图像的相加或者给一幅图像加上一个常数。 给图像每个像素都增加亮度的程序如下: I
3、=imread(*); J=imadd(I,100);%给图像增加亮度 subplot(1,2,1),imshow(I) %填充 subplot(1,2,2),imshow(J) 结果如图5。 (2)imsubtract函数实现从一幅图像中减去一个常数。 输入以下程序实现从一幅图像中减去一个常数: (3)immultiply实现两幅图像的相乘或者一幅图像的亮度缩放(图像乘以小于1或大于1的参数,比较效果)。 输入以下程序: (4)imdivide函数实现两幅图像的除法或一幅图像的亮度缩放。 输入以下程序: 二、图像的空间域操作 (1)imrotate函数实现图像的旋转。 输入以下程序: I=i
4、mread(*); J=imrotate(I,45);%对图像进行旋转 subplot(1,2,1),imshow(I); subplot(1,2,2),imshow(J); 得到图: 练习二 数字图像处理的基本操作 一、练习目的 1、练习使用MATLAB工具进行数字图像处理; 2、实现图像的边缘提取、滤波、直方图修正等操作。 二、练习环境 Windows操作系统 Matlab 6.5或以上应用软件 三、练习内容 (1)imresize函数实现图像的缩放。 输入以下程序: J=imread(文件名.扩展名); X1=imresize(J,2);%对图像进行缩放 figure,imshow(J)
5、 结果如图 (2)imcrop函数实现图像的剪切。 输入以下程序: I=imread(*); I2=imcrop(I);%对图像进行剪切 subplot(填充),imshow(填充); subplot(填充),imshow(填充); 如图: 图像变换 (1)fft2函数和ifft2函数分别是计算二维的FFT和反变换。 输入以下程序: f=zeros(100,100); f(20:70,40:60)=1; imshow(f); F=fft2(f);% 计算二维的FFT F2=log(abs(F);%对幅值取对数 imshow(F2),colorbar (2)dct2函数采用基于FFT的算法,用于
6、实现较大输入矩阵的离散余弦变换。与之对应,idct2函数实现图像的二维逆离散余弦变换 输入以下程序: RGB=imread(*); I=rgb2gray(RGB); J=dct2(I);% 对I进行离散余弦变换 imshow(log(abs(J),colorbar J(abs(J) (3)edge函数用于提取图像的边缘。 输入以下程序: RGB=imread(drum.bmp); I=rgb2gray(RGB); BW=edge(I);% 提取图像的边缘 imshow(I),figure,imshow(BW); 得到图 图像增强、分割和编码 (1)imhist函数产生图像的直方图。 A=imr
7、ead(drum.bmp);%读入图像 B=rgb2gray(A);%把RGB图像转化成灰度图像 imshow(B);%显示灰度图像 imhist(B)%显示灰度图像的直方图 得到图 (2)histeq函数用于对图像的直方图均衡化。 接上面程序: C=histeq(B);%对图像B进行均衡化 imshow(C);%显示图像 imhist(C);%得到均衡化后的灰度直方图 得到如图 filter2函数实现均值滤波。 输入以下程序: a=imread(noise.drum.jpg); I=rgb2gray(a); imshow(I); K1=filter2(fspecial(average,3),
8、I)/255; % 33的均值滤波 K2=补充; % 55的均值滤波 K3=补充; % 77的均值滤波 figure,imshow(K1); figure,imshow(K2); figure,imshow(K3); 得到图 (5)medfilt2函数实现中值滤波。 输入以下程序: 自查函数如何使用,并编程: 结果如图: 练习三 图像采样及图像类型转换 一、练习目的 1、熟悉并掌握MATLAB图像处理工具箱的使用; 2、试对自选图像分别进行4和16倍剪采样,查看其剪采样效果 3、将所给图,转换成256级灰度图像,8级灰度图像和2值图像 二、练习环境 MATLAB 6.5或以上版本、WIN XP
9、或以上计算机 三、练习内容 使用MATLAB,对图像进行减采样。 a = imread(*.JPG); b = rgb2gray(a); wid,hei=size(b); %4倍减抽样 quartimg = zeros(wid/2+1,hei/2+1); i1 = 1; j1 = 1; for i=1:2:wid for j=1:2:hei quartimg(i1,j1) = b(i,j); j1 = j1 + 1; end i1 = i1 + 1; j1 = 1; end figure imshow(uint8(quartimg) 练习结果如图 %16倍减抽样 编程并运行显示图像结果: 图像
10、类型 1、练习内容 试将自选图,转换成256级灰度图像,8级灰度图像和2值图像 2、练习方法及程序 使用MATLAB,进行图像类型变换。 a = imread(*.jpg); b = rgb2gray(a); figure imshow(b) wid,hei=size(b); img8 = zeros(wid,hei); img2 = zeros(wid,hei); for i=1:wid for j=1:hei img8(i,j) = floor(b(i,j)/32);%得到8级灰度图像 end end figure imshow(uint8(img8),0,7) for i=1:wid f
11、or j=1:hei 补充; end end figure imshow(uint8(img8),0,2) %得到2值图像 练习结果如图 练习四 数字图像的空间域处理 一、练习目的 1、熟悉并掌握MATLAB图像处理工具箱的使用; 2、熟悉图像相加的方法及效果 3、熟悉图像灰度扩展的方法及效果 4、熟悉图像缩放、旋转的方法及效果 二、练习环境 MATLAB 6.5或以上版本、WIN XP或以上计算机 三、练习内容 Part 1 (1)选择一幅图像*.jpg,设置输入输出变换的灰度级范围,a=0.3, b=0.6, c=0.1, d=0.9; (2)设置非线性扩展函数的参数c=2; (3)采用灰
12、度倒置变换函数s=255-r进行图像变换; (4)设置二值化图像的阈值,分别为level=0.4,level=0.7参考程序如下: I=imread(*.jpg); figure; subplot(1,3,1); imshow(I); title(原图); J=imadjust(I,0.3;0.6,0.1;0.9); %设置灰度变换的范围 subplot(1,3,2); imshow(J); title(线性扩展); I1=double(I); %将图像转换为double类型 I2=I1/255; %归一化此图像 C=2; K=C*log(1+I2); %求图像的对数变换 subplot(1,
13、3,3); imshow(K); title(非线性扩展); M=255-I; %将此图像取反 figure; subplot(1,3,1); imshow(M); title(灰度倒置); N1=im2bw(I,0.4); %将此图像二值化,阈值为0.4 N2=im2bw(I,0.7); %将此图像二值化,阈值为0.7 subplot(1,3,2); imshow(N1); title(二值化阈值0.4); subplot(1,3,3); imshow(N2); title(二值化阈值0.7); 练习结果与分析 (1) 练习结果如图3.7所示。 Part 2 读取一幅图片,如*.jpg,设置
14、图像旋转的角度分别为450和900,采用图形旋转函数imrotate对图像进行旋转。程序如下,结果如图3.10。 I=imread(i_lena.jpg); J=imrotate(I,45); %图像进行逆时针旋转,默认采用最近邻法进行插值处理 K=imrotate(I,90); %默认旋转出界的部分不被截出 subplot(1,3,1); imshow(I); subplot(1,3,2); imshow(J); subplot(1,3,3); imshow(K); 练习结果与分析 (1)练习结果如图3.10所示。 练习五 数字图像的频域处理 一、练习目的 1、熟悉并掌握MATLAB工具的使
15、用; 2、实现图像离散傅里叶变换并观察效果 3、实现图像离散余弦变换并观察效果 二、练习环境 Windows操作系统 Matlab 6.5或以上应用软件 三、练习内容 Part 1 选取一幅图像,进行离散傅里叶变换,再对其分别进行X轴与Y轴上的平移,得其离散傅里叶变换,观察三幅结果图。 I=imread(1.bmp); figure(1) imshow(real(I); I=I(:,:,3); fftI=fft2(I); sfftI=fftshift(fftI); %求离散傅里叶频谱 %对原始图像进行二维傅里叶变换,并将其坐标原点移到频谱图中央位置 RRfdp1=real(sfftI); II
16、fdp1=imag(sfftI); a=sqrt(RRfdp1.2+IIfdp1.2); a=(a-min(min(a)/(max(max(a)-min(min(a)*225; figure(2) imshow(real(a); 练习结果与分析 Part 2 选取一幅图像,进行离散傅里叶变换,再对其进行一定角度的旋转,进行离散傅里叶变换。 %构造原始图像 I = zeros(256,256); I(88:168,124:132) = 1; %图像范围是256*256,前一值是纵向比,后一值是横向比 imshow(I) %求原始图像的傅里叶频谱 J = fft2(I); F = abs(J);
17、J1 = fftshift(F);figure imshow(J1,5 50) %对原始图像进行旋转 J = imrotate(I,90,bilinear,crop); figure imshow(J) %求旋转后图像的傅里叶频谱 J1 = fft2(J); F = abs(J1); J2 = fftshift(F);figure imshow(J2,5 50) 练习结果与分析 1) 练习结果如图4.4所示. Part 3 选取一幅图像,进行离散余弦变换,并对其进行离散余弦反变换,观察其结果。 %对*.jpg文件计算二维DCT变换 RGB = imread(*.jpg ); figure(1) imshow(RGB) I = rgb2gray(RGB); %真彩色图像转换成灰度图像 J = dct2(I); %计算二维DCT变换 figure(2) imshow(log(abs(J),) %图像大部分能量集中在上左角处 figure(3); J(abs(J) 数字图像处理上机报告 数字图像处理上机作业 数字图像处理上机实验(02091008) 数字图像处理 数字图像处理 数字图像处理学习报告 数字图像处理实验报告 数字图像处理实验报告 数字图像处理实验报告 数字图像处理课设报告
限制150内