本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/xiluoduyu/
从网上查看很多关于几何校正的代码,不过好像基本上都差不多,下载下来调试基本上都是说说而已,根本没法真正做到几何校正的目的。好多人也在怀疑GDAL到底能不能做几何精校正,经过自己的努力,我发现,其实只要稍微改一下,GDAL完全可以做到多项式几何精校正的,在此跟大家分享下思路,也希望大牛们有更好的方法的话共享下。
首先说一下最简单的几何校正模型---仿射校正模型(叫法可能不对,大家明白即可)。所谓仿射校正,即是通过地理坐标来确定转换关系的。首先根据控制点数组用GDALGCPToGeoTransform得到转换系数,然后代入待校正影像的四个角点坐标(0,0),(w,0),(0,h),(w,h)得到八个地理坐标值,对八个地理坐标值进行简单排序得到水平方向和竖直方向的四个最值。我觉得在做几何校正时最好能保持像元分辨率不变,因而通过将之前得到的地理坐标最值除以分辨率即可得到目标影像或结果影像的行列数,此时得到的行列数未必是整数,所以需要做下取整处理,处理之后别忘了对结果影像的像元分辨率做下调整,即根据地理范围与实际行列数重新计算一下,再结合待校正影像的其他四个地理系数即得到结果影像的地理坐标转换系数,这是个关键。之后便可逐像元进行坐标转换和重采样啦,我的重采样是自己写的,不一定有GDAL的好,不过感觉测试效果不差。也可以到GDAL的源文件里找它的重采样函数直接copy过来用的,