数字图像处理实习大纲

发布时间:2010-04-26 09:54:57

2

实验一 IDL软件介绍 3

实验二 IDL函数及作图练习 4

实验三 IDL程序设计练习 5

实验四 图像认识 6

实验五 空间域图像增强 11

实验六 图像锐化处理 18

实验七 图像频率域处理 23

实验八 图像小波变换与几何变换 25

附件一 实习报告模板 29

《数字图像处理》是一门理论与实践并重的技能型课程,开展数字图像处理上机实习,主要是让学生将理论与实践结合起来,通过实习来巩固与理解理论知识,并拓展该课程的应用范围,培养学生的动手操作能力。

本实习大纲主要以IDLInteractive Data Language, 交互式数据语言)为软件工具,以示例图片为主要数据源,配合《数字图像处理》理论课环节,针对主要知识点,设计相应的算法,并编程实现。整个上机实习过程要求学生做到以下几点:一、上机前,务必检查计算机是否工作正常,IDL软件是否工作正常。二、实习前,根据实习大纲,复习相关理论知识。实习大纲是完全根据理论课环节来设置的,上机实习前,请同学们务必根据实习大纲复习主要知识点,老师将会把更多的时间放在上机操作及细节处理上。三、准备相关图片。尽管老师会准备一套待处理的图片,但学生完全可以根据自己的兴趣,准备一套自己的实习图片。四、做好实习记录,完成实习报告。上机实习过程中会遇到很多以前没有出现过的问题,请同学们务必记录出现问题的现象,分析其原因,并找出解决的办法;每一堂上机实习课,均需根据要求提交上机实习报告。

实验一 IDL软件介绍

实验目的

熟悉IDL软件界面,浏览IDL的常用功能,尝试IDL的一些简单操作。

主要内容

1. IDL界面介绍

2. IDL功能介绍

3. IDL帮助文档阅读方式介绍

4. IDL的一些简单操作

实验要求

1. 学生列出IDL的主要应用领域及常用功能;

2. 学生通过帮助文档的阅读,任选一函数,详细说出其作用方法及注意事项;

3. 学生自己创建一些IDL变量,并实现加、减、乘、除等简单运算,熟悉IDL的一些简单操作。

实验二 IDL函数及作图练习

实验目的

熟悉IDL的变量创建及常用作图函数,了解IDL智能界面的使用及图像处理的菜单式操作。

主要内容

1. IDL常用函数

2. IDL作图

3. IDL智能界面使用

实验要求

1. 创建不同类型的变量,并相互转换,查看其结果变化;

2. 作一条漂亮的正弦、余弦、抛物线或其它图形;

3. 利用IDL的演示程序,了解IDL智能界面的使用及图像处理的菜单式操作。

实验三 IDL程序设计练习

实验目的

熟悉IDL函数及程序设计的基本语法,设计简单函数和程序。

数据准备

带格式的数据文件(如气象数据文件)

主要内容

1. IDL程序介绍

2. IDL程序设计练习及综合运用

实验要求

1. 设计一段IDL程序,判断输入的年份是否为闰年;

2. 设计一段IDL程序,读入有格式的文本文件。

实验四 图像认识

实验目的

学习实现图像读入、简单加工处理、输出等运算,了解一些常用的图像分析函数,测试图像不同空间分辨率和不同灰度级的视觉效果。

数据准备

任意一幅灰度图像

主要内容

1. 图像读入与显示

2. 图像裁剪

3. 查看图像的数字表示

4. 绘制图像的直方图,查看直方图数据

5. 图像不同空间分辨率的比较

6. 图像不同灰度级的比较

7. 亮度适应与鉴别——图像值范围较宽时显示效果比较

实验要求

1. IDL函数读入一幅图像;

2. IDL的简单命令实现图像裁剪、图像空间分辨率变换、图像灰度级变换;

3. IDL的简单命令实现查看图像的数字表示,并修改某一像素的灰度值,看图像亮度是如何变化的;

4. IDL绘制图像的直方图。

上机操作实例

一. 分别读入一幅黑白和彩色图像并显示,比较其差异

gray=read_image('gray.jpg')

color=read_image('color.jpg')

iimage, gray

iimage, color

