ENVI无缝镶嵌、拼接栅格数据的方法
本文介绍基于ENVI软件,利用“Seamless Mosaic”工具实现栅格遥感影像无缝镶嵌的操作。
在遥感图像镶嵌拼接:ENVI的Pixel Based Mosaicking工具操作方法这篇文章中,我们介绍了在ENVI软件中通过“Pixel Based Mosaicking”工具实现栅格遥感影像的镶嵌的方法。这一工具虽然可以对不含有地理参考信息的遥感影像进行镶嵌,但是其镶嵌的整体效果并不如“Seamless Mosaic”工具的效果。因此,本文就对基于“Seamless Mosaic”工具的栅格遥感影像镶嵌操作进行介绍。
首先,我们先来看一下本文需要实现的需求。现有以下两景遥感影像,二者均含有地理参考信息,如下图所示;这里我们再强调一下:如果待镶嵌的遥感影像中至少一景不含有地理参考信息,那么就无法使用“Seamless Mosaic”工具进行镶嵌。

而我们需要做的,就是对这两景遥感影像进行镶嵌。
明确了具体需求,接下来就可以开始镶嵌操作。首先,我们在ENVI软件中打开对应的两景遥感影像;随后,在工具箱中依次选择“Mosaicking”→“Seamless Mosaic”。

随后,将弹出如下所示的“Seamless Mosaic”工具窗口。

点击上图左上角的绿色加号,导入我们需要进行镶嵌的遥感影像。

导入数据完毕后,我们开始镶嵌参数的配置。这里提一句,镶嵌过程中大家最好始终勾选“Seamless Mosaic”工具窗口右上角的“Show Preview”选项,这样可以让我们时刻对镶嵌结果图像有一个初步的预览。
首先,在“Main”面板的“Data Ignore Value”选项中,填写两景遥感影像重叠区域的背景值(NoData值)。如下图所示,我们可以利用Crosshairs功能、Cursor Value功能获取重叠区域背景处像元的数值。

接下来,在“Color Matching Action”选项中,我们需要选择镶嵌后结果图像的颜色匹配基准图像。一般的,我们将导入“Seamless Mosaic”工具的任意一景遥感影像作为基准图像(即选择“Reference”),将其余所有图像作为待校正图像(即选择“Adjust”)即可。随后,在“Feathering Distance (Pixels)”选项中,配置接边线羽化的范围。

接下来,进入“Color Correction”面板,选中“Histogram Matching”,即开启直方图匹配,并选择是依据待镶嵌遥感影像的所有区域还是重叠区域作为直方图匹配的范围。

接下来,我们点击“Seamlines”选项;如下图所示。

此时,在待镶嵌遥感影像中可以看到软件自动生成了一条绿色的接边线;如下图所示。

系统生成接边线的操作是自动的,因此难免会出现接边线不理想的情况。我们可以选择“Start editing seamlines”选项,对系统生成的接边线进行修改。

修改接边线的方式也非常简单,我们只需要用鼠标在新接边线的路径上不断点击,从而画出新的接边线。

对某一段新的接边线绘制完毕后,双击鼠标左键,或右键选择“Accept Polygon”选项,即可完成这一段接边线的编辑。

例如,在上图中我绘制完毕后,右键选择“Accept Polygon”选项,可以看到接边线在这里就是沿着我画的新的范围来生成的。

这里有一个非常关键的部分——大家在对接边线进行绘制的过程中,一定要确保你开始绘制的第一个点与结束绘制的最后一个点,需要在原有接边线的同一侧。如下图所示,我开始和结束的两个点(两个黄色方框内的点)都是在原有绿色接边线的左侧的。

只有这个样子,才可以让新生成的接边线按照我们画好的路径生成;如下图所示。否则结束绘制后,会发现接边线没有发生任何变化,依然是系统默认的那个样子。

关于接边线的修改,如果大家还是不明白,可以查看这个动图。这里要非常感谢旧哥友情提供的动图~

接边线修改完毕后,如下图所示。可以看到我已经将原本笔直的接边线,按照成像区域的水体边界、道路等进行了修改;这样子镶嵌结果就会比较统一,不会明显地看到接边线的痕迹。

绘制完毕接边线后,我们可以选择“Save Seam Polygons”选项,对绘制好的接边线进行保存。

在弹出的窗口中输入接边线的保存路径与名称即可。

在今后,如果我们还想用这个保存好的接边线,就可以通过“Restore Seam Polygons”选项,导入之前保存好的接边线文件。

完成以上对接边线的操作后,我们进入“Seamlinse/Feathering”面板。在其中,我们选中“Apply Seamlines”选项,并对“Feathering”选项进行配置,从而调整镶嵌图像的接边线羽化设置。

最后,我们进入“Export”选项,对镶嵌结果图像的保存路径与名称进行设置;此外,还可以对结果图像的背景值、重采样方法与输出波段进行选择。这里的重采样方法,也就是“Resampling Method”选项,一般选择三次卷积即可。

随后,点击“Finish”。稍等片刻,就可以看到我们镶嵌好的结果图像了。

