信息实验报告.docx

上传人:b****8 文档编号:9714060 上传时间:2023-02-06 格式:DOCX 页数:17 大小:473.35KB
下载 相关 举报
信息实验报告.docx_第1页
第1页 / 共17页
信息实验报告.docx_第2页
第2页 / 共17页
信息实验报告.docx_第3页
第3页 / 共17页
信息实验报告.docx_第4页
第4页 / 共17页
信息实验报告.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

信息实验报告.docx

《信息实验报告.docx》由会员分享,可在线阅读,更多相关《信息实验报告.docx(17页珍藏版)》请在冰豆网上搜索。

信息实验报告.docx

信息实验报告

信息处理的数学基础

实验四

 

班级:

信息1201班

姓名:

学号:

成绩:

 

2015年6月12日

实验四

一、实验目的:

本次实验与书中6.1节、6.2节、6.3节、6.4节的内容有关,包括以下的几个部分:

1)膨胀算子,腐蚀算子

2)中值算子

3)开集合算子,闭集合算子

4)ExtremaKiller算子

同时需要掌握MATLAB中subplot语句的功能。

二、实验过程

(1)膨胀(腐蚀)算子

命令格式:

dilation_block(‘输入图像名’,r,‘输出图像名’);

erosion_block(‘输入图像名’,r,‘输出图像名’);

结构元素是方块,参数r说明结构元素是一个中心在原点,边长为(2r+1)的方块。

作用对象是二值图像。

例1:

image=imread('2curve_256.bmp');

imshow(image);

dilation_block('2curve_256.bmp',5,'2_dilation.bmp');

erosion_block('2curve_256.bmp',5,'2_erosion.bmp');

differ('2curve_256.bmp','2_erosion.bmp','original_erosion.bmp');

differ('2_dilation.bmp','2curve_256.bmp','dilation_original.bmp');

figure;

subplot(2,2,1)image1=imread('2_dilation.bmp');

imshow(image1);

subplot(2,2,2)image2=imread('dilation_original.bmp');

imshow(image2);

subplot(2,2,3)image3=imread('2_erosion.bmp');

imshow(image2);

subplot(2,2,4)imshow('dilation_original.bmp');

结果如图1所示。

其中需要解释两个函数:

第一、differ(’输入图像名一’,’输入图像名二’,’’输出图像名’)是表示两个二值图像的差。

第二、subplot语句用来同时显示几个图像。

subplot(2,2,i)(i=1,2,3,4)中的2,2说明图像按2行2类排放,另外i按照

1

2

3

4

的次序排放。

原图像

图1

例2:

dilation_block(‘pentagram.bmp’,i,‘pi.bmp’);

i.=1,2,3,4,5,6,7,8,9,10;

figure;

subplot(3,4,i);

imshow(pi.bmp);

make_movie(‘p’,10);

先用dilation_block产生十幅膨胀图像,然后make_movie用来产生电影和显示图像,它使用的参数必须和bmp图像组的名字保持一致。

结果如图2所示。

图2

膨胀(腐蚀)算子

命令格式

dilation_disk(‘输入图像名’,r,‘输出图像名’)

erosion_disk(‘输入图像名’,r,‘输出图像名’)

结构元素是圆盘,其中r是圆盘的半径,作用对象是二值图像。

结果如图3所示:

例3:

image=imread('jylcq.bmp');

imshow(image);

dilation_disk('jylcq.bmp',5,'jylcq_dilation.bmp');

erosion_disk('jylcq.bmp',5,'jylcq_erosion.bmp');

differ('jylcq.bmp','jylcq_erosion.bmp','original_erosion.bmp');

differ('jylcq_dilation.bmp','jylcq.bmp','dilation_original.bmp');

figure;

subplot(2,2,1)

imshow('jylcq_dilation.bmp');

subplot(2,2,2)

imshow('jylcq_erosion.bmp');

subplot(2,2,3)

imshow('original_erosion.bmp');

subplot(2,2,4)

imshow('dilation_original.bmp');

结果如图4所示。

jylcq.bmp

 

膨胀(腐蚀)算子

命令格式

dilation_block(‘输入图像名’,r,‘输出图像名’);

erosion_block(‘输入图像名’,r,‘输出图像名’);

dilation_disk(‘输入图像名’,r,‘输出图像名’);

erosion_disk(‘输入图像名’,r,‘输出图像名’);

作用对象是灰度图像。

例4

dilation_block('16I8.bmp',3,'16I8_db.bmp');

erosion_block('16I8.bmp',3,'16I9_eb.bmp');

dilation_disk('16I8.bmp',3,'16I9_dc.bmp');

erosion_disk('16I8.bmp',3,'16I9_ec.bmp');通过图4,可以发现图像的质量退化非常严重。

可见,单个的膨胀(腐蚀)算子不是一个好的滤波算子。

16I18.bmp

图4

二、中值算子

1)中值算子

命令格式:

median_block(‘输入图像名’,r,‘输出图像名’);

结构元素是方块,参数r说明结构元素是一个中心在原点,边长为(2r+1)的方块。

作用对象是二值图像。

例5:

image=imread('8I3_256.bmp');

imshow(image)

median_block('8I3_256.bmp',6,'8_median.bmp');