二. 图像裁剪

iimage界面下,用矩形ROI选择裁剪的部分,确定其左上角和右下角的坐标。如果将图中的头像部分裁剪出来:

灰度图:head_gray=gray[80:279, 180:379]

彩色图:head_color=color[0:2, 80:279, 180:379]

三. 查看图像的数字表示

ASCII输出裁剪后的图像,并用写字板打开输出的文件,查看图像的数字表示,比较黑白图像和彩色图像在数字表示方面的差异。

write_text, 'head_gray.txt', head_gray

write_text, 'head_color.txt', head_color

四. 绘制直方图,查看直方图数据

hist_gray=histogram(head_gray, locations=location)

iplot, hist_gray

查看直方图数据

hist_gray1=reform([location, hist_gray], 256, 2)

hist_gray1=transpose(hist_gray1)

write_text, 'hist_gray.txt', hist_gray1

进一步对彩色图像的RGB三个波段分别查看其直方图,并对输出数据作比较。

五. 图像不同空间分辨率的比较

降低图像分辨率:图像隔行、列取样

创建偶数行:even=bindgen(100)*2

创建奇数行:odd=even+1

将裁剪的头像部分的偶数行抽出来:low_head=head_gray[*,even]

将裁剪的头像部分的偶数列抽出来:low_head=low_head[even, *]

将降低了分辨率的图像放大到原大小(行、列复制)

列复制:

创建一个列数放大了的空数组:high_head=bytarr(200, 100)

将分辨率较低图像的数据复制到空数组中:high_head[even, *]=low_head

复制列数据:high_head[odd, *]=low_head

行复制:

创建一个行数放大了的空数组:high_head1=bytarr(200, 200)

将列复制好了的图像赋给空数组:high_head1[*, even]=high_head

复制行数据:high_head1[*, odd]=high_head

显示放大的低分辨率图像:iimage, high_head1

原图

进一步将图像空间分辨率降低到50*50 25*25,然后再放大到200*200,比较其效果。

六. 图像不同灰度级的比较

head_gray128=head_gray/2

head_gray64=head_gray128/2

head_gray32=head_gray64/2

head_gray16=head_gray32/2

iimage, head_gray128

进一步对彩色图像各波段的灰度级进行降低,比较其效果。

七. 亮度适应与鉴别——图像值范围较宽时显示效果比较

将黑白图像和彩色图像中的某一个像素值(如[200,200])改变到65535,看会出现什么结果。注意数据类型的转换(uint)。

实验五 空间域图像增强

实验目的

学习实现图像在空间域的基本处理方法

数据准备

准备一幅背景很亮和一幅背景很暗的图像

主要内容

1. 认识一些基本的空间域图像增强函数

2. 图像反转

3. 对数变换

4. 幂次变换

5. 对比度拉伸

6. 灰度级窗

7. 线性动态范围调整

8. 非线性动态范围调整

实验要求

1. 对两幅图像进行反转操作,查看结果变化;

2. 对背景亮的图像进行对数变换,查看结果变化;

3. 对背景暗的图像进行幂次变换,查看结果变化;

4. 对任意一幅图像进行对比度拉伸、灰度级窗、线性与非线性动态范围调整,查看结果变化。

上机操作实例

1. 请在IDL中绘出以下这些基本的空间域图像增强函数,并根据函数的形状分析每个函数在图像增强中所起的作用。

注:函数线性拉伸公式:y=(x-min)/(max-min)*(max1-min1)+min1.max, min是原图的最大值与最小值;max1, min1是拉伸后图像的最大值与最小值)

1 基本的空间域图像增强函数

2. 任选一幅灰度和彩色图像,在IDL中进行图像反转并显示,效果如图2所示:

2 灰度图像反转示意图

3. 对数变换:

打开示例图像log_image1.jpg,并显示(图3a);

查看其直方图,分析图像为什么要用对数变换;

然后用log_trans=alog(log_image1+1.0)的对数函数进行变换,并显示,同时查看其直方图,可以看出像素值分布在0—5的范围内,而显示的时候图像本身拉伸到0—255,这只是颜色查找表的一个映射。若不把像素值拉伸到0—255就保存(示例图像log_trans.jpg)会发现整幅图像看起来为黑色(图3b);

