城市正射影像图任意范围裁切的算法设计及实现

2010-04-19 07:00张鹏程
城市勘测 2010年4期
关键词:图幅射影多边形

张鹏程

(广州市城市规划勘测设计研究院,广东广州 510060)

城市正射影像图任意范围裁切的算法设计及实现

张鹏程∗

(广州市城市规划勘测设计研究院,广东广州 510060)

根据城市正射影像图的特点,在建立了影像的像素坐标和空间地理坐标对应关系的基础上,以VB 6.0实现了任意图幅和任意范围影像图的拼接与裁切,本文给出的算法和代码具有易于理解,不依赖于其他平台而便于移植,功能强大等优点。

城市正射影像图;拼接与裁切;任意范围;Visual Basic 6.0

1 前 言

作为基础测绘4D产品之一的城市正射影像图,是城市基础地理空间数据库的重要组成部分,具有信息量丰富、直观、获取信息快速、数据现势性好、管理动态性强等优点,是空间数据提取[1]、影像地图集制作[2]、GIS系统开发中的重要数据源。

众多学者在分析传统影像图幅拼接与裁切方法的局限性的基础上,对影像的拼接和裁切进行了广泛而深入地研究,取得了显著的进展[2~5]。但归纳起来,仍然存在以下不足:①实现了矩形范围的裁切,而对于任意范围的裁切研究较少:实际的裁切范围往往是不规则的,如按行政区或街道等范围的裁切;②裁切的过程依然或多或少地依赖第三方影像处理软件;③未能充分利用影像图的特点,裁切实现的方法过于复杂,不利于推广。

本文根据城市正射影像图的特点,通过自定义的算法设计,不仅实现了任意图幅、任意范围(包括矩形和多边形范围)影像图的自动拼接和裁切,而且具有完全不依赖于任何图像处理软件(如Photoshop)和专业空间数据处理软件(如Erdas、ArcGIS)等优点,同时可以非常方便地移植到用户开发的GIS系统中,极大地拓展了城市正射影像图在“数字城市”中的应用领域。

2 城市正射影像图的特点分析

城市正射影像图是利用数字高程模型对扫描处理的数字化的航空像片,通过象元进行纠正,再按影像镶嵌,根据图幅范围剪裁生成的影像数据。因此,我国大多数城市的正射影像图具有如下两个显著特性:①按图幅存放:每幅影像图一般以所在城市的1∶2 000图幅号来命名,其4个角的坐标可由图幅号得到,同时代表的实际长和宽固定;②以常见的栅格文件形式存储:通常的格式包括bmp、jpg、tif等,而且同一年代版本的图像像素个数固定不变。

以广州市为例,244201.jpg为一幅标准的影像图,根据图幅号244201可求得该幅影像图的左下角和右上角的坐标(广州地方独立坐标系)分别为:A(40000,27200)、C(41000,28000),图幅代表的实际长和宽为:

该幅图像的宽度和高度分为2 500×2 000像素。根据城市正射影像图的这两个特点,可以建立像素坐标和空间地理位置坐标的对应关系。

3 算法设计思路及实现

3.1 影像的拼接

不同图幅影像的拼接是影像裁切的前提。对于任意给定的一幅影像图(如244201.jpg),根据上述影像图的特点分析,不仅可以得到四个角点的坐标,而且可以求得该幅的八邻域图幅号(也可以根据所在城市的联合图幅表得到邻域关系),如244202.jpg为该图幅相邻的右边图幅,以该两幅影像图的拼接为例,算法思路如下:

(1)添加用于打开影像的图像控件:在VB 6.0的窗体中加载两个 Picture控件,分别命名为 Pic1和Pic2,Pic1为分别打开待合并影像的图像控件,而Pic2为装载合并结果图像的控件。

(2)获取每个像素的颜色值并分解:按行和列循环读取源图像的每个像素,取得该像素的RGB颜色值c,同时写入到目的图像控件中。