figure;

image2=imread('8_median.bmp');

imshow(image2)

2)中值算子

命令格式:

median_disk(‘输入图像名’,r,‘输出图像名’);

结构元素是圆,其中参数r表示半径,作用对象是二值图像。

例6:

image=imread(‘17I9.bmp’);

imshow(image);

median_disk(‘17I9.bmp’,5,‘17I9_median.bmp’);

figure;

image2=imread(‘17I9_median.bmp’);

imshow(image2);

结果如图5所示。

17I9.bmp17I9_median.bmp

 

3)中值算子

命令格式:

midean_block(‘输入图像名’,r,‘输出图像名’)

midean_disk(‘输入图像名’,r,‘输出图像名’)

参数说明同1)2),作用对象是图像。

例7:

image=imread('23I17.bmp');

imshow(image);

noiseimage=imnoise(image,'salt&pepper',0.50);

figure;

imshow(noiseimage);

imwrite(noiseimage,'23noise.bmp');

median_block('23noise.bmp',3,'23denoise.bmp')

figure;

denoiseimage=imread('23denoise.bmp');

imshow(denoiseimage);

我们先把图像加上50%的椒盐噪声,图像质量非常恶劣。

而经过中值滤波后,图像的质量有了提升,如图3所示。

原图像(a)加了50%椒盐噪声的图像(b)中值滤波后的结果

图3

一、开集(闭集)算子

我们曾经说明,单独的dilation算子和erosion算子都不是好的滤波器,但经过组合可以产生很好的滤波效果。

命令格式

close_open(‘输入图像名’)

open_close(‘输入图像名’)

close_open经过以下四步得到:

(1)结构元素为1×3的矩阵腐蚀;

(2)结构元素为1×3的矩阵膨胀;(3)结构元素为3×1的矩阵膨胀;(4)结构元素为3×1的矩阵腐蚀。

每个步骤分别生成结果文件,名字分别是输入图像名加上e,de,dde,edde。

open_close经过以下四步得到:

(1)结构元素为1×3的矩阵膨胀;

(2)结构元素为1×3的矩阵腐蚀;(3)结构元素为3×1的矩阵腐蚀;(4)结构元素为3×1的矩阵膨胀。

每个步骤分别生成结果文件,名字分别是输入图像名加上d,ed,eed,deed。

例7

close_open('3Enoise.bmp');

产生的结果如图8(a)-8(e)所示。

3Enoisee.bmp,3Enoisede.bmp,3Enoisedde.bmp为中间结果,3Enoiseedde.bmp为最终的滤波结果。

 

(a)原图像

(b)腐蚀的结果(c)膨胀、腐蚀的结果

(d)膨胀、膨胀、腐蚀的结果(e)腐蚀、膨胀、膨胀、腐蚀的结果

图8

例8

open_close(‘pentagram.bmp’);

产生的结果如图9所示。

图9

该图由左至右由上至下分别为(f)原图像(g)膨胀的结果(h)腐蚀、膨胀的结果(i)腐蚀、腐蚀、膨胀的结果(j)膨胀、腐蚀、腐蚀、膨胀的结果

四Extrema算子

1)单个水平集的处理

命令格式

level_conduct(‘输入图像名’,threshold,‘输出图像名’);

输入文件名所指示的文件必须是一个二值图像文件,否则程序会产生意想不到的结果。

该程序将去除二值图像中面积比较小的白色(灰度值为255)连通区域,如果这部分面积小于threshold。

例9

level_conduct('4Equation.bmp',5,'4EquationC.bmp');

结果如图10

图10

2)Extremakiller算子的实现

Extremakiller算子的定义见6.1节和7.1节。

我们的算法对经典的Extremakiller作了改进。

命令格式

killer(‘输入文件名’,threshold,‘输出文件名’)

其中threshold为Extremakiller的尺度参数。

 

例10

a=imread('23I17.bmp');

J=imnoise(a,'salt&pepper',0.7);

imshow(J);

imwrite(J,'23I17_sp7.bmp');

killer('23I17_sp7.bmp',8,'I8_sp7_k8.bmp')

结果如图5所示。

(a)噪声图像(b)killer算子作用后图像

图5

实践和思考:

执行以下两段程序,

1)killer('23I17_sp7.bmp',8,'23I17_sp7_k8.bmp');

level_set('23I17_sp7_k8.bmp',128,'s1.bmp');

2)level_set('23I17_sp7.bmp',128,'s2.bmp');

level_conduct('s2.bmp',8,‘s3.bmp’);

说明:

以下三行程序是翻转图像值,常见实验手册

(二)

I=imread('s3.bmp');

JJ=imadjust(I,[01],[10]);

imwrite(JJ,'s4.bmp');

level_conduct('s4.bmp',8,‘s5.bmp’);

说明:

以下三行程序是翻转图像值

I=imread('s5.bmp');

JJ=imadjust(I,[01],[10]);

imwrite(JJ,'s6.bmp');

观察s1.bmp是否非常接近s6.bmp。

如果是,运用书6.1节的知识,请说明killer执行了怎样的运算,它和经典的Extremakiller之间存在怎样的关系。

 

 

原图像图像的水平集128

 

原图像图像的水平集128

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1