使用GDAL工具对卫星数据进行影像配准

一、        简介

本文将探讨使用GDAL来对卫星影像进行影像配准,依然以Orb-View3数据为例(选择北京市中心附近的影像为例)。其实按照文章中的方法,对任何影像都可以进行配准,不仅仅局限于卫星影像,只要能够提供图像行列号和真实的地理坐标就可以进行处理。

卫星图像来自免费的OrbView-3航天器,可以通过OrbView-3来了解更多信息。然而,在最原始的数据中,卫星图像是用没有地理位置的Tiff格式存储的(普通的Tiff格式)。关于Orb-View3的数据下载,可以参考博文http://blog.csdn.net/kupe87826/article/details/8078914和http://blog.csdn.net/kupe87826/article/details/8079001。

影像配准最常用的就是用来将多光谱影像和全色影像配准,然后进行融合得到高分辨率的多光谱影像。此外还有一个作用就是给一个没有投影的数据赋投影,群里面一直有童鞋问,怎么给一个没有投影的数据赋投影信息。看完这篇文章我觉得应该就知道了吧。

二、        软件和数据

准备要进行影像配准的卫星图像:我们选择的是北京市附近的一景Orb-View3的数据。参考影像使用GoogleMaps中的卫星影像。

所需要的软件:QGIS,GDAL工具集。选择控制点使用QGIS软件来进行辅助;之后使用GDAL的工具来对影像进行配准。

三、        准备正射校正必要的数据

下载的Orb-View3的数据的元数据信息如下。获取时间是2005年11月02日。现在基本上对于高分影像都需要进行正射校正才能达到使用的要求,但是对于北京市区,基本上都是平原,正射校正的意义不大,影像配准基本上也可以满足要求。(不过这里我们是要对配准进行一个说明,不管是哪里的数据,只是说明一下配准的步骤。)

表1Orb-View3卫星元数据信息表

Data Set Attribute

Attribute Value

Entity ID

87248

Acquisition Date

2005/12/17

Cloud Cover

0

Center Latitude

39°52'50.98"N

Center Longitude

116°22'54.31"E

NW Latitude

40°00'57.95"N

NW Longitude

116°22'14.62"E

NE Latitude

40°00'04.09"N

NE Longitude

116°27'42.31"E

SW Latitude

39°45'38.61"N

SW Longitude

116°18'03.99"E

SE Latitude

39°44'43.28"N

SE Longitude

116°23'36.33"E

Center Latitude dec

39.880828

Center Longitude dec

116.381753

NW Latitude dec

40.016097

NW Longitude dec

116.370728

NE Latitude dec

40.001136

NE Longitude dec

116.461754

SW Latitude dec

39.760724

SW Longitude dec

116.301108

SE Latitude dec

39.745355

SE Longitude dec

116.393424

Satellite

ORBVIEW-3

Sensor

Panchromatic

Sun Elevation

24.98

Sun Azimuth

164.14

Vendor

GeoEye Inc.

Vendor ID

3v051217p0001015651a520008201092m_001625916

Map Projection

GEOGRAPHIC

Processing Level

BASIC ENHANCED

Datum

WGS84

File Format

TIFF

Pixel Size X

1.0186931

Pixel Size Y

1.0101201

Date Entered

2011/10/11

 

下载的Orb-View3数据的范围如下图所示:

图1 Orb-View3数据的覆盖范围

接下来用QGIS打开Google的在线卫星地图,用将其缩放至北京地区。截图如下:


图2 QGIS打开的GoogleMaps数据

四、        影像配准

1、准备工作

