在之前的最小二乘法拟合直线-C++实现文章中有提过TVDI指数计算的方法,其中拟合的关键是怎么找到有效的NDVI(相当于自变量X)和LST(相当于因变量Y)这两组相对应的数据,即具体干湿边拟合的步骤是怎么样的。本文针对干湿边的拟合过程做一个详细的说明,如有不足之处恳请各位指教。

首先需要说明的一点是输入的NDVI和LST数据是行列数相等的数据,因此,可以以NDVI为横坐标,LST为纵坐标,得到NDVI-LST的散点图。根据NDVI-LST的散点图,就能得到每个NDVI值对应的LST的最大最小值,也就是我们要求的干边和湿边。下面就具体说说如何得到每个NDVI值对应的LST的最大最小值,以为后面的线性拟合做数据准备。

1. 将NDVI从0.01开始,步长设为0.01,这样就能将NDVI从0~1之间等分为100份,分别为0.01,0.02,0.03,,,,,0.99,1.0。(可根据具体情况进行修改)

2. 在NDVI影像中查找范围在之间的值的索引,然后根据这些索引,从LST影像中获取对应索引位置的LST数据,根据这些获取的LST的数据,求出这些LST数据中的最大最小值(可按5%求平均以提高精度),这样在中就能找到一个最大LST和最小LST。

3. 接着循环做第2步,这里只需循环100次,因为在这里我把NDVI等分为100份。这样就能得到NDVI-LST对应的干湿边的散点图,如下图所示:

图1 NDVI-LST对应的干湿边的散点图

4. 经过以上3步,我们就得到了可以用来做拟合干湿边的数据,其中

NDVI = {  0.01,  0.02,  0.03,,,,,,0.99, 1.0  }

LSTmin = {  Tmin1,  Tmin2,  Tmin3,  ,,,,,,Tmin99,Tmin100  }

LSTmax = {  Tmax1,  Tmax2,  Tmax3,  ,,,,,,Tmax99,Tmax100  }

但是直接用上面的数据做拟合会存在比较大的误差,为了得到更加精确的干湿边直线方程,需要对NDVI和LST数据进行一个有效值范围的筛选,剔除那些不合适的值,已使拟合结果更加精确。在这里,给定NDVI的有效值范围为0.2~0.8,LST的有效值范围为230~330(单位:开尔文),至于这些有效值的范围可以对影像做一个直方图统计获得,也可以根据经验给定相应的有效值范围。

5. 先找出符合NDVI有效值范围条件的数据,如下所示:

NDVI = { 0.20,0.21,0.22,,,,0.79, 0.80  }

LSTmin = {  Tmin20,  Tmin21,  Tmin22,  ,,,,,,Tmin79,Tmin80  }

LSTmax = {  Tmax20,  Tmax21,  Tmax22,  ,,,,,,Tmax79,Tmax80  }

6. 找出符合LST有效值范围条件的LSTmin索引和LSTmax索引,分别存储在两个数组中。

比如找到的230 << LSTmin << 330的索引数组为IndexMin,230 << LSTmax << 330的索引数组为IndexMax

则拟合干边的最终数据为:

其中的范围为

拟合湿边的最终数据为:

其中的范围为

7. 将以上得到的干湿边的最终拟合数据带入之前最小二乘拟合直线的函数中,即可求出干湿边直线方程的系数,以及拟合的相关系数的平方。

8. 根据得到的干湿边方程利用TVDI公式进行TVDI的计算,得到最终的TVDI影像图。

说明:具体实现可以用自己喜欢的语言实现,比如C++,IDL等

参考:http://blog.sina.com.cn/s/blog_764b1e9d0100wdrr.html

