数字图像处理实验一二

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一数字图像的基本处理

预习要求:

1、熟悉MATLAB的使用环境;

2、熟悉数字图像的矩阵表示形式;

3、掌握二维离散傅里叶变换。

一、实验目的

掌握MATLAB中数字图像的存储、读取和显示

掌握MATLAB中的基本数据、图像类型,以及类型之间的相互转换

掌握二维离散傅里叶变换的常用函数

二、实验原理

1、MATLAB中数字图像的存储、读取和显示

读取图像通过imread来执行,语法为:

f=imread(‘filename’);

其中,filename参数表示输入的文件名,包括路径和文件名,函数返回值f是一个图像数组。MATLAB支持的图像类型有TIFF、JPEG、GIF、BMP、PNG和XWD等。

保存图像使用函数imwrite来执行,语法有以下几种:

imwrite(f, ’filename’); %默认方式,文件格式由后缀名来指定

imwrite(f, ’filename’, ’tif’); %由第三个参数指定保存文件的格式

imwrite(f, ‘filename.jpg’ , ‘quality’, q); %保存JPEG文件,指定JPEG的压缩质量显示图像使用imshow来执行,基本语法为:

imshow(f, G); %f是图像数组,G是该图像显示的灰度级数,默认灰度级数256

imshow(f, [low high]); %所有大于high的显示为白色,小于low的显示为黑色

imshow(f, [ ]); %low设置为f的最小值,high设置为f的最大值当用imshow显示另一幅图像g时,MATLAB会在屏幕上用新图替换旧图像,为保持第一幅图像同事显示第二幅图像,可以使用figure函数:figure, imshow( g )

2、MATLAB中的数据类型级相互转换

MATLAB中常用的数据类型有:double, uint8, uint16, uint32, int8, int16, int32, single, char, logical等。支持的图像类型有亮度图像、二值图像、索引图像和RGB图像。

表1 常用的图像格式

格式名称描述可识别的扩展符

TIFF 加标识的图像文件格式.tif, .tiff

JPEG 联合图像专家组.jpg, .jpeg

GIF 图形交换格式.gif

BMP Windows位图.bmp

PNG 可移植的网络图形.png

常用的图像类型转换函数:

g=im2uint8(f); %图像转换到uint8类型

g=im2gray(f, [ fmin, fmax ]); %图像转换到double类型,值在[0,1]区间,规定fmin,fmax 是为了在转换时将f中小于fmin的值在g中转换为0,大于fmax的值转换为1。图像的

信息可以通过whos f 显示。

3、二维离散傅里叶变换

MATLAB中,傅里叶变换采用快速傅里叶变换函数来实现,基本语法:

F=fft2( f );

其中,f是输入图像,F是傅里叶变换结果,默认f与F的尺寸相同。

傅里叶的逆变换函数为

ifft2( F );

图像处理中,逆变换一般只取实部,f=real( ifft2( F ) );

傅里叶频谱可以用以下函数来计算:

S=abs(F);

由于傅里叶变换的周期性问题,在频域内的一个周期内只能观察到紧邻的4个1/4周期的频谱,不能观察到一个完整的周期。为了方便显示,可将傅里叶变换后的原点移动到频谱中心,相应的函数为:FC=fftshift( F ); 逆操作为:F=ifftshift( FC );

对数变换函数常用来扩展低灰度范围,压缩高灰度范围,这样可以使低灰度值的图像细节更清楚。对数变换函数采用:g( x, y )=log(f( x, y)+1);

三、实验内容

1、练习图像的存储与显示,以及图像的压缩存储(参考程序1);

2、补填程序2的空白处,完成程序的编译,输出结果。

四、实验方法及程序

程序1:

%***保存图像***

f=imread('D:/Matlab/work/kid.jpg');

imshow(f);

%***以质量参数为25%保存图像***

imwrite(f,'kid.jpg','quality',25);

g25=imread('kid.jpg');

figure,imshow(g25,[ ]);

%***显示压缩文件的相关信息***

imfinfo kid.jpg

%***由imfinfo产生的信息附加到形式为K域的结构变量中***

K=imfinfo('kid.jpg');

image_bytes=K.Width*K.Height*K.BitDepth/8;%压缩前图像文件的大小

compresser_bytes=K.FileSize; %压缩后图像问价的大小

compress_ratio=image_bytes/compressed_bytes %压缩率

程序2:对一亮块图像进行傅里叶变换,中心化其频谱,并进行对数变换。

%产生亮块图像f(m,n)

clear all

close all;

col=128;

f=zeros(col);

for i=29:98,

for j=57:70

f(i,j)=255;

end

end

figure(1);

subplot(1,3,1);

imagesc(f,[0 255]);

axis image;

colormap(gray);

xlabel('(a)原图像');

%对原图像进行傅里叶变换

F1=?????;%对f 图像进行傅里叶变换,并使原点移到频谱中心figure(1);

subplot(1,3,2);

imshow(abs(F1),[]);

xlabel('(b)图像的傅里叶谱');

%对F1进行对数变换

F2=?????;

figure(1);

subplot(1,3,3);

imshow(F2,[]);

xlabel('(c)傅里叶谱的对数变换');

五、实验结果与分析

程序的运行及测试结果(粘贴截图);

实验总结及心得。

相关文档
最新文档