ENVI: 如何添加控制点并基于控制点进行几何校正?

简介: ENVI: 如何添加控制点并基于控制点进行几何校正?

01 阅读提示

这里我将以Imgae ==> Map、Image ==> Image为例进行几何校正。它们都需要添加控制点,但是又略有不同,稍后会在下方做出说明。

02 Image ==> Map

2.1 思路

基本的想法是人为地从图像上寻找有效信息,譬如图像采用的投影坐标系是什么?图像中单个像素代表的实际距离是多少?采用的距离单位是什么......

2.2 加载图像

2.2.1 方法1 ==> 使用经典版 ENVI Classic

打开ENVI Classic 软件显示效果如下


打开图像

 

 


说明:上方ENVI是按照真彩色对应自动对应上去,如果你有假彩色合成的需要当然也可以调整三个波段数据。

 

加载好的图像显示效果如下


方法2  ==> 使用新版 ENVI

打开 ENVI 软件显示效果如下

 

打开图像


 

加载的图像显示效果如下

 


2.3 分析图像

也许你会问,图像有什么好分析的。其实我们使用Image ==> Map工具进行添加控制点,相对于后面的Image ==> Image对操作者来说是更具有难度的。


2.3.1 图像的投影坐标系是什么?

由下方图片我们知道该图像是中国山东地区的图像,但是我们比较难知道该图像的坐标系统信息,但是我们大致可以猜测可能Beijing1954、Xian80、CGCS2000,当然这并不准确。


由下方的图片中的20我们可以大胆的猜测这是投影坐标系,并且是高斯克吕格投影。另外117可以告诉我们这幅图像的带号是20带


最后我们依旧没有办法知道这幅图像的具体坐标系,那么你有几个选择:你可以选择去询问这幅图像的来源以期获取到这幅图像的坐标系(学校、地质局等等),你也可以通过已学知识大胆的猜测坐标系可能是什么,你也可以选择不去对它添加地理信息即不做了。


我已经事先知道了这幅图像的坐标系是Beijing1954坐标系。

2.3.2 图像的分辨率是多少?

这个你或许需要使用ENVI中测量功能

工具所在位置如下


首先下方的图像中1km的距离(x轴方向上)在该图片上占据约250个像素,计算可以得到x轴方向上的分辨率是4m。


其次是下方的图像中1km的距离(y轴方向上)在该图片上也是占据约250个像素,计算可以得到y轴方向上的分辨率也是4m。

 

所以计算可以得到该图像的分辨率是 4m * 4m 。


2.4 寻找 Select GCPs:Image to Map 工具(稍后的Image to Image也是在下面的工具旁边,就不再赘述了)

2.4.1 方法1 ==> ENVI Classic 经典版


2.4.2 方法2 ==> ENVI 新版

方法说明:接下来以ENVI Classic软件为例进行工具的相关操作。

2.5 添加控制点

2.5.1 打开Select GCPs:Image to Map


2.5.2 打开该工具初始页面效果如下

2.5.3 图片的投影信息设置

 

2.5.4 添加控制点核心步骤


2.5.5 对已经添加的控制点进行查看、修改、删除等操作


需要说明的是,控制点的数量一般在30~50之间,当然实际情况实际分析,我没有几次实操达到了30个控制点以上,但是有一点很重要,RMS这个误差需要需要维持在1.0以下,该数值在Show List按钮的右侧,你每添加一个控制点RMS都会更新一下,你需要确保RMS不能超过1,否则你需要调整控制点的位置或者删除误差较大的控制点或者添加更多的控制点等等。


另外添加控制点是一个重新操作,这里只演示了一个控制点的添加不意味只需要添加一个控制点即可,你需要重复操作,显然这是一个枯燥乏味的操作,但你需要坚持。


2.6 保存控制点

 

 

2.7 加载此前保存的控制点

 


2.8 基于添加的控制点进行几何校正


 

 

2.8 出现下方的进度条等待即可

 

2.9 几何校正的效果显示


 

我猜你一定觉得这幅经过了几何校正的图像和此前没有经过几何校正的图像似乎没有什么明显的区别。这里你可以看下面操作。


03 Image ==> Image

这种一般应用于图像(Image)没有空间参考没有坐标仅仅只是一张图片,而你拥有一幅带有地理信息的图像,它是拥有空间参考有坐标系统有投影坐标系(MapInfo)等等,最重要的是你所拥有的这幅带有地理信息的图像与之前那幅没有任何坐标没有空间参考的图像有空间上的重合。譬如带有地理信息的图像上有庐山瀑布景点,恰巧无地理信息的图像上也有该景点。那么Image ==> Image 就是将无地理信息的图像上的易于标识的点找出来并且找到带有地理信息的图像上与之对应的那个点 ——添加控制点。


由于时间问题,以后有时间再做补充,其实操作大同小异,并且Image ==> Image 的操作比之前的操作更为简单,相信可以自行完成。

目录
相关文章
|
6月前
|
API C++ 计算机视觉
【opencv3】鼠标框选矩形并显示当前像素点坐标和矩形中心点坐标C++
【opencv3】鼠标框选矩形并显示当前像素点坐标和矩形中心点坐标C++
|
3月前
|
算法 C++
大地经纬度坐标与地心地固坐标的的转换
大地经纬度坐标与地心地固坐标的的转换
87 0
|
3月前
|
前端开发 小程序 JavaScript
贝塞尔曲线的切线及其AABB问题
贝塞尔曲线的切线及其AABB问题
|
6月前
|
计算机视觉
OpenCV(三十四):轮廓外接最大、最小矩形和多边形拟合
OpenCV(三十四):轮廓外接最大、最小矩形和多边形拟合
480 0
|
6月前
|
算法
[Halcon&几何] 矩形顶点和对角连线角度计算
[Halcon&几何] 矩形顶点和对角连线角度计算
136 0
|
6月前
|
算法 容器
[MFC] 将多个坐标点拟合出一条直线,并画出
[MFC] 将多个坐标点拟合出一条直线,并画出
90 0
|
6月前
|
算法
[Halcon&拟合] 直线、矩形和圆的边缘提取
[Halcon&拟合] 直线、矩形和圆的边缘提取
412 0
|
数据可视化 C++
高斯正反算—投影坐标转大地坐标、大地坐标转投影坐标(附有完整代码及测试结果)
高斯正反算—投影坐标转大地坐标、大地坐标转投影坐标(附有完整代码及测试结果)
|
图形学
Unity LineRenderer 根据圆的中心、半径、朝向在三维空间中画圆
Unity LineRenderer 根据圆的中心、半径、朝向在三维空间中画圆
611 1
Unity LineRenderer 根据圆的中心、半径、朝向在三维空间中画圆