图像处理实验报告

实验一 MATLAB数字图像处理初步

一、实验目的与要求

1.熟悉及掌握在MATLAB 中能够处理哪些格式图像。

2.熟练掌握在MATLAB 中如何读取图像。

3.掌握如何利用MATLAB 来获取图像的大小、颜色、高度、

宽度等等相关信息。

4.掌握如何在MATLAB 中按照指定要求存储一幅图像的方法。

5. 图像间如何转化。

二、实验原理及要求

一幅图像可以被定义为一个二维函数f(x,y),其中x 和y 是空 间(平面) 坐标,f 在任何坐标处(x,y)处的振幅称为图像在该点的 亮度。灰度是用来表示黑白图像亮度的一个术语,而彩色图像是 由单个二维图像组合形成的。例如,在RGB 彩色系统中,一幅彩 色图像是由三幅独立的分量图像(红、绿、蓝) 组成的。因此,许 多为黑白图像处理开发的技术适用于彩色图像处理,方法是分别 处理三副独立的分量图像即可。

图像关于x 和y 坐标以及振幅连续。要将这样的一幅图像转

化为数字形式,就要求数字化坐标和振幅。将坐标值数字化成为 取样;将振幅数字化成为量化。采样和量化的过程如图1所示。 因此,当f 的x 、y 分量和振幅都是有限且离散的量时,称该图像 为数字图像。

作为MATLAB 基本数据类型的数值数组本身十分适于表达图

像,矩阵的元素和图像的像素之间有着十分自然的对应关系。

图1 图像的采样和量化

根据图像数据矩阵解释方法的不同,MATLAB 把其处理为4类: 亮度图像(Intensity images) 二值图像(Binary images) 索引图像(Indexed images) RGB 图像(RGB images) (1) 亮度图像

一幅亮度图像是一个数据矩阵,其归一化的取值表示亮度。

若亮度图像的像素都是uint8类或uint16类,则它们的整数值范 围分别是[0,255]和[0,65536]。若图像是double 类,则像素取 值就是浮点数。规定双精度型归一化亮度图像的取值范围是[0,1]

(2) 二值图像

一幅二值图像是一个取值只有0和1的逻辑数组。而一幅取 值只包含0和1的uint8类数组,在MATLAB 中并不认为是二值图 像。使用logical 函数可以把数值数组转化为二值数组或逻辑数

B=logical(A)

I=imresize(J,0.5);

figure,imshow(I) imfinfo 'P1.tif' ;

imwrite(I,'P1Jpg.jpg' , 'quality' ,50); imwrite(I,'P1Bmp.bmp' ); figure, imshow('P1Bmp.bmp' ); I_g=rgb2gray(I); gg=im2bw(I_g);

)灰度变化

'P2.jpg' );

'P2.jpg' );

4

灰度图像

8位图

)直方图变化

'P2.jpg' ); for i=1:m for j=1:n

B(i,j)=y(A(i,j)+1); end end

A=uint8(A); B=uint8(B);

subplot(1,2,1) ;imshow(A) i=1:m ;title(' 原图像' )

j=1:n

subplot(1,2,2) ;imhist(A) ;title(' 原图像的直方图' )

k=1:256 j=1:k

k=1:256

figure,imshow(M);

figure,imshow(N);

使用Prewitt 算子进行内容(1)中的全部步骤。

(3)使用Sobel 算子的图像分割实验

使用Sobel 算子进行内容(1)中的全部步骤。

(4)使用LoG (拉普拉斯-高斯) 算子的图像分割实验

使用LoG (拉普拉斯-高斯) 算子进行内容(1)中的全部步骤。提

示1:处理后可以直接显示处理结果,无须另外计算梯度的模。提示2:注意调节噪声的强度以及LoG (拉普拉斯-高斯) 算子的参数,观

察处理结果。 三、实验程序及结果

f=imread('P4.png' );

f=rgb2gray(f)

[gv,t1]=edge(f,'sobel' , 'vertical' );

imshow(gv)

[gb,t2]=edge(f,'sobel' , 'horizontal' );

figure,imshow(gb)

w45=[-2 -1 0;-1 0 1;0 1 2];

g45=imfilter(double(f),w45,'replicate' );

T=0.3*max(abs(g45(:)));

g45=g45>=T;

figure,imshow(g45);

原图 原图的频谱

2)小波变换

oimg=imread('P5.jpg' );

[cA,cH,cV,cD]=dwt2(oimg,'db1' );

X=size(oimg,1);

cod_cA=wcodemat(cA,X);

cod_cH=wcodemat(cH,X);

cod_cV=wcodemat(cV,X);

cod_cD=wcodemat(cD,X);

new_img=[cod_cA,cod_cH;cod_cV,cod_cD];

figure,imshow(oimg,[]);

figure,imshow(new_img,[]);

new_img2=idwt2(cA,cH,cV,cD,'db1' ); diff=double(oimg)-double(new_img2); figure,subplot(1,3,1);

imshow(oimg,[]); subplot(1,3,2);

imshow(new_img2,[]); subplot(1,3,3);

imshow(diff,[]);


© 2024 实用范文网 | 联系我们: webmaster# 6400.net.cn