摘 要: 基于IDL对象图形法实现了遥感图像的漫游和连续多级缩放,具有运行速度快,稳定性好等特点。漫游解决了大的遥感图像不能在一般窗口完整显示的问题, 方便用户快速显示浏览大的遥感图像。图像的缩放实现了对图像细节的放大和缩小,改善了视觉效果,提高了图像处理的效率。
关键词: IDL; 对象图形法; 图像漫游; 图像缩放
遥感图像按一定比例尺客观真实地记录和反映地表物体的电磁辐射的强弱信息,是遥感探测所获得的遥感信息资料的一种表现形式[1]。在遥感技术的研究中,对遥感图像的分析与研究在地质勘探、城市规划、气象科学、海洋利用和环境保护等方面都有十分重要的意义。随着传感器技术和计算机科学技术的快速发展,获取的遥感图像的地面分辨率越来越高,所包含的数据量越来越大,获取的遥感图像也越来越大[2]。如何快速显示和浏览大的遥感图像,获得图像中的细节信息就成为遥感图像处理与分析的一个重要环节。交互式数据语言IDL(Interactive Data Language)是Research Systems公司(现为ITT Visual Information Solutions公司)推出的致力于科学数据的可视化和分析语言。它功能强大、简单易学、编程效率高,很少的几行代码就能实现其他语言很难实现的功能[3]。本文有效利用IDL语言强大的可视化、快速的数据处理能力及对象图像法灵活方便的构建图形图像等特点,实现了遥感图像的漫游和缩放功能,具有处理速度快、图像移动连续以及程序可移植性强等优点。
1 漫游技术介绍
遥感图像经常是大画面图像,而一般的图像显示窗口较小,因此图像不能完整显示在窗口中,给图像编辑带来困难[4]。
图像漫游是在图像显示窗口中上下左右移动,图像的一侧逐渐出现,另一侧逐渐消失。可以把整幅的图像定义为一个逻辑屏幕,而把显示屏幕定义为一个物理屏幕,其关系如图1所示。
可以看出,物理屏幕只是逻辑屏幕的一个子集,要浏览整个逻辑屏幕中的内容,只需要移动物理屏幕在逻辑屏幕中的起始位置即可,这就是漫游技术。在交互式系统中使用光标控制物理屏幕起始位置[5]。
2 图像的放大缩小技术概述
在图像浏览过程中,对浏览区域进行放大或者缩小是一种基本的操作。所谓图像缩放是指改变图像的分辨率。缩小图像的主要目的是使得图像符合显示区域的大小并生成对应图像的缩略图。放大图像的主要目的是通过放大原图像从而更清楚地看到图像上的某些细节信息。尤其对高精度的大图像来说,一些细节信息必须要通过放大操作来观察。图像的这种处理手法在图像显示、传输(通信)、图像分析、动画制作和电影合成等方面有着相当广的应用。但是对图像的缩放操作并不能获得更多关于该图像的信息,因此图像的质量将不可避免地受到影响。
本文利用IDL语言编写的程序实现了图像的连续多级放大和连续多级缩小,每一级的放大和缩小系数可以根据用户需要任意设定。
3 IDL的应用
IDL作为语法简单地面向矩阵运算的计算机语言,提供了与多种语言的标准接口工具和大量功能丰富的命令、函数和程序模块,使得数据分析和可视化表达更加简洁、灵活。IDL已经广泛应用在信息处理、空间科学、气象、资源环境中数字图像处理等领域[6]。
3.1 IDL的对象图形法
IDL语言有两套完全独立的图形体系:直接图形法和对象图形法[7]。直接图形法是依靠当前显示设备快速显示的图形的可视化模式,创建在图形设备上的内容将不能再更改和重复利用,适用于命令行操作。对象图形法不直接依赖于用户使用的图形设备,可以直接运行于各种计算机系统中,而且不需要进行图形设备的设置,同时还可以重复利用,因此更加适合开发应用程序。
IDL的对象图形法可以形象地理解为“垒积木”,构建场景就是要将不同的“积木”按照一定的规则堆起来。本文利用IDL的对象图形法建立了视图对象和窗口对象等,将其按照层次关系“垒”起来,最后把最终的场景再在窗口对象中显示。IDL对象图形系统的组成结构如图2所示。
3.2 IDL的鼠标响应事件
在用IDL语言编写漫游和缩放功能的过程中用到了大量的发生在绘图DRAW组件中的鼠标响应事件,因此在这里简单介绍一下。IDL的图形窗口中,每发生一个动作都会产生事件,每个事件都会返回一个事件结构,所有的事件都是要靠这个结构来处理的。
事件结构是指组件的事件所包含的一组特定信息的集合。事件结构包含了产生事件的相应组件的相关信息。每个事件都产生于其自身的、特定的事件结构中,然后被发送到事件处理模块。
事件结构与一般结构的区别是事件结构均有ID、Top和Handler 3个公共字段,这3个字段都是长整型的变量。ID是事件过程中产生事件组件的唯一标识;Top是层次结构中最顶级base的标识;Handler是与组件相关联的组件事件处理程序的标识。事件产生的事件结构都要发送到事件处理程序中,每个事件处理程序都与某一个组件相关联[8]。
DRAW组件的事件结构为:
{WIDGET_DRAW,ID:0L, TOP:0L, Handler:0L ,Type:0,X:0,Y:0,Press:0,Release:0,Clicks:0}
字段Type用于设置时间的类型,其可能的值有:鼠标按下(0)、鼠标松开(1)、鼠标移动(2)、视点滚动(3)和显示(4)。上述所有事件都必须显示地指定,否则相应的事件是不会产生的。字段X和Y给出了事件发生时的设备或屏幕坐标,绘图组件的左下角为坐标原点。字段Press和Release,当鼠标被按下或释放时,它们的值就分别存在了。其中,1表示鼠标左键,2表示鼠标中键,4表示鼠标右键。如果产生鼠标移动事件,那么Press和Release都被设置为0。当鼠标单击时,字段Clicks返回1,双击时返回2。
本文所编写的图像漫游和缩放流程图分别如图3和图4所示。
4 性能分析及效果
通常,功能实现时间的长短直接决定了功能实现的好坏。对本文而言,程序执行速度的快慢与图像的大小有很大的关系。图像越小,程序执行的速度越快,反应越灵敏。本文以2 064像素×2 534像素大小的图像为例,通过在程序中添加时间函数经过反复测试得到以下结果:图像漫游所花费的时间是0.156 s左右,图像进行一级放大和缩小的时间是0.171 s左右,当进行多级放大时,时间会有所延长。由此可知,本文实现的图像的漫游和缩放功能执行速度快,图像能迅速跟随鼠标移动,给用户以平滑和连续的感觉。
4.1 图像漫游效果
原来显示在窗口中的图像及图像向上、下、左、右漫游(以原图中间的白色房屋为中心参考点)后的图像如图5所示。
4.2 图像放大效果
图像的原图以及放大系数设置为1.2时图像经过5级放大后的效果图、放大系数设置为1.5时图像经过5级放大后的效果图以及经过多级放大后的效果图如图6所示。图像还可以继续进行放大操作,但从图6可看出,此时图像失真较严重,研究意义较小。
4.3 图像缩小效果
图像的原图以及缩小系数为0.8时经过3级缩小的图像、缩小系数为0.5时经过3级缩小以后的图像和经过多级缩小以后的图像如图7所示。观察图像缩小效果图可发现,当缩小到一定程度时,图像已经完全显示到屏幕上,此时继续缩小图像则不会有较大变化。
本文首次尝试利用IDL语言对象图形法实现遥感图像的漫游和缩放,并给出了处理结果。结果表明,该方法实现了对大的遥感图像的快速浏览和对图像的任意多级缩放,具有运行速度快、连续性好等特点,提高了用户图像处理的效率。
参考文献
[1] 王一达,沈熙玲,谢炯.遥感图像分类方法综述[J].遥感信息,2006(5):67-71.
[2] 张宏伟,童恒建,左博新,等.基于GDAL大于2G遥感图像的快速浏览[J].计算机工程与应用,2012,48(13):159-162.
[3] 董彦卿. IDL程序设计[M].北京:高等教育出版社,2012.
[4] 王洪庆,张焱.NDPC-386图像漫游技术[J].微计算机应用,1993,14(6):1-6.
[5] 李军.通用的图形图像漫游技术[J].电脑编程技巧与维护,1996(6):53-60.
[6] 韩培友. IDL可视化分析与应用:可视化交互数据语言[M].西安:西北工业大学出版社,2006.
[7] 闫殿武.IDL可视化工具入门与提高[M].北京:机械工业出版社,2003.
[8] LIAM E G. Practical IDL programming[M]. Morgan Kauf-mann Publishers Inc., 2001.