将变换后的图像拉伸到0—255,显示,查看其直方图,并保存(图3c);

比较图像对数变换前后直方图的变化(图3a和图3c)。

ab

c

3 对数变换效果比较

4. 幂次变换

打开示例图像root_image1.jpg,并显示(图4a);

查看其直方图,分析图像要用什么样的幂次变换(大于1或小于1);

然后用root_trans=root_image1^0.6的幂函数进行变换,并显示,同时查看其直方图,可以看出像素值分布在0—27的范围内,而显示的时候图像本身拉伸到0—255,这只是颜色查找表的一个映射。若不把像素值拉伸到0—255就保存(示例图像root_trans.jpg)会发现整幅图像相当暗(图4b);

将变换后的图像拉伸到0—255,显示,查看其直方图,并保存(图4c);

比较图像幂变换前后直方图的变化(图4a和图4c)。

打开示例图像power_image1.jpg,按以上步骤分析图像并作相应的幂次变换(图5)。

a

b

c

4 幂次变换效果比较(暗背景)

5 幂次变换效果比较(亮背景)

5. 对比度拉伸:读入示例图像stretch.jpg,分析图像,根据所感兴趣的图像内容作相应的对比度拉伸(图6)。

6 对比度拉伸效果示意图

6. 灰度级窗:读入示例图像stretch.jpg,分析图像,根据所感兴趣的图像内容作相应的灰度级窗变换。

7. 线性动态范围调整:读入示例图像line.jpg,分析图像,根据所感兴趣的图像内容作相应的线性动态范围调整(图7)。

7 线性动态范围调整效果示意图

8. 非线性动态范围调整:读入示例图像nonline.jpg,分析图像,根据所感兴趣的图像内容作相应的非线性动态范围调整(图8)。

8 非线性动态范围调整效果示意图

实验六 图像锐化处理

实验目的

熟悉常用的图像锐化算法,并比较各算法的优缺点。

数据准备

选一幅纹理比较突出的图像,如建筑物图像。

主要内容

1. 单方向的一阶梯度算法(浮雕效果)

水平方向的锐化

垂直方向锐化

2. 交叉微分算法(Roberts梯度算法)

3. Sobel锐化算法

4. Priwitt锐化算法

5. Laplacian锐化算子

6. Laplacian变形算子

7. Wallis算子

8. 微分算子在边缘检测中的应用

实验要求

按上述主要内容,依次用IDL编程实现,并查看结果变化,总结出各算法的优缺点。

上机操作实例

IDL下读入一幅图像,并启动智能工具iImage, 出现如下界面,选用filter(滤波)

原图像

一、单方向的一阶梯度算法(浮雕效果)

1. 水平方向的锐化

2. 垂直方向的锐化

二、 交叉微分算法(Roberts梯度算法)

a=read_image('G:\DIP\zhu\practice\lecture06\4_building.jpg')

iimage, a

d1=[[-1,0],[0,1]]

d2=[[0,-1],[1,0]]

b=convol(a, d1) + convol(a, d2)

iimage, b

三、 Sobel锐化算法

四、Priwitt锐化算法

a=read_image('G:\DIP\zhu\practice\lecture06\4_building.jpg')

iimage, a

d1=[[-1,0,1],[-1,0,1],[-1,0,1]]

d2=[[-1,-1,-1],[0,0,0],[1,1,1]]

b=((convol(a, d1))^2 + (convol(a, d2))^2)^0.5

b=convol(a, d1) + convol(a, d2)

iimage, b

五、Laplacian锐化算子

六、Laplacian变形算子

请同学们自己结合讲义chapter04,构建程序处理,并将结果显示。

七、Wallis算子

八、微分算子在边缘检测中的应用

请同学们自己结合讲义chapter04上的示例,构建程序处理,并将结果显示。

实验七 图像频率域处理

实验目的

掌握FFT变换及反变换的处理流程,比较不同滤波器的处理效果。

数据准备

频率域测试图像和同态滤波图像由老师提供,学生自选一幅灰度图像

主要内容

1. FFT变换及反变换

图像非中心化处理结果

图像中心化处理结果

