matlab基本图形处理实验,MATLAB数字图像处理实验讲义(指导书)

matlab基本图形处理实验,MATLAB数字图像处理实验讲义(指导书)_第1张图片

下面是内容预览(图片在附件中下载):

数字图像处理课内实验指导书

李文杰施文娟编

盐城师范学院新能源与电子工程学院

二○一七年二月说明:1讲义中给出的部分代码供同学们参考,鼓励同学自己编写运行效率更高或者可读性更好的代码,将作为成绩评定的重要依据。

2实验中的仿真图是仿真算法的主要结果,由于是在实验室机房中做实验,仿真后的图文件,请每位同学以fig文件和矢量图文件emf两种格式保存于自己的移动存储设备中(注意每个文件名称,例如可采用:实验1_图1.fig),实验结束后,仿真图文件的电子版也需要上交。

3每次实验结束后,在一周内请及时交实验报告,实验报告上交是否及时也将作为实验报告成绩的依据。

4  每个实验仿真图请自行打印后粘贴于实验报告的相关位置。5每个实验的思考题请按照要求认真完成。

实验一 计算图像的基本统计指标一、实验目的

1熟悉MATLAB图像处理工具箱的使用方法。

2了解计算图像的统计指标的方法及其在图像处理中的意义。

二.实验主要仪器设备

1     微型计算机:Intel Pentium及更高。

2     MATLAB(安装了图像处理工具箱,即Image Processing Toolbox)

3     典型的灰度、彩色图像文件。

三、实验原理

1     可以将一幅图像看成一个二维矩阵,因此用MATLAB处理图像是十分方便的。

2     利用MATLAB图像处理工具箱读、写和显示图像文件。

①采用imread函数读出图像。

②采用imwrite函数写入图像。

③采用imshow函数显示图像。

3   计算图像的有关统计参数。

① 图像的大小。图像的大小是图像的重要属性,数值是宽度(M,单位为:像素)与高度(N,单位为:像素)的乘积。

② 图像的灰度平均值。该指标指图像法f所以灰度值的算术平均值,反映了一幅图像的平均亮度。③协方差矩阵(variance-covariance matrix)

设 f(x,y)和g(x,y)是大小为M×N的两幅图像,则两幅图像之间的协方差矩阵 为

协方差矩阵是两幅图像之间的相关程度的一种度量。协方差矩阵为零时表明两幅图像之间相互独立,反之表示两图像之间相互依赖越大,相关程度越强。

若f=g,则单幅图像的协方差即为该图像的方差(自协方差)。

④图像的灰度标准差(standard deviation)。由方差按数据的平方来计算,与灰度值相差大,难以直观地衡量,所以对方差开平方得到标准差SD,标准差是评价离散的较好指标。

⑤图像的相关系数。协方差可以作为两幅图像相关性的一种度量,但它受两幅图像像素数值的影响。因此,经常将其归一化成相关系数。两个图像f(x,y)和g(x,y)的相关系数  是描述图像相关程度的统计量,反映了两图像相互的线性联系密切程度的统计参数。相关系数在0~1范围内变动,其值越接近1,两个图像见的线性相关越密切;其值越接近0,相关越不密切。

四、实验内容

1     利用MATLAB图像处理工具箱读、写和显示图像文件。

2     计算图像的有关统计参数。

五、实验步骤

参考教材附录B:常用MATLAB图像处理Toolbox  函数完成以下操作。

(1)  利用“读图像文件I/O”函数读入图像。(2)      利用“读图像文件I/O”的iminfo函数了解图像文件的基本信息。利用“像素和统计处理”函数计算读入图像的二维相关系数(corr2函数)、确定像素颜色(impixel函数)、像素的平均值(mean2函数)、计算像素的标准偏移(std2函数)等。

注意:Impixel函数返回指定的图像像素的RGB(红red、绿green、蓝blue)颜色值。在下面的语法中,impixel函数显示输入图像,并等待你用鼠标指定像素:

P =impixel(img);

如果省略输入参数,impixel作用于当前使用的图像。使用鼠标左键单击来选择像素,可以在不同位置单击来选择多个像素。按backspace或delete删除先前选择的像素。按住shift点击鼠标左键,单击鼠标右键或者双击鼠标左键,都可以添加最后一个像素并结束选择显示结果;按回车键可以结束选择并且不添加像素。完成像素的选择后,impixel向输出参数中返回一个代表所选像素RGB值的m×3的矩阵,m为所选像素的个数。如果你没有提供输出参数,impixel将矩阵返回到ans中。

