数字图像处理实习大纲
发布时间:2010-04-26 09:54:57
发布时间:2010-04-26 09:54:57
目 录
前 言 2
实验一 IDL软件介绍 3
实验二 IDL函数及作图练习 4
实验三 IDL程序设计练习 5
实验四 图像认识 6
实验五 空间域图像增强 11
实验六 图像锐化处理 18
实验七 图像频率域处理 23
实验八 图像小波变换与几何变换 25
附件一 实习报告模板 29
《数字图像处理》是一门理论与实践并重的技能型课程,开展数字图像处理上机实习,主要是让学生将理论与实践结合起来,通过实习来巩固与理解理论知识,并拓展该课程的应用范围,培养学生的动手操作能力。
本实习大纲主要以IDL(Interactive Data Language, 交互式数据语言)为软件工具,以示例图片为主要数据源,配合《数字图像处理》理论课环节,针对主要知识点,设计相应的算法,并编程实现。整个上机实习过程要求学生做到以下几点:一、上机前,务必检查计算机是否工作正常,IDL软件是否工作正常。二、实习前,根据实习大纲,复习相关理论知识。实习大纲是完全根据理论课环节来设置的,上机实习前,请同学们务必根据实习大纲复习主要知识点,老师将会把更多的时间放在上机操作及细节处理上。三、准备相关图片。尽管老师会准备一套待处理的图片,但学生完全可以根据自己的兴趣,准备一套自己的实习图片。四、做好实习记录,完成实习报告。上机实习过程中会遇到很多以前没有出现过的问题,请同学们务必记录出现问题的现象,分析其原因,并找出解决的办法;每一堂上机实习课,均需根据要求提交上机实习报告。
实验目的
熟悉IDL软件界面,浏览IDL的常用功能,尝试IDL的一些简单操作。
主要内容
1. IDL界面介绍
2. IDL功能介绍
3. IDL帮助文档阅读方式介绍
4. IDL的一些简单操作
实验要求
1. 学生列出IDL的主要应用领域及常用功能;
2. 学生通过帮助文档的阅读,任选一函数,详细说出其作用方法及注意事项;
3. 学生自己创建一些IDL变量,并实现加、减、乘、除等简单运算,熟悉IDL的一些简单操作。
实验目的
熟悉IDL的变量创建及常用作图函数,了解IDL智能界面的使用及图像处理的菜单式操作。
主要内容
1. IDL常用函数
2. IDL作图
3. IDL智能界面使用
实验要求
1. 创建不同类型的变量,并相互转换,查看其结果变化;
2. 作一条漂亮的正弦、余弦、抛物线或其它图形;
3. 利用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
进一步对彩色图像的R、G、B三个波段分别查看其直方图,并对输出数据作比较。
五. 图像不同空间分辨率的比较
降低图像分辨率:图像隔行、列取样
创建偶数行: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.0:ILPF5=d le 5.0
3. 频率域滤波处理:根据讲义上的处理步骤操作。
请同学们参照讲义chapter05的第34、37、40、44、45、46页上的示例图,进行各种滤波处理,并将结果制成word文档上交。
三、 同态滤波处理
原图:tongtai.jpg
请同学们参照讲义chapter05的第51、52页上的算法及示例图,进行同态滤波处理,并将结果制成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,用polywarp和poly_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分别取值为2、128、128。
原图 几何矫正后