要进行影像配准,首先要选取控制点,这里我们使用QGIS进行辅助选点工作。在上一小节中我们已经用QGIS打开了Google的卫星影像作为参考影像(Google的卫星数据的投影用的是Web墨卡托投影,不知道的童鞋请问问谷歌或者度娘)。然后使用QGIS中的Georeferencer插件来进行选取控制点。(Georeferencer插件是QGIS中用来选取控制点进行影像配准的工具,网址是:http://gis-lab.info/qa/qgis-georef-new-eng.html。)

点开插件之后,在插件中打开Orb-View3的数据作为待配准影像,如图3所示:


图3 选取控制点界面

2、选取控制点

接下来的主要工作就是选择控制点。选择控制点尽可能的均匀的分布在整幅图像上,然后我们将选择好的控制点保存成一个控制点文件,这个控制点文件是个文本格式,可以用记事本打开查看。下图4是选择的控制点列表,并且计算了中误差(这里的中误差有点大,可以移动控制点对其进行修改,我就不修改了)。


图4 选取的控制点列表

3、生成带有控制点的图像数据

由于GDALWarp工具不能直接加载控制点文件中的控制点,所以才有了这一步。这一步的目的就是把原来的图像和控制点信息都保存到一副新的图像中去。为接下来的第四步做准备工作。好了,废话不多说,这里我们用到的工具是gdal_translate(关于这个工具的作用和使用说明可以参考我之前的博文,或者直接看GDAL官方提供的帮助文档,地址是:http://www.gdal.org/gdal_translate.html。)。使用这个工具的命令行如下:

>gdal_translate -of GTiff-gcp 4280.35 11869 1.29566e+07 4.85182e+06 -gcp 3690.92 10956 1.29561e+074.85316e+06 -gcp 4462.46 10753.5 1.29571e+07 4.85321e+06 -gcp 4256.06 9726.071.29571e+07 4.85459e+06 -gcp 3390.84 9950.69 1.2956e+07 4.85454e+06 -gcp2338.91 2867.69 1.29565e+07 4.86395e+06 -gcp 5252.16 1409.01 1.29606e+074.86504e+06 -gcp 7577.26 199.105 1.29639e+07 4.86595e+06 -gcp 998.878 27260.61.29482e+07 4.83279e+06 -gcp 7211.95 28334.6 1.29559e+07 4.82966e+06 -gcp3907.23 24825.2 1.29526e+07 4.83515e+06 -gcp 165.189 21560 1.29487e+07 4.84042e+06-gcp 6352.08 23457.6 1.29561e+07 4.83624e+06 -gcp 4886.49 20770 1.2955e+074.84014e+06 -gcp 6701.2 17214.2 1.29582e+07 4.84425e+06 -gcp 2279.63 18098.31.29524e+07 4.84432e+06 -gcp 521.509 14313.2 1.29511e+07 4.8497e+06 -gcp4883.22 15076.1 1.29565e+07 4.84751e+06 -gcp 7595.89 11488.5 1.29609e+074.85141e+06 -gcp 203.457 8092.35 1.29524e+07 4.8578e+06 -gcp 7914.81 8033.131.29622e+07 4.85578e+06 -gcp 4791.71 6232.26 1.29587e+07 4.85895e+06 -gcp964.329 617.326 1.29554e+07 4.86722e+06 -gcp 3061.68 27991.1 1.29507e+074.83126e+06"F:/Data/Orb-View3/3V051217P0001015651A520008201092M_001625916/3v051217p0001015651a520008201092m_001625916.tif""F:/Data/Orb-View3/3v051217p0001015651a520008201092m_001625916_GCP.tif"
Input file size is 8016,28672
0...10...20...30...40...50...60...70...80...90...100- done.

图5是执行的截图,执行完成之后可以使用gdalinfo工具查看输出的图像中的信息,如果正常的话,应该会显示里面的控制点信息,这里我就不进行测试了,具体的可以参考之前使用GDAL正射的那篇博文。

图5 将控制点保存在文件中

4、使用GDALWarp进行图像配准

有了第三步的处理,下面可以直接使用GDALWarp工具来对图像进行配准了。配准的命令行如下:

> gdalwarp -r cubic -order2 -tr 1.000000 -1.000000"F:\Data\Orb-View3/3v051217p0001015651a520008201092m_001625916_GCP.tif""F:/Data/Orb-View3/3v051217p0001015651a520008201092m_001625916_georef.tif"

上面的命令中有个-order 2,意思是使用二次多项式进行校正,此外还可以用一次多项式和三次多项式,当然了,就是把3换成1或者3就行了,很简单吧。此外GDAL还提供了一种叫TPS(ThinPlane Spline)的校正方式,与Erdas的Rubber Sheeting算法比较类似。

处理的截图如图6所示。

图6 GDALWarp配准处理

五、        结论

至此,我们对影像的配准已经完成,接下来就是对其配准的精度进行验证。验证的方法是在QGIS中添加进来进行目视检查(当然这个是最直观的一种检查方式,缺点是不能定量分析,如果你不累的话,可以选些检查点进行定量分析一下)。下面是使用QGIS叠加显示的效果(图7),或者也可以用ArcMap或者Erdas的卷帘查看。

图7 图像配准完成后和基准影像叠加显示

      下面是把故宫部分放大进行比较,图8是googleMap的卫星图像,图9个校正后的图像,图10是把校正后的图像透明度设置为50%与GoogleMap的图像叠加显示的效果。


图8 GoogleMap故宫图像

图9 配准后的故宫图像

图10 使用50%透明度叠加显示

从目视效果来看,基本上大体上还是可以滴。由于选择的点的精度问题,导致在图10中的叠加显示有点模糊的效果,由于QGIS没有卷帘的功能,所以不能截一个卷帘显示的图,其实精度大体上还可以,如果调整控制点的精度的话,结果的精度会更高。如果对于山区的影像或者地形起伏以及卫星相机本身的畸变比较大的影像,使用常规的多项式可能达不到配准精度的要求,这时候就需要查找原因了。对于不同的算法原理,可以翻阅相关的参考书或者网络(基本上只要是本遥感图像处理的书肯定都会说几何多项式校正的)。

个人比较懒,没有使用Envi或者Erdas对这个数据进行处理对比。有兴趣的童鞋可以用同样的控制点使用Envi或者Erdas等对数据进行配准,然后与GDAL的结果比较一下,应该不会有太大的出入的。

再次说一句,GDAL提供的算法还是灰常强大滴!!^_^

六、        参考资料

[1]www.gdal.org/

[2] www.qgis.org

[3] http://pst.nst.pku.edu.cn/teaching/nuclear_medicine/DIPnotes/chapter10/chapter10.pdf

[4] http://www.mathworks.cn/products/image/description6.html

[5] http://blog.csdn.net/kupe87826/article/details/8078914

[6] http://www.mathworks.cn/cn/help/images/examples/registering-an-aerial-photo-to-an-orthophoto.html

[7] http://www.baike.com/wiki/%E5%9B%BE%E5%83%8F%E9%85%8D%E5%87%86

 

转载于:https://www.cnblogs.com/xiaowangba/archive/2012/12/08/6313998.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/266622.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业非法集资风险预测_2020CCF--企业非法集资风险预测83.35baseline

企业非法集资风险预测 竞赛 - DataFountain​www.datafountain.cn代码地址​github.com欢迎大家开源关注我的github仓库以及该知乎专栏,该仓库用于记录和定期提供各大数据科学竞赛的赛事消息和原创baseline,思路分享以及博主的一些竞赛心得和学习资料等.…

协程,IO模式

1、协程(别人的模块,达到单线程并发效果) 程序的运行状态: 阻塞: IO阻塞 非阻塞: 运行 就绪 单线程实现并发: 在应用程序里控制多个任务的切换保存状态 可以把IO减下来,但是不可能降…

华为p40 pro原理图_4188起 华为P40/Pro/Pro+国行发布 顶配8888 河图正式上线!

声音 | 小白昨天晚上19:30,华为举行了时长两个多小时的新品发布会,正式带来了华为P40系列国行版,以及一系列的手机配件类新品和其他新品(见后面的文章),由于详细配置之前海外发布会已经公布的差不多了,咱废…

最新处理器排名_安兔兔Android处理器天梯榜发布:最强的还是它

点击上方蓝字【安兔兔】关注我文章每天不断更!为了让大家对自己使用的手机处理器性能有一个更直观的认知,安兔兔今天正式发布了Android手机处理器天梯榜。由于安兔兔V8增加了存储和刷新率在总分方面所占据的权重,因此为了避免手机配置对排名造…

vue动态切换css文件_如何在vue组件中动态的引入css文件?

问题描述如标签描述的不准确,请见新直能分支调二浏页器朋代说谅我的需求是开的接都上的和,近很触是没他电同近很触是没发多套皮肤,打包的时候只加载其中某一种的皮肤(不需要动态换肤),因为css文件过大,后期配套的css文…

【NOI 2018】归程(Kruskal重构树)

题面在这里就不放了。 同步赛在做这个题的时候,心里有点纠结,很容易想到离线的做法,将边和询问一起按水位线排序,模拟水位下降,维护当前的各个联通块中距离$1$最近的距离,每次遇到询问时输出所在联通块的信…

latex大括号 多行公式_如何快速入门 LaTeX,在 XMind 2020 中轻松输入方程。

数学方程输入对于很多理工科朋友来说是一件让人头疼的事情。不仅是数学方程本身就纷繁复杂花样百出,各种输入语法更是劝退无数人。然而很多看似复杂的东西其实并非如想象中的难,抓住本质即可快速入门。今天和大家分享下如何快速入门 LaTeX,在…

全国计算机等级考试题库二级C操作题100套(第08套)

更多干货推荐可以去牛客网看看,他们现在的IT题库内容很丰富,属于国内做的很好的了,而且是课程刷题面经求职讨论区分享,一站式求职学习网站,最最最重要的里面的资源全部免费!!!点击进…

部署及配置Lync Server 2013 监控功能

在上面一篇文章中我们已经部署了存档功能,并且在标准版环境搭建了一台SQLServer服务器作为后端数据库服务器,有了这台服务器我们可以做什么呢?存档,当然还有监控,以及整个CMS。当然这都是一步一步演变的,并…

mysql 客户服务号获取_《MySQL排错指南》——1.4 获取查询信息-阿里云开发者社区...

本节书摘来自异步社区出版社《MySQL排错指南》一书中的第1章,第1.4节,作者:【美】Sveta Smirnova(斯维特 斯米尔诺娃),更多章节内容可以访问云栖社区“异步社区”公众号查看。1.4 获取查询信息正如前一节看到的一样,数…

基于交换芯片的五元组的PCL规则过滤功能

2019独角兽企业重金招聘Python工程师标准>>> 基于交换芯片的五元组的PCL规则过滤功能作者: 韩大卫吉林师范大学2012.12.10Not Approved by Document Control Review Copy Only基于Marvell 98DX51xx/81xx交换芯片的五元组等的策略规则(PCL)过滤功能.现将部分的功能的…

python docx 合并文档 图片_不再为处理PDF烦恼,python处理操作PDF全攻略

本篇聊下Python对pdf的各种操作,包含pdf转word,pdf转图片,pdf翻转,加密,加水印等。pdf转换word文档 保留格式pdf转换为word文档,被大众经常使用的是纯Python库pdfminer和python-docx搭配使用,不…

windows server 2012 初安装体验

昨天晚上的windows server 2012 已时行 了发布了,为之在之前我已进行了下载测试安装,本来晚间想用来在虚拟机下进行安装VM-tool工具的,但是却因种种原因没有成功,为之补一下前面没有安装的过程截图。 进入下载页后,下载…

安卓APP_ 控件(1)—— TextView

摘自:安卓APP_ 控件(1)—— TextView 作者:丶PURSUING 发布时间: 2021-03-28 21:53:49 网址:https://blog.csdn.net/weixin_44742824/article/details/115283233 本文为学习笔记,是安卓APP学习的…

用python做数据分析pdf_利用python进行数据分析pdf

利用python进行数据分析pdf微盘下载!《利用python进行数据分析》利用Python实现数据密集型应用由浅入深帮助读者解决数据分析问题~适合刚刚接触Python的分析人员以及刚刚接触科学计算的Python程序员。利用python进行数据分析简介: 还在苦苦寻觅用Python控…

安卓APP_ 控件(2)—— Button

摘自:安卓APP_ 控件(2)—— Button 作者:丶PURSUING 发布时间: 2021-03-29 14:20:54 网址:https://blog.csdn.net/weixin_44742824/article/details/115290501 开篇:安卓APP_ 控件(1…

安卓APP_ 控件(3)—— EditText

摘自:安卓APP_ 控件(3)—— EditText 作者:丶PURSUING 发布时间: 2021-03-29 18:43:40 网址:https://blog.csdn.net/weixin_44742824/article/details/115305883 开篇:安卓APP_ 控件&#xff08…

python做游戏怎么实现窗口_python和py游戏窗口类

你在draw_sprite()中有事件循环,所以它一直运行到游戏结束,window.set_background永远不会执行。在您的代码构造不正确。在我试着更正它,稍后再发送代码。在编辑:如何组织代码的简单示例。在现在它在一个文件中。在Pygame中总是一…

如何使得账户密码永不过期

如何使得账户密码永不过期 原文:如何使得账户密码永不过期可以通过以下vbs脚本做的使得账户密码永不过期 dim users获取所有用户set users getobject("winmgmts:{impersonationlevelimpersonate}").instancesof("win32_useraccount")for each user in use…

怎么下载并安装python_怎么下载官网python并安装

怎么下载官网python并安装?百度搜索Python官网。看到上图显示官网的没,点击进入。把鼠标移到downloads上,然后看到下拉选项,点击Windows。然后看到如下界面。这么多的安装包,该选那个呢。下图画圈的是版本号&#xff0…