(3)      利用“几何操作”剪切图像、改变图像大小(imresize函数)、旋转图像(imrotate函数)等。

(4)      将经上述不同操作的图像用“读图像文件I/O”函数分别写入到各自的图像文件中。

六、实验报告要求

1   说明利用MATLAB图像处理工具箱读、写和显示图像文件、计算图像的有关统计参数的原理。

2   记录读取和几何变换处理后的图像、图像的统计数据。

3   记录点运算的结果图。

4   回答思考题。

5   总结心得和体会。

七、预习要求

(1)了解MATLAB图像处理工具箱的功能。

(2)了解图像基本指标的含义。

八、思考题

(1)说明图像的统计特征对图像处理的意义。

(2)比较不同图像的统计特征的差别,并分析原因。

实验二  图像变换与二维数字滤波一、实验目的

1      了解离散余弦正弦变换和逆变换的原理。

2      理解离散余弦变换系数的特点。

3      了解离散余弦变换在图像数据压缩中的应用。

二、实验主要仪器设备

1      微型计算机 :Intel Pentium及更高。

2      MATLAB软件。

三、实验原理

1      二维离散余弦变换和离散余弦逆变换的计算公式。

2      MATLAB中DCT变换的实现函数是dct2();DCT逆变换的实现函数是idct2()。

四、实验内容

在MATLAB环境中,进行图像的离散余弦变换和离散余弦逆变换,初步理解DCT变换在压缩编码中的应用。减少DCT系数,观察重建信号和误差信号。

五、实验步骤

1      打开MATLAB。

2      新建DCTtranslation.m文件

3      选取rose.jpg文件,进行离散余弦变换,并对其进行离散余弦反变换,观察其结果。

4    选择不同的阈值,观察重构图像。

5    计算重构图像的MSE。

参考程序:

%DCTtranslation.m

I = imread('rose.jpg');

clearall;

closeall;

G=imread('rose.jpg');

figure(1);imshow(G);

%G=rgb2gray(F);

dctG=dct2(G);

figure(2);imshow(log(abs(dctG)),[]);

T1=5;T2=50;