2. 频率域滤波处理

理想低通滤波器(不同半径效果比较)

巴特沃思低通滤波器(不同半径效果比较)

高斯低通滤波器(不同半径效果比较)

3. 同态滤波处理

实验要求

按上述主要内容,依次用IDL编程实现,并查看结果变化。比较图像非中心化和中心化处理结果上的差异;比较不同滤波器的处理效果;比较同一种滤波器在不同半径下的处理效果。

上机操作实例

一、FFT变换及反变换

1. 中心化矩阵求算(IDL程序:center.pro

2. 图像非中心化处理结果(原图:origin.jpg;非中心化:fft.jpg

3. 图像中心化处理结果(中心化:c_fft.jpg

4.

二、 频率域滤波处理

原图:test.jpg

设计思想:先求出中心化的D(u,v)距离图像,然后根据D(u,v)图像以及chapter05上的公式构建各种滤波器,最后实现不同半径的处理,处理效果见讲义相关内容。

1. 中心化的D(u,v)距离图像求算(IDL程序:distance.pro

2. 滤波器构建:以ILPF为例,中心半径为5.0ILPF5=d le 5.0

3. 频率域滤波处理:根据讲义上的处理步骤操作。

请同学们参照讲义chapter05的第343740444546页上的示例图,进行各种滤波处理,并将结果制成word文档上交。

三、 同态滤波处理

原图:tongtai.jpg

请同学们参照讲义chapter05的第5152页上的算法及示例图,进行同态滤波处理,并将结果制成word文档上交。

实验八 图像小波变换与几何变换

实验目的

掌握图像小波变换及其简单应用,学会常用的几何变换方法。

数据准备

学生自己任选一幅灰度图像,老师准备一幅几何变形的图像。

主要内容

1. 离散小波变换及反变换

离散小波变换

离散小波变换在图像边缘检测中的应用

2. 图像几何变换

图像平移

图像旋转

图像缩放

图像几何矫正

实验要求

按上述主要内容,依次用IDL编程实现,并查看结果变化。分析图像不同级别的小波变换结果差异及频率分布;分析图像几何矫正方法。

上机操作实例

一、离散小波变换及反变换

1. 离散小波变换

对图像“lena.jpg”进行三级小波变换,提取各级变换中的概貌部分进行反小波变换,并显示(如下图所示)

用法:Result = WV_DWT(, Scaling, Wavelet, Ioff, Joff [, /DOUBLE] [, /INVERSE] [, N_LEVELS=value])

其中,Scaling, Wavelet, Ioff, Joff由小波函数决定,如:Result = WV_FN_SYMLET( [Order, Scaling, Wavelet, Ioff, Joff] )

如:image=fltarr[128, 128], image_dwt=WV_DWT(image, Scaling, Wavelet, Ioff, Joff, n_levels=3)

2. 离散小波变换在图像边缘检测中的应用

对图像“bianyuan.jpg”进行一级小波变换,分别提取变换中的次低频、次高频、次低频与次高频部分进行反小波变换,并显示(如下图所示)

二、 图像几何变换

1. 图像平移

对图像“lena.jpg”在iimage界面中(operatationsrotate or flip)进行水平或垂直镜像翻转;在IDL命令提示下用shift函数做平移处理(注意shift的用法)。

2. 图像旋转

有两种方式实现:(1)对图像“lena.jpg”在iimage界面中(operatationsrotate or flip)进行旋转;(2)在IDL命令提示下用rot函数或rotate函数做旋转处理(注意shift的用法)。

3. 图像缩放

对图像“lena.jpg”在IDL命令提示下进行操作:分别用congrid函数和expand函数实现。

4. 图像几何矫正

原始图像为:correction.jpg,用polywarppoly_2d两个函数联合对其进行处理,将图像的几何变形得到矫正。

Polywarp的参数设置:xi=[63, 190, 0, 127]; yi=[ 0, 0, 127, 127]; xo=[ 0, 127, 0, 127]; yo=[0, 0, 127, 127]; degree的取值为1.

Poly_2d的参数设置:Interp, Dimx, Dimy分别取值为2128128

原图 几何矫正后

附件一 实习报告模板

数字图像处理实习大纲

相关推荐