TVDI中线性拟合干湿边的步骤相关推荐

  1. vb中线性拟合_vb曲线拟合

    展开全部 我就给你贴出frm文件吧.其他的工程文件也贴不出.希望对你有用. VERSION 5.00 Object = "{5E9E78A0-531B-11CF-91F6-C2863C385 ...

  2. vb中线性拟合_VB做曲线拟合

    本文主要是代码,附带详细注释 最小二乘法多次曲线拟合的VB实现 '窗体代码 Option Explicit '********************************************* ...

  3. 基于ENVI/IDL 的一键化实现LST-NDVI的干湿边方程拟合,并得到TVDI计算结果图

    ENVI/IDL (5.3版本)一键化实现LST-NDVI的干湿边方程拟合,并得到TVDI计算结果图 0 原理介绍 利用IDL将NDVI异常值进行剔除,NDVI取值范围为0.2~1(植被覆盖区),对反 ...

  4. 教你简单解决过拟合问题(附公式)

    作者:Ahmed Gad 翻译:韩海畴 校对:丁楠雅 本文约2000字,建议阅读5分钟. 本文带大家认识了什么是过拟合,并且示范了用正则化的方法来避免过拟合的问题. 多项式回归&过拟合 你可能 ...

  5. 过拟合和欠拟合_现代深度学习解决方案中的两大挑战:拟合和欠拟合

    全文共2306字,预计学习时长5分钟 对机器学习模型而言,最糟糕的两种情况无非是构建无用的知识体系,或是从训练数据集中一无所获.在机器学习理论中,这两种现象分别被称为过拟合和欠拟合,是现代深度学习解决 ...

  6. Matlab的插值与拟合

    文章目录 前言 在命令行窗口中完成插值与拟合 一.插值与拟合 二.使用步骤 1.插值 2.拟合 前言 在命令行窗口中完成插值与拟合 一.插值与拟合 插值:在离散数据的基础上补插连续函数,使得这条连续曲 ...

  7. 一种基于贝塞尔曲线的终端定位轨迹拟合方法

    一种基于贝塞尔曲线的终端定位轨迹拟合方法 专利名称一种基于贝塞尔曲线的终端定位轨迹拟合方法 技术领域本发明属于卫星导航领域,具体涉及一种基于贝塞尔曲线的终端定位轨迹拟合方法. 背景技术目前有很多设备( ...

  8. matlab自定义函数拟合散点

    假若现在我们有如下的二维散点: x=1:10; y=[99.999 50.499 20.333 10.788 4.8111 2.7500 1.2322 0.4861 0.29501 0.1113498 ...

  9. Java 使用 Apache commons-math3 线性拟合、非线性拟合实例(带效果图)

    Java 使用 CommonsMath3 的线性和非线性拟合实例,带效果图 例子查看 GitHub Gitee 在线查看 运行src/main/java/org/wfw/chart/Main.java ...

  10. 遗传算法优化数据拟合

    你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页.如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识. 提示:文章写完后,目录可 ...

最新文章

  1. tensorflow tf.data.Dataset.from_tensor_slices() (创建一个“数据集”,其元素是给定张量的切片)
  2. ImportError: libclntsh.so.11.1: cannot open shared object file: No such file or directory解决方案
  3. 小说的逻辑与反逻辑_以理性的数学逻辑构筑推理小说
  4. luogu P2742 【模板】二维凸包 / [USACO5.1]圈奶牛Fencing the Cows
  5. Oracle DECODE函数的语法介绍
  6. java图片添加水印
  7. windows只能单向ping通
  8. 网络安全--风险评估
  9. Google点击没有反应怎么办?Google卸载不了怎么办?Google安装不了怎么办?
  10. sync.Pool 使用
  11. 微信公众平台开发教程第20篇-新手解惑40则
  12. Android 10(Q)GMS(cts/vts/gts)认证总结
  13. Day04| 第四期-谷歌应用商店的App分析
  14. 最大似然估计算法(简单,通俗易懂)
  15. java反射机制是什么_java中的反射机制是什么?
  16. pytorch torchvision.ops.roi_align
  17. java 对es的操作
  18. idea maven项目提示程序包xxx不存在,找不到符号xxx的解决办法
  19. 【2022】软件著作权登记流程及费用
  20. 暴力破解zip加密压缩包

热门文章

  1. linux bluefish制作网页,基于Linux文本模式的网页编辑器Bluefish
  2. 竞价被恶意点击怎么办?该怎么屏蔽?
  3. Poi导入校验因单元格格式产生的空对象问题
  4. python中temp的用法_请问Python里temp是什么意思?
  5. 加油站(贪心)【LeetCode】
  6. LaTex 在线编辑编译,生成PDF —— Overleaf
  7. 十、Linux开发板控制LED灯设备
  8. c语言语法错误标识符,error C2061: 语法错误: 标识符“std”
  9. 前端使用jspdf生成PDF通过ajax传输后台生成PDF文件
  10. 2022 年第十二届 MathorCup D 题 移动通信网络站址规划和区域聚类问题附matlab代码