(3)将图像控件Pic2中拼接后的图像保存到硬盘中。

源程序代码如下:

如果是上下两幅影像的拼接,只需将上述代码中Pic2的宽度保持不变,高度扩大一倍,同时将代码“Pic2.PSet(i+2500,j),c”改为“Pic2.PSet(i,j+2000),c”即可。

对于任意图幅的拼接,将第一个图幅的所有像素颜色值写入目的控件Pic2中,在读取第二个图幅时,根据图幅号判断其与第一个图幅的关系,根据邻接关系,适当调整上述相关代码,写入到目的控件Pic2中,同时将该图幅设为当前图幅,然后依次循环读取其他所有图幅,根据其与当前图幅的关系,即可实现任意图幅的拼接。

3.2 影像的裁切

影像的裁切与拼接不同,裁切的范围往往是用户任意指定的空间坐标范围。为此,必须建立影像图中每个像素与空间坐标的对应关系,然后,根据像素的空间坐标判断其与裁切范围的空间位置关系,如果在裁切范围内,则取该像素的颜色值并写入到目的图像控件中。

显然,建立每幅影像的像素与空间坐标的对应关系是进行任意范围影像裁切的前提。仍以上述的244201.jpg为例,图1为该图幅影像的像素分布与空间位置示意关系,图中像素的分布是以图像左上角为起点的,而图像代表的实际空间坐标则以左下角为起点的。图像实际长为WBC=1 000,宽为HAB=800,像素值为2 500×2 000,即沿BC方向,每行的像素个数是 2 500个,而沿BA方向,每列的像素个数是2 000个。

因此,对于第i行,第j列的某个像素,其空间位置坐标可以唯一确定,如下:

图1 图幅影像的像素分布与空间位置示意关系

对于图1中的任意裁切范围多边形FFGH,实现裁切的思路如下:

(1)将待裁切的影像装载到Pic1中,循环读取该图幅影像的所有像素,对于第i行,第j列的像素,得到该像素的空间坐标Xij和Yij,同时获取该像素的RGB颜色值c。

(2)利用点与多边形空间位置关系的判定算法,判断点(Xij,Yij)是否在多边形EFGH内,如果在,则将该像素及颜色值写入到目标控件Pic2中,否则,不写入,然后读取下一个像素,直到程序结束。

(3)将图像控件Pic2中裁切后的图像保存到硬盘中。

程序代码如下:

其中,ptInPoly为判断指定像素点是否在给定的裁切范围(多边形)内的函数,点与多边形的关系及算法是《计算几何》中常见的算法,非常成熟,关于点与多边形关系的具体判定算法,读者可参考文献[6,7],本文略。

如果裁切的范围是矩形,只需将上述判断像素点是否在多边形内的程序代码改成判断像素点是否在矩形范围内即可,判断条件为:(Xmin<Xij<Xmax)AND (Ymin<Yij<Ymax),其中Xmin、Xmax分别为矩形范围X坐标的最小和最大值,Ymin、Ymax分别为矩形范围Y坐标的最小和最大值。

对于跨多幅裁切范围的实现方法有两种:一是将多幅相邻接的影像按上述影像拼接的方法拼接起来,然后再调用影像裁切的方法;二是循环调用所有图幅内的所有像素,得到每个像素的空间位置坐标,通过判断其与裁切范围的关系来实现。比较起来,方法一由于先拼接后裁切而效率低,本文采用方法二。

3.3 系统实现

图2为影像自动拼接示意图。当单击“加载影像”按钮时,系统用4个图像控件(Picture)分别装载待合并的上、下、左、右4幅影像,单击“影像拼接”按钮,系统根据影像所在图幅的空间位置关系自动完成影像的拼接。在实际应用中,为了提高拼接的效率,可以设置图像控件不可见(Visible=false),而且可以只使用一个图像控件,依次循环读取待拼接的影像进行拼接。

