本文介绍基于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无缝镶嵌、拼接栅格数据的方法的更多相关文章

  1. 分享一个递归无限级拼接Json的方法---ExtJs的TreePanel和TreeGrid均适用(Ef,Lambda,Linq,IQueryable,List)

    话不多说,先上实体类,如果你不是codefirst,就把它当成数据表结构. 下面是底层BaseDal获取数据的方法  (如果你没有Base类,直接写在你的DAL层和BLL层) 下面是BaseServi ...

  2. python—字符串拼接三种方法

    python—字符串拼接三种方法   1.使用加号(+)号进行拼接 字符串拼接直接进行相加就可以,比较容易理解,但是一定要记得,变量直接相加,不是变量就要用引号引起来,不然会出错,另外数字是要转换为字 ...

  3. Java 字符串拼接 五种方法的性能比较分析 从执行100次到90万次

    [请尊重原创版权,如需引用,请注明来源及地址] > 字符串拼接一般使用“+”,但是“+”不能满足大批量数据的处理,Java中有以下五种方法处理字符串拼接,各有优缺点,程序开发应选择合适的方法实现 ...

  4. 记一个jquery 无缝轮播的制作方法

    接触前端也很久了,今天才发现,要做好一个轮播,其实有很多东西需要考虑进去,否则做出来的轮播效果并不好,下面我就来做一个轮播,是依赖jquery来写的 1.要做轮播,首先需要的是HTML的内容,css的 ...

  5. EL中拼接字符串的方法

    近期在项目中碰到一个需要在JSP页面中比较两String类型的值的问题,于是想当然的写了如下代码: <c:if test="${'p'+longValue=='p1'}"&g ...

  6. Sql Server将一列字段拼接成字符串方法

    最近在项目中遇到个问题,需要将表中某列字段合并成字符串输出,如果直接通过代码全部读取出来,再遍历进行拼接显然不是最好的方法,所以想着能否在数据读取的时候直接拼接好返回,网上搜了可通过for xml来实 ...

  7. jQuery 追加元素、拼接元素的方法总结(append、html、insertBefore、before等)

    1. append & appendTo 的功能均为:在被选元素结尾(仍在元素内部)插入指定内容,但是内容和选择器的位置不同 (1) append()方法: $("#test&quo ...

  8. js中拼接HTML方式方法及注意事项

    博主原创:未经博主允许,不得转载 在前端应用中,经常需要在js中动态拼接HTML页面,比如应用ajax进行局部刷新的时候,就需要在js中拼接HTML页面. 主要规则是将HTML页面的标签拼接为标签字符 ...

  9. tableView镶嵌加入CollectionView实现方法

    创建一个继承UICollectionView的类QHCollectionView在QHCollectionView.h中添加接口方法 @interface QHCollectionView : UIC ...

  10. js 拼接table 的方法

    <html> <head> <title>test page</title> <script type='text/javascript'> ...

随机推荐

  1. 01. Linux 如何安装rvm和ruby

    参考: https://blog.csdn.net/qq_35641923/article/details/86493822 https://www.runoob.com/ruby/ruby-inst ...

  2. gorm 动态拼接查询条件

    结构体 type Mould struct { MouldId string `grom:"column:mouldID"` MouldInteriorID string `gro ...

  3. ansible系列(25)--ansible的notify和handlers

    1. notify和handlers Handlers 是一个触发器,同时是一个特殊的 tasks ,它无法直接运行,它需要被tasks 通知后才会运行.比如: httpd 服务配置文件发生变更,我们 ...

  4. .eslintrc.js 文件语法规则定义

    添加某个全局变量: globals: { 'ActiveXObject': true },

  5. EasyUI框架Datagrid(数据表格)的实现,以及Datagrid的分页显示(详解)

    在前端页面中使用EasyUI框架时,通常会使用EasyUI自带的datagrid(数据表格)样式,下面我们对datagrid样式进行简单的介绍,并且会对datagrid的分页显示进行详细的介绍. Ea ...

  6. Python 自动化爬虫利器 Playwright

    Python 自动化爬虫利器 Playwright Python Playwright 是一个基于 Node.js 的自动化测试库,它支持多种浏览器(Chrome.Firefox.Safari.Edg ...

  7. 三元运算符 JAVA12

    Java 提供了一个特别的三元运算符(也叫三目运算符) 表示:条件运算符的符号表示为"? :",使用该运算符时需要有三个操作数,因此称其为三目运算符. 举例一 int x,y,z; ...

  8. 【已解决】docker overlay2占用大量磁盘空间处理方法

    在使用docker容器的时候遇到了容量上的问题,做一个记录 处理方式1:在使用docker时,往往会出现磁盘空间不足,导致该问题的通常原因是因为docker中部署的系统输出了大量的日志内容. 此时,可 ...

  9. 互联网软件的安装包界面设计-Inno setup

    https://blog.csdn.net/oceanlucy/article/details/50033773 "安装界面太丑了,不堪入目!" "这界面应该属于20年代 ...

  10. kubernetes configmap配置方法

    configmap解释 在k8s运行期间会有一些依赖的配置文件,他们存在宿主机中的一个目录中或者代码里,如果配置放生变化,pod在另一台服务器启动,在没有这些配置的时候,可能会导致pod无法正常运行, ...