您好,欢迎来到尔游网。
搜索
您的当前位置:首页实验三

实验三

来源:尔游网
 -

实验三 图像处理MATLAB 实验

(一) 实验目的和要求

1. 熟悉MATLAB中数字图像处理工具箱(Image Processing Toolbox)的基本使用方法和常用函数; 2. 熟练图像的矩阵表示方法;

3. 掌握图像处理的基本算法及函数调用,如直方图、二值化、图像分割、图像增强、图像变换等等。 4. 通过MATLAB在图像处理中的应用,体会MATLAB矩阵运算的技巧。

(二) 实验设备及材料

计算机,MATLAB2010

(三) 实验内容

1. 对任意灰度图像(最好是MATLAB 自带图像)进行以下操作:

a. 输入一幅灰度图像;

b. 调用im2bw,输出其二值化图像; c. 调用imhist函数,输出其直方图;

d. 其上输入输出放在一个figure中,并加title。以脚本文件的形式保存。

2. 自己编写二值化函数、直方图函数,以函数文件的形式保存。通过调

用自己编写的函数验证其有效性。

3. 对任意灰度图像加高斯噪声,利用中值滤波和平均滤波对其进行平

滑,观察平滑效果,将原图像、噪声图像、滤波后图像显示在一个figure中。

4. 通过调用edge函数对任意图像进行边缘提取,使用3种以上的算子

(如sobel\\prewitt等),比较每种算子分割效果,在一个figure中显示。

5、用MATLAB实现对图像的JPEG压缩编码。(此题不做要求,感兴趣的同学可以尝试编写)

解:1、如下所示: I=imread(''); subplot(2,2,1); imshow(I)

title(' 源图像'); bw=im2bw(I,; subplot(2,2,2); imshow(bw)

title('二值化图像');

11

-

subplot(2,2,3) imhist(I)

title(' 直方图');

在命令窗键入m文件名:shiyan3cell 结果如下所示:

2、直方图函数文件如下: %文件名为

function y=zft(I)

x=double(I);

Error in zft1 (line 8) h(f)=h(f)+1;

调用显示程序如下:

(1)当读入的图像为RGB彩色图像时要转成灰度图像再求其直方图 I=imread(''); x=rgb2gray(I); s=zft1(x);

subplot(2,2,1); imshow(I)

title(' 源图像'); subplot(2,2,2); imshow(x)

title(' 灰度图像'); subplot(2,2,3); bar(s)

title(' 直方图') y=imhist(x); subplot(2,2,4); bar(y)

title(' matlab自带的直方图函数imhist的图'); 结果如下:

22

-

(2)当读入的图像自身就为灰度图像时直接求其直方图 I=imread(''); s=zft1(I);

subplot(2,2,1); imshow(I)

title(' 源图像'); subplot(2,2,2); bar(s)

title(' 直方图') y=imhist(I); subplot(2,2,3); bar(y)

title(' matlab自带的直方图函数imhist的图'); 运行结果如下:

33

-

二值化函数文件如下: %function函数名为

function k=erzhi(I) I=double(I); else IK(p,q)=0; end end end

k=uint8(IK);

当为赋值逻辑1时,函数文件如下: function k=erzhi(I) [M,N]=size(I); IK=I;

for p=1:M; for q=1:N;

if I(p,q)>=90

logical(IK(p,q))= 1; else

44

-

IK(p,q)=0; end end end

k=uint8(IK);

调用显示程序如下:

(1)当读入的为RGB彩色图像时,要用rgb2gray函数将其转成灰度图像 I=imread(''); X=rgb2gray(I); t=erzhi (X); subplot(1,3,1); imshow(I)

title(' 源图像'); subplot(1,3,2); imshow(X)

title('灰度图像'); subplot(1,3,3); imshow(t)

title(' 二值化图像'); 显示图像如下所示:

55

-

(2)当读入的图像本身就是灰度图像时直接二值化即可,如: I=imread('') ; t=erzhi(I); subplot(1,2,1); imshow(I)

title(' 源图像'); subplot(1,2,2); imshow(t)

title(' 二值化图像'); 运行结果如下所示:

66

-

3、程序如下所示:

M=imread('') ; subplot(2,2,1);

imshow(M) title('原始图像');

P1=imnoise(M,'gaussian',0,; subplot(2,2,2);

imshow(P1) title('加高斯噪声图像');

K=fspecial('average',[5,5]); //预定义滤波函数 p2=filter2(K,P1)/255; subplot(2,2,3); imshow(p2)

title('平均滤波后图像');

P3=medfilt2(P1); subplot(2,2,4); 77

-

imshow(P3) title('中值滤波图像'); 图像如下:

如图可见,对于高斯噪声,均值滤波效果比中值滤波效果好。原因: (1)高斯噪声是幅值近似正态分布,但分布在每点像素上。

(2)因为图像中的每点都是污染点,所以中值滤波选不到合适的干净点。

(3)因为正态分布的均值为0,所以均值滤波可以消除噪声。(实际上只能减弱,不能消除。)

4、用Sobel、roberts、log、 prewitt四种边缘提取函数 I=imread('');

BW1=edge(I, 'roberts'); BW2=edge(I,'sobel'); BW3=edge(I,'log'); BW4=edge(I, 'prewitt');

subplot(2,3,1);

imshow(I) title('源图像')

subplot(2,3,2);

imshow(BW1)

title('用Roberts算子') subplot(2,3,3); imshow(BW2)

title('用Sobel算子 ') subplot(2,3,4); imshow(BW3)

title('用拉普拉斯高斯算子') subplot(2,3,5); imshow(BW4)

title(' 用prewitt 算子')

88

-

实验结果如下所示:

99

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- axer.cn 版权所有 湘ICP备2023022495号-12

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务