图3为影像自动裁切示意图。首先,在裁切范围坐标格网中输入要裁切的任意坐标范围,或者单击“读入坐标”按钮读取预定义的坐标;其次,单击“加载影像”按钮,系统自动根据输入的坐标范围计算出需要裁切的所有图幅影像,并按空间位置关系加载在图像控件,同时画出裁切范围;最后,单击“影像裁切”按钮,系统自动完成影像的裁切。

图2 影像自动拼接示意图

图3 影像自动裁切示意图

4 结 语

本文巧妙地利用了城市正射影像图分图幅存放、同一套影像图分辨率大小固定的特点,通过建立影像图中像素与空间坐标的一一对应关系,并采用《计算几何》中常用的点与多边形关系的判定算法,完全在VB 6.0上实现了任意图幅和任意范围影像图的拼接与裁切,不仅克服了传统图像处理软件没有空间定位的概念,所有的拼接和裁切都需要目视判断和手工操作,既费时精度也不高的缺点;而且,同专业的影像处理软件相比,本文提出的方法简单可靠、成本低,同时可以非常方便地嵌入到其他应用系统中。

此外,在上述程序代码的基础上,通过对c值的颜色分解:r=(cAnd&HFF),g=(cAnd 65280)\256,b=(cAnd&HFF0000)\65536,可以获取任意一个像素的RGB颜色分量,然后利用VB强大的文件循环读取和处理功能,可以批量处理诸如常见影像操作中的分辨率变换、单色图像生成、彩色图像变灰度图像等工作。因此,读者可以利用本文提出的思路和方法,再结合VB或VC等编程语言强大的开发功能,设计出界面更友好、功能更强大的影像自动化处理(包括拼接与裁切功能)程序。

参考文献

[1]周绍光,徐勇.在高分辨率遥感影像中提取无清晰连续边缘线的道路[J].测绘学报,2008,37(3):301~307

[2]邓术军,魏斌.影像地图编制中图幅的自动拼接与裁切[J].测绘科学,2008,33(4):109~112

[3]李智明,朱紫阳.基于ArcObject二次开发的遥感影像裁切的实现[J].地理空间信息,2008,6(4):37~39

[4]李奇.数字正射影像拼接的研究[J].地理空间信息,2005,3(1):10~11

[5]周延刚.遥感彩色影像镶嵌拼接缝的消除方法研究[J].计算机工程和应用,2004(36):84~86

[6]王泽根.射线法判定点与多边形包含关系的改进[J].解放军测绘学院学报,1999,16(2):130~132

[7]张鹏程.基于点与多边形关系的地形图图幅查询系统实现[J].测绘通报,2008(10):68~70

The Algorithm and Realization of the City Digital Orthophoto Maps for Automatic Clipping of Arbitrary Scope

Zhang PengCheng
(Guangzhou Urban Planning&Design Survey Research Institute,Guangdong 510060,China)

Firstly,According to the properties of most city digital orthophoto maps of China,the corresponding relationship of pixels and map coordinates is build.Using VB 6.0 and coding,the City Digital Orthophoto Maps for automatic connecting and clipping of arbitrary scope is realized.The algorithm and code have some advantages as follows:easy to understand,independent of any platforms,and powerful to use.

Digital Orthophoto Maps;Connecting and clipping;Arbitrary Scope;VB 6.0

1672-8262(2010)04-110-04

P209

B

2009—11—06

张鹏程(1975—),男,高级工程师,主要从事GIS应用系统开发工作。

广州市科技技术局基金项目(2009J1-C441)

猜你喜欢
图幅射影多边形
多边形中的“一个角”问题
多边形的艺术
解多边形题的转化思想
多边形的镶嵌
三参数射影平坦芬斯勒度量的构造
基于已有控制资料的正射影像自动更新
基于EXCEL的地形图图幅号转换查询方法
基于改进射影控制的柔性直流输电广域阻尼控制
基于ArcMap的图幅接合表快速生成方法研究
地形图图幅编号规则及实现