遥感图像处理—几何校正.pdfVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
遥遥感感图图像像处处理理—⼏⼏何何校校正正   本节将从原理和代码两个⽅⾯讲解遥感图像的⼏何校正。 原理   ⾸先介绍⼏何校正的 念:在遥感成像过程中,传感器⽣成的图像像元相对于地⾯⽬标物的实际位置发⽣了挤压、扭曲、拉伸和偏移等 问题,这⼀现象叫做⼏何畸变。⼏何畸变会给遥感图像的定量分析、变化检测、图像融合、地图测量或更新等处理带来的很⼤误差,所以需 要针对图像的⼏何畸变进⾏校正,即⼏何校正。   ⼏何校正分为⼏何粗校正和⼏何精校正。粗校正是利⽤空间位置变化关系,采⽤计算公式和辅助参数进⾏的校正,叫做系统⼏何校正; 精校正是在此基础上,使图像的⼏何位置符合某种地理坐标系统,与地图配准,调整亮度值,即利⽤地⾯控制点 (GCP)做的⼏何精校正。   ⼏何校正步骤:1.空间位置的变换 (像元坐标)2.像元灰度值的重新计算,即重采样。   1. 坐标变换   坐标变换分为直接法和间接法。   1)直接法:从原始图像阵列出发,依次计算每个像元在输出图像中的坐标。直接法输出的像元值⼤⼩不会发⽣变化,但输出图像中的 像元分布不均匀。   2)间接法:从输出图像阵列出发,依次计算每个像元在原始图像中的位置,然后计算原始图像在该位置的像元值,再将计算的像元值 赋予输出图像像元。此⽅法保证校正后的图像的像元在空间上均匀分布,但需要进⾏灰度重采样。该⽅法是最常⽤的⼏何校正⽅法。   由上图可见,直接法直接以原始图像的坐标为基准点,坐标偏移到校正后的图像,坐标的位置有很多出现在了像元的中间位置,所以直 接输出像元值⼤⼩导致像元分布不均匀。   ⽽对于间接法。以输出图像的坐标为基准点,已经定义在了格点的位置上,此时反算出该点在原始图像上对应的图像坐标,坐标多数落 在像元的中间位置。这⾥采⽤最邻近法、双线性内插和三次卷积法来计算该点的灰度值,达成重采样的⽬的。   2. 重采样    图像数据经过坐标变换之后,像元中⼼的位置发⽣改变,其在原始图像的位置不⼀定是整数⾏\列,需要根据输出图像各像元在原始图 像中对应的位置,对原始图像重采样,建⽴新的栅格矩阵。    主要有最近邻法、双线性内插法、三次卷积法。原理这⾥不再叙述。其中最近邻法没有改变图像光谱信息,能保证定量分析的准确 性,但是图像不够平滑。后两者虽然数据连续平滑了,但是光谱信息遭到了破坏,⽐较适合于制图,不适⽤于定量分析。 代码实现     在熟悉了⼏何校正的原理后,可以动⼿实现这⼀环节。这⾥主要介绍三种⽅法,具体如下。     1.⾸先介绍最基础也是最底层的⽅法。(这⾥是分步切⽚得到偏移后的坐标,然后重采样) from osgeo import gdal def get_indices(source_ds , target_width, target_height): source_geotransform source_ds .GetGeoTransform() source_width source_ds .GetGeoTransform[1] source_height source_ds .GetGeoTransform[5] dx target_width/source_width dy target_height/source_height target_x np.arange(dx/2, source_ds .RasterXSize, dx) target_y np.arange(dy/2, source_ds .RasterYSize, dy) return np.meshgrid(target_x , target_y) def bilinear(in_data, x , y): x- 0.5 y- 0.5 x0 np.floor(x).astype(int) x 1 x0+1 y0 np.floor(y).astype(int) y 1 y0+1 ul in_data[y0,x0]*(y 1-y)*(x 1-x) ur in_data[y0,x 1]*(y 1-y)*(x-x0) ll in_data[y 1,x0]*(y-y0)*(x 1-x) lr in_data[y 1,x 1]*(y-y0)*(x-x0) return ul+ur+ll+lr

文档评论(0)

小小文档 + 关注
实名认证
文档贡献者

小小文档小小文档小小文档小小文档

1亿VIP精品文档

相关文档