使用Freeman链码提取影像边界

使用Freeman链码提取影像边界

第一篇博客,还真不知道写些什么。恰好最近写了一个小功能,还是蛮有用,希望能帮到用得着的朋友,也为以后积累资料吧。
在GIS行业中,有时会计算影像的面积,希望提取出影像的边界,在做影像镶嵌是还会求取影像的有效范围等。那么,针对一个影像,如何能够得到它的有效范围呢?
1)ArcGIS中有一个工具,好像是在3D分析工具中的栅格范围,但是我在使用的时候并没有成功(也许我还不会玩那个);
2)自己编程实现,在GDAL中,有一个函数可以实现栅格矢量化,如果想要使用这个提取栅格影像的有效边界,那么最好是先二值化,并且要使得影像内部没有背景值,不然后期修改复杂;
3)使用Freeman链码提取出边界点,用ORG中的相关函数写成.shp格式。

一、Freeman链码

在大学的时候使用过Freeman链码提取影像边界,因此,在遇见这个问题的时候很快就找到了思路,也说明现在做的事情,将来的某一天就能帮到自己。
Freeman链码我在这不作具体介绍,网上一大把,主要提及一点:如何搜索影像边界。
1)按照定义的链码方向,首先初始一个方向,并定位到影像边界上的某一点;
2)从初始方向倒退两个开始搜索,即如果初始方向为4,那么就从2开始搜索;
3)当搜索到下一个影像边界点时结束,把像素坐标加入数组,以便后续使用,并更改初始方向码值;

二、生成shp面

利用GDAL库和ORG,将之前的像素坐标转为经纬度坐标并写入shp面。

三、需注意的问题

1)如果影像有效范围在影像的外接矩形框上,那么需要注意判断边界问题;
2)由于记录的是像素的左上角坐标,因此,在影像的某些边界上会出现往里走了一个像素,所以最好根据链码值作相应的调整。这样会使得提取的边界更加完美。
3)如果影像较大,那需要分块读取,我采取的是三行读取;
4)假如出现了一个图像中有不连续的影像,那么在提取边界的时候就应该进行判断。

你可能感兴趣的:(RS,&,GIS,经验)