观察结果图像,可以发现我们几乎很难找到接边线的痕迹。这就是“Seamless Mosaic”工具实现栅格遥感影像无缝镶嵌的优势所在。
ENVI无缝镶嵌、拼接栅格数据的方法的更多相关文章
- 分享一个递归无限级拼接Json的方法---ExtJs的TreePanel和TreeGrid均适用(Ef,Lambda,Linq,IQueryable,List)
话不多说,先上实体类,如果你不是codefirst,就把它当成数据表结构. 下面是底层BaseDal获取数据的方法 (如果你没有Base类,直接写在你的DAL层和BLL层) 下面是BaseServi ...
- python—字符串拼接三种方法
python—字符串拼接三种方法 1.使用加号(+)号进行拼接 字符串拼接直接进行相加就可以,比较容易理解,但是一定要记得,变量直接相加,不是变量就要用引号引起来,不然会出错,另外数字是要转换为字 ...
- Java 字符串拼接 五种方法的性能比较分析 从执行100次到90万次
[请尊重原创版权,如需引用,请注明来源及地址] > 字符串拼接一般使用“+”,但是“+”不能满足大批量数据的处理,Java中有以下五种方法处理字符串拼接,各有优缺点,程序开发应选择合适的方法实现 ...
- 记一个jquery 无缝轮播的制作方法
接触前端也很久了,今天才发现,要做好一个轮播,其实有很多东西需要考虑进去,否则做出来的轮播效果并不好,下面我就来做一个轮播,是依赖jquery来写的 1.要做轮播,首先需要的是HTML的内容,css的 ...
- EL中拼接字符串的方法
近期在项目中碰到一个需要在JSP页面中比较两String类型的值的问题,于是想当然的写了如下代码: <c:if test="${'p'+longValue=='p1'}"&g ...
- Sql Server将一列字段拼接成字符串方法
最近在项目中遇到个问题,需要将表中某列字段合并成字符串输出,如果直接通过代码全部读取出来,再遍历进行拼接显然不是最好的方法,所以想着能否在数据读取的时候直接拼接好返回,网上搜了可通过for xml来实 ...
- jQuery 追加元素、拼接元素的方法总结(append、html、insertBefore、before等)
1. append & appendTo 的功能均为:在被选元素结尾(仍在元素内部)插入指定内容,但是内容和选择器的位置不同 (1) append()方法: $("#test&quo ...
- js中拼接HTML方式方法及注意事项
博主原创:未经博主允许,不得转载 在前端应用中,经常需要在js中动态拼接HTML页面,比如应用ajax进行局部刷新的时候,就需要在js中拼接HTML页面. 主要规则是将HTML页面的标签拼接为标签字符 ...
- tableView镶嵌加入CollectionView实现方法
创建一个继承UICollectionView的类QHCollectionView在QHCollectionView.h中添加接口方法 @interface QHCollectionView : UIC ...
- js 拼接table 的方法
<html> <head> <title>test page</title> <script type='text/javascript'> ...
随机推荐
- WebKit中WTFMove实现
WTFMove定义位置: WTF/Source/wtf/StdLibExtras.h,其定义如下: #define WTFMove(value) std::move<WTF::CheckMove ...
- 显示器AVG、DVI、HDMI、DisplayPort、Type-C、雷电接口
在近十年的发展,显示设备的接口发生了巨大的改变.以前使用比较多的是蓝色VGA接口,接著出现了白色的DVI接口,当遇到不同接口时,还得买转接头进行转接.后来,又有了HDMI等接口,现在则出现DP和USB ...
- DNS(6) -- DNS子域实现
目录 1. DNS子域 1.1 子域授权环境说明 1.2 子域授权实现 1.2.1 主域DNS服务器配置 1.2.2 子域DNS服务器配置 1.3 DNS转发域 1.3.1 DNS转发域概述 1.3. ...
- 一键自动化博客发布工具,用过的人都说好(cnblogs篇)
cnblogs和其他的博客平台相比会比较复杂,需要设置的项目也比较多一些,弄懂了cnblogs的实现方式,那么你应该对selenium的整个框架使用已经烂熟于心了. 除了正常的标题,内容,摘要之外,c ...
- Java简单实现MQ架构和思路02
Java MQ的100个功能清单 有重复的 一个消息队列(MQ)可以有以下功能: 批量发送消息:允许将多个消息打包成一个批次发送,可以减少网络传输开销和提高系统吞吐量. 消息过期时间:消息可以设置一个 ...
- apisix~自定义插件的部署
参考 https://docs.api7.ai/apisix/how-to-guide/custom-plugins/create-plugin-in-lua https://apisix.apach ...
- IPv6 — 基于邻居发现协议的通信方式
目录 文章目录 目录 前文列表 IPv6 的通信方式 NDP(Neighbor Discovery Protocol,邻居发现协议) IPv6 地址自动配置 无状态自动配置概述 前文列表 <IP ...
- PageOffice——动态填充Word模板并在线编辑
说明:使用pageoffice动态给word模板填充数据,插入图片.excel.word格式的文件和创建表格 一.准备工作: 本地创建一个doc或者docx格式的文件,在文件中需要插入数据的地方设置以 ...
- 三元运算符 JAVA12
Java 提供了一个特别的三元运算符(也叫三目运算符) 表示:条件运算符的符号表示为"? :",使用该运算符时需要有三个操作数,因此称其为三目运算符. 举例一 int x,y,z; ...
- Linux下的物理CPU和逻辑CPU
1.物理CPU (1)物理CPU是指:机器中插槽上的实际CPU个数. (2)物理CPU的数量:可以通过不重复的physical id来查询. (3)命令: cat /proc/cpuinfo | gr ...