dctG(abs(dctG)

idctF1=idct2(dctG);

figure(3);imshow(idctF1,[0 255]);

dctG(abs(dctG)

idctF2=idct2(dctG);

figure(4);imshow(idctF2,[0 255]);

[M N]=size(G);

MSE1=sum(sum((idctF1-double(G)).^2))/(M*N)

MSE2=sum(sum((idctF2-double(G)).^2))/(M*N)    上述程序同样可以实现DCT的正、反变换。

六、实验报告要求

1      说明离散余弦正、反变换的原理。

2      分析重建图像、误差图像和DCT系数的关系。

七、预习要求

了解MATLAB环境和它的使用方法。

八、思考题

对重建图像进行主观评价和客观评价,分析重建图像的质量与DCT重建系数的关系。

实验三  图像编码与压缩一、实验目的

1     了解图像的压缩编码原理;

2     掌握常用图像压缩算法。

二、实验主要仪器设备

1     微型计算机:Intel Pentium及更高。

2     MATLAB软件(含图像处理工具箱)。

三、实验原理

1     去除数据冗余度可以有效地压缩数据。

2     图像编码压缩的主要技术指标。(1)压缩化;(2)客观评价SNR;(3)主观评价。

四、实验内容

1     利用变换编码压缩图像信息。

2     计算压缩算法的性能。

五、实验步骤

1     自己选择测试图像。

2     根据设计要求选择合适的图像编码与压缩方法。

3     设计编码与压缩算法。

4     显示原始图像与压缩重构图像。

例1基于FFT的图像压缩技术

考虑一幅512*512像素,灰度级为256的标准图像lena,用FFT实现图像数据的压缩,首先将图像分割成(512/8)^2个8*8子图像,对每个子图像进行FFT,这样每个子图像有64个傅里叶变换系数。按照每个系数的方差来排序,由于图像是实值的,其64个复系数只有一半是有差别的。舍去小的变换系数,就可以实现数据压缩。此处32个系数,实现2:1的数据压缩,然后进行逆变换,其matlab程序如下:

%设置压缩比cr = 0.5;                   % cr = 0.5为2:1压缩,cr = 0.125 为8:1压缩

%读入并显示原始图像

I1 = imread(‘lena.bmp’);

I1 = double(I1)/255;       %图像为256级灰度图像,对图像进行归一化操作

figure(1);              %显示原始图像

imshow(I1);

%对图像进行FFT

fftcoe = blkproc(I1,[8 8],’fft2(x)’);      %将图像分割成8*8的子图像进行FFT

coevar = im2col(fftcoe,[8 8],’distinct’);  %将变换系数矩阵重新排列

coe = coevar;

[y,ind] = sort(coevar);

[m,n] = size(coevar);

snum = 64-64*cr;                 %根据压缩比确定要变0的系数个数

%舍去不重要的系数

for i = 1:n

coe(ind(1:snum),i) = 0;             %将最小的snum个变换系数清0

end

B2 = col2im(coe,[8  8],[512 512],’distinct’);  %重新排列系数矩阵

%对子图像块进行FFT逆变换获得各个子图像的复原图像,并显示压缩图像

I2 = blkproc(B2,[8  8],’ifft2(x)’);

figure(2)                            %显示压缩后的图像

imshow(I2);

%计算均方根误差erms

e = double(I1) – double(I2)

[m , n] = size(e);

erms = sqrt(sum(e(:).^2)/(m*n));

当cr = 0.5时,上述程序实现的图像压缩比为2:1,均方根系数为erms = 0.0398;

cr=0.125时,实现的图像压缩比为8:1,均方根系数为 erms =0.0474

上述程序中的主要函数功能:

(1)   blkproc 函数,它能够将每个显示块从图像中提取出来,然后将其作为参数传递给任何用户函数,另外,blkproc函数还将用户函数返回的显示块进行组合,从而生成最后输出的图像,语法格式为:          B = blkproc (A,[m  n],fun)

其功能是对图像A的每个不同m*n块应用函数fun进行处理,fun 为运算函数,其形式为y=fun(x),可以是一个包含函数名的字符串,也可以是带表达式的字符串。另外,还可以将用户函数指定为一个嵌入式函数。

(2)im2col函数,它能够将图像块排列成向量,其语法格式为:

B = im2col(A , [m  n],block_type)

功能是将图像A的每一个m*n块转换成一列,重新组合成矩阵B,block_type指定排列的方式,当block_type为disinct时,图像块不重叠,当其为sliding时,图像块滑动。

(3)col2im函数,它用于将向量重新排列成图像块,语法格式为:

B = col2im(A,[n  n],[nm   nn],block_type)

其功能将图像A的每一列排列成m*n的图像块,block_type指定排列的方式,当其为distinct时,图像块不重叠,其为sliding时,图像块滑动,并用这些图像块组合成mm*nn的图像A

例2基于DCT的图像压缩技术

与前面相同的图像,首先将图像分割成(512/8)^2个8*8子图像,对于每个子图像进行DCT,这样每个子图像有64个变换系数,舍去50%小的变换系数,即保留32个系数,进行2:1的压缩,其Matlab程序如下所示:

%设置压缩比

cr = 0.5                      % cr = 0.5为2:1压缩,cr = 0.125 为8:1压缩

%读入并显示原始图像

initialimage =imread('lena_numbers_512.tiff');

initialimage = double(initialimage)/255;

figure(1);

imshow(initialimage);

%对图像进行DCT

t = dctmtx(8);

dctcoe = blkproc(initialimage,[88],'P1*x*P2',t,t');

coevar = im2col(dctcoe,[8 8],'distinct');

coe = coevar;

[y,ind] = sort(coevar);

[m,n] = size(coevar);

%舍去不重要的系数

snum = 64 - 64*cr;

for i = 1 : n

coe(ind(1:snum),i) = 0;

end

b2 = col2im(coe,[8 8],[512 512],'distinct');

%对截取后的变换系数进行DCT逆变换

i2 = blkproc(b2,[8 8],'P1*x*P2', t',t);

%显示压缩图像

figure(2);

imshow(i2);

%计算均方根误差

e = double (initialimage) - double(i2);

[m , n] = size(e);

erms = sqrt(sum(e(:).^2)/(m*n));

六、实验报告要求

1     说明压缩原理与算法。

2     原始图像和压缩图像重构图像。

3     计算压缩性能,说明为什么同一压缩算法对不同的图像压缩效果不同。

4     回答思考题。

5     心得和体会。

七、预习要求

1     了解图像编码压缩的基本原理和算法。

2     掌握MATLAB图像处理工具箱(ImageProcessing ToolBox)中有关图像编码压缩的函数。3     编写相应的程序。

八、思考题

1     DFT与DCT的性能比较。

2     讨论用一算法对不同原始图像压缩性能的影响。

实验四  图像增强一、实验目的

1     熟悉并学会使用MATLAB中图像增强的相关函数。

2     了解图像增强的方法、噪声去除的方法和去噪的效果。

二、实验主要仪器设备

1     微型计算机:Intel Pentium及更高。

2     MATLAB软件(含图像处理工具箱)。

3     典型的灰度、彩色图像文件。

三、实验原理

1     将一幅图像看成是一个二维矩阵,因此用MATLAB进行图像增强是十分方便的。

2     灰度变换可以使图像的动态范围加大,图像的对比度扩展、图像更为清晰,是图像增强的重要手段。

图像的点运算

(1)线性扩展

灰度级变换函数s=T(r)可为

file:///Z:\TEMP\msohtmlclip1\01\clip_image012.gif

(2)非线性扩展

灰度级变换函数s=T(r)可为

s=clog(1+r)

(3)灰度倒置

灰度级变换函数s=T(r)可为

s=255-r

(4)二值化

确定一阈值r1,file:///Z:\TEMP\msohtmlclip1\01\clip_image014.gif。file:///Z:\TEMP\msohtmlclip1\01\clip_image016.gif的灰度值置白,file:///Z:\TEMP\msohtmlclip1\01\clip_image018.gif的灰度值置黑。

3     利用MATLAB图像处理工具箱读函数、显示函数、加噪函数、滤波函数进行图像去噪处理。采取 imread函数读图像、imshow函数显示图像、imnoise函数对图像进行加噪处理、filter2函数对图像进行滤波。4     各种去噪方法:邻域平均、中值滤波。

四、实验内容及步骤

1     % 直接灰度变换

clear all;

clc;

I =imread('cameraman.tif');figure;imshow(I);

I1 =imadjust(I,[0 1],[1 0],1.0);figure;subimage(I1);

%直方图灰度变换

I =imread('cameraman.tif');figure;imshow(I);

figure;imhist(I);

J = imadjust(I,[0.15  0.9], [0 1]);figure;imshow(J);

figure;imhist(J, 64);

2   图像的空域点处理增强(1)选择一幅图像 lena.jpg,设置输入选择一幅图像lena.jpg,设置输入/输出变换的灰度级范围,a=0.3,b=0.6,c=0.1,d=0.9;

(2)设置非线性扩展函数的参数c=2;

(3)采用灰度倒置变换函数s=255-r进行图像变换;

(4)设置二值化图像的阈值,分别为level=0.4,level=0.7。

参考程序如下:

I=imread('lena.bmp');

figure;subplot(1,3,1);

imshow(I);

title('原图');

J=imadjust(I,[0.30.6],[0.1 0.9]);subplot(1,3,2);imshow(J);

title('线性扩展');

I1=double(I);

I2=I1/255;

C=2;

K=C*log(1+I2);

subplot(1,3,3);

imshow(K);

title('非线性扩展');

M=255-I;

figure;

subplot(1,3,1);imshow(M);

title('灰度倒置');

N1=im2bw(I,0.4);

N2=im2bw(I,0.7);

subplot(1,3,2);

imshow(N1);

title('二值化阈值0.4');

subplot(1,3,3);

imshow(N2);

title('二值化阈值0.7');

2     对图像加入噪声(imnoise),选择不同的去噪方法,如邻域平均(filter2)、中值滤波(medfilt2)等方法,对图像进行增强处理。

3     分析各种去噪方法对不同噪声图像处理的结果。

六、实验报告要求

1     说明利用MATLAB图像处理工具箱进行图像的读、显示、加噪、去噪处理的方法。

2     记录原图像、增强图像、加噪图像、去噪处理后的图像。

3     列出上述图像处理的程序。

4     回答思考题。

5     心得和体会。

七、预习要求

1     了解MATLAB图像处理工具箱的功能。

2     了解图像去噪的方法。

八、思考题

1     比较同一种噪声、不同去噪方法处理的效果。

2     比较同一种噪方法、针对不同噪声处理的效果。

3   对数非线性变换能否使图像的低灰度级压缩,高灰度级扩展或者低灰度级扩展,高灰度级压缩?选择不同的阈值,观察阈值对图像二值化的影响。

全部资料下载地址:

95d1098ed7cbcc93a3c84393e0bd5f5e.gif

数字图像处理实验.rar

(466.96 KB, 下载次数: 19)

2017-6-8 15:08 上传

点击文件名下载附件

你可能感兴趣的:(matlab基本图形处理实验)