最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

从数学和编程的角度去看遥感影像和处理

互联网 admin 2浏览 0评论

从数学和编程的角度去看遥感影像和处理

遥感影像究竟做什么,怎么做

  说长不长说短也不短,已经3年过去了…3年来没有闭目造车,而是发挥了那个爱玩的少年的天性…尽力的去探索一些东西…也没算白费时光,至少做到了做出了一些东西,遥感影像就是个栅格矩阵,里面有你要的物理属性信息,你所要做的就是处理它,提供给决策部门,提供决策信息.处理的时候你用软件也行,可见即所得(但是批量服务经常需要版权),用编程的方法呢,可以解决批量问题,但是上手需要很久的时间.但是软件其实就是程序封上了一层皮而已(在这篇文章里我排除硬件方面的知识,主要是我对硬件的了解得很少 )

问题

  有人问我,胖友,这个该怎么做该怎么实现…我不知道该怎么回答,在这个信息社会里,消息非常的多,但是真正有用的信息是需要通过自己的提炼然后转变成自己的知识的…其实,很多时候百度东找一个工具,西找一个工具,西看一个回答,东看一个回答,时间全部浪费了.很多时候,真正有用的信息都被藏在了别人自己开发的说明书里,可惜,遥感的软件大多数是外国公司的所以只能硬啃英文,遥感软件说多不多,说少也不少,只是很多人在学校里学习的时候就习惯了ENVI、Eardas.然后就坚定的认为,以后处理影像只能用这两个软件…殊不知,像国外的易康等,国内还有沈阳农业大学李国春教授的RSD处理GF,FY,WV等等软件,
但是其实我更想说的是,软件更多的只是一种工具,一种帮你实现你想看到的东西的一种工具,编程也一样.真正重要的是后面的数学原理

穿过问题看本质

图1. 阿猫阿狗矩阵  

  上地理参考和投影信息,带上地理参考和投影信息的矩阵,如果你能把两者分解出来处理完矩阵之后再组合回去.什么ENVI、Eardas可有可无…这个矩阵里可以是飞机火车,也可以是阿狗阿猫的…演变到现在这么多的数据,只要找到适合自己的数据即可了…

图2. 高斯投影  

熟悉不能再熟悉的图.但是如果我用计算机语言去寻找描述呢?

图3. 地理参考计算机表达(MATLAB) 图4. 地理参考计算机表达(python)     图5. 地理参考计算机表达(IDL)   前些天在阅读USGS L8 level1官方文档的时候我发现了几段特别有意思的话..   图6. NASA关于GEOTIFF表述  

geotiff是我们经常处理的图像文件
而USGS 官网描述L8 Level1的时候加了那么一段话

  GeoTIFF定义了一组标记图像文件格式(TIFF)标记,这些标记描述了与地理TIFF图像相关的地图和大地测量信息。GeoTIFF是一种将光栅图像绑定到已知模型空间或地图投影并描述这些投影的方法。元数据格式提供与图像数据关联的地理信息。但是,TIFF文件结构允许元数据和图像数据编码到同一个文件中。
  这也应证了我之前的猜想,而经过许多次尝试之后我也发现确实如此,只要你能层层抽丝剥茧,抽出矩阵,抽出地理信息.那么接下来的任务就交给了计算机和数学 **所以人们说万物CS和Math是有道理的** 在上面我用MATLAB、python、IDL都抽出了地理信息..经过分离之后我只需要处理这个矩阵就行了.

以计算NDVI为例

很多人依靠ENVI 的tool NDVI去计算,甚至连用band math都不会,连band math怎么用都不知道…但是如果你有NDVI的计算公式…你会IDL,那么其实ENVI里计算NDVI就不是事情了…
N D V I = N I R − R e d N I R + R e d NDVI = \frac{NIR-Red}{NIR + Red} NDVI=NIR+RedNIR−Red​
这里两个波段不就是两个矩阵吗.做个矩阵减法和加法再做个矩阵除法就解决了问题…然后把地理信息和投影信息放回去不就ok了吗…有了这个思路,IDL,MATLAB,Python只要读+计算+写出不就好了吗~
于是我都尝试了一遍

图7. LaTeX排版的NDVI计算程序(IDL)

图8. LaTeX排版的NDVI计算程序(MATLAB)

图9. LaTeX排版的NDVI计算程序(python)  

这三个代码块是我用LaTeX排出来的…我就不放代码了…挺简单的…
虽然MATLAB,IDL,Python在数据显示的精度方面会有差异,但是在ENVI里最后显示.NDVI并没有任何偏差.见下图咯!

图10.三种语言运行后的NDVI图像在ENVI中显示  

  这也就是我之前所说的其实软件、语言其实并不是事情.
重要的是你懂数学原理并且把他去用计算机语言实现
.

只说不做不行,只会“所见即所得、百度一下你就知道不行”,更有甚者“淘宝一键解君愁,只要我有钱问题就不是问题更不行”

简单分析下3种语言

  其实MATLAB、IDL、Python对于遥感来说MATLAB和IDL是更好的,因为它们专业就是处理矩阵的,而且从我以前写的许多程序来看,其实IDL处理问题的效率比MATLAB更高…

  MATLAB最早是用Fortran写的到了后面才有部分用cpp开始写了…毫无疑问,这是许多人会用的语言。但是它拥有太多的包,一下载盗版的就是30G左右,不尊重版权,不过现在开始有了MATLAB Oneline 可以在线编辑了. 不过确实处理矩阵方便,而且句法简单明了其次,本地的帮助文档真的很友好,plus:开源程度也不错,国内有专门的ilovematlab论坛~~

图10.MATLAB的帮助文档  

  再看看IDL,IDL的内核是cpp,ENVI是用IDL写的,IDL是我觉得我学的语言里最糟心的了,没有之一了…句法混乱…如果不是要学我是真的不想用~,但是既然学了就用一用吧…帮助文档还行…其实看惯MATLAB还是看不惯233333,真的只想给差评…
最糟糕的是,它是闭源的,基本找不到一些程序,只能自己编.

图11.IDL的帮助文档  

  python底层也是用cpp写的,其实原来并不应该归到遥感里面去的,但是经过学习思考之后发现其实它能在遥感领域逐渐火起来也是有原因的…

  1. 句法比较简单.就跟写英语一样!
  2. 让你彻底体会到开源的快乐!
  3. 像gdal、tensorflow等等的库的开发出来,让机器学习、深度学习有了应用.

  但是不得不说python处理矩阵依靠numpy库很大程度上会限制它的运行效率…
  其次它的帮助文档要上网站,对于离线用用户不友好,在cmd或者terminal只能看部分的文档

图12.python的帮助文档  

  三者都是编译式的语言,同时都能让你体会到OOM(面对对象编程)的快感.但是编译的语言…还是没法和C++,C去相比的…
  但是其实没有必要去比较语言究竟哪个好哪个坏,只要适用自己的领域就好,就好比你不会希望用MATLAB去做网页,你不会希望用C++去做矩阵的处理…
只有适宜自己的语言,用上并且写出东西了,那才是真正有用的.

总结

  正如你之前看到的那样,用各种语言都能做出需要的东西,请不要再局限自己于用什么做…也不要问我究竟用什么做…好累~~
找到自己的擅长的使用就好了…
真正重要的是,把数学原理给抽出来加上计算机的实现…最后写出东西来…
  plus:很多时候官方的documentation比百度有用的多.
花了一天的时间在写代码和写blog…自己有很多收获,更希望人们能理性的思考问题.在信息社会中不要失去了一个人最重要的能力——思考.
  最后,放上自己玩的LaTeX笔记…祝大家汪汪汪汪汪汪汪节快乐.

从数学和编程的角度去看遥感影像和处理

遥感影像究竟做什么,怎么做

  说长不长说短也不短,已经3年过去了…3年来没有闭目造车,而是发挥了那个爱玩的少年的天性…尽力的去探索一些东西…也没算白费时光,至少做到了做出了一些东西,遥感影像就是个栅格矩阵,里面有你要的物理属性信息,你所要做的就是处理它,提供给决策部门,提供决策信息.处理的时候你用软件也行,可见即所得(但是批量服务经常需要版权),用编程的方法呢,可以解决批量问题,但是上手需要很久的时间.但是软件其实就是程序封上了一层皮而已(在这篇文章里我排除硬件方面的知识,主要是我对硬件的了解得很少 )

问题

  有人问我,胖友,这个该怎么做该怎么实现…我不知道该怎么回答,在这个信息社会里,消息非常的多,但是真正有用的信息是需要通过自己的提炼然后转变成自己的知识的…其实,很多时候百度东找一个工具,西找一个工具,西看一个回答,东看一个回答,时间全部浪费了.很多时候,真正有用的信息都被藏在了别人自己开发的说明书里,可惜,遥感的软件大多数是外国公司的所以只能硬啃英文,遥感软件说多不多,说少也不少,只是很多人在学校里学习的时候就习惯了ENVI、Eardas.然后就坚定的认为,以后处理影像只能用这两个软件…殊不知,像国外的易康等,国内还有沈阳农业大学李国春教授的RSD处理GF,FY,WV等等软件,
但是其实我更想说的是,软件更多的只是一种工具,一种帮你实现你想看到的东西的一种工具,编程也一样.真正重要的是后面的数学原理

穿过问题看本质

图1. 阿猫阿狗矩阵  

  上地理参考和投影信息,带上地理参考和投影信息的矩阵,如果你能把两者分解出来处理完矩阵之后再组合回去.什么ENVI、Eardas可有可无…这个矩阵里可以是飞机火车,也可以是阿狗阿猫的…演变到现在这么多的数据,只要找到适合自己的数据即可了…

图2. 高斯投影  

熟悉不能再熟悉的图.但是如果我用计算机语言去寻找描述呢?

图3. 地理参考计算机表达(MATLAB) 图4. 地理参考计算机表达(python)     图5. 地理参考计算机表达(IDL)   前些天在阅读USGS L8 level1官方文档的时候我发现了几段特别有意思的话..   图6. NASA关于GEOTIFF表述  

geotiff是我们经常处理的图像文件
而USGS 官网描述L8 Level1的时候加了那么一段话

  GeoTIFF定义了一组标记图像文件格式(TIFF)标记,这些标记描述了与地理TIFF图像相关的地图和大地测量信息。GeoTIFF是一种将光栅图像绑定到已知模型空间或地图投影并描述这些投影的方法。元数据格式提供与图像数据关联的地理信息。但是,TIFF文件结构允许元数据和图像数据编码到同一个文件中。
  这也应证了我之前的猜想,而经过许多次尝试之后我也发现确实如此,只要你能层层抽丝剥茧,抽出矩阵,抽出地理信息.那么接下来的任务就交给了计算机和数学 **所以人们说万物CS和Math是有道理的** 在上面我用MATLAB、python、IDL都抽出了地理信息..经过分离之后我只需要处理这个矩阵就行了.

以计算NDVI为例

很多人依靠ENVI 的tool NDVI去计算,甚至连用band math都不会,连band math怎么用都不知道…但是如果你有NDVI的计算公式…你会IDL,那么其实ENVI里计算NDVI就不是事情了…
N D V I = N I R − R e d N I R + R e d NDVI = \frac{NIR-Red}{NIR + Red} NDVI=NIR+RedNIR−Red​
这里两个波段不就是两个矩阵吗.做个矩阵减法和加法再做个矩阵除法就解决了问题…然后把地理信息和投影信息放回去不就ok了吗…有了这个思路,IDL,MATLAB,Python只要读+计算+写出不就好了吗~
于是我都尝试了一遍

图7. LaTeX排版的NDVI计算程序(IDL)

图8. LaTeX排版的NDVI计算程序(MATLAB)

图9. LaTeX排版的NDVI计算程序(python)  

这三个代码块是我用LaTeX排出来的…我就不放代码了…挺简单的…
虽然MATLAB,IDL,Python在数据显示的精度方面会有差异,但是在ENVI里最后显示.NDVI并没有任何偏差.见下图咯!

图10.三种语言运行后的NDVI图像在ENVI中显示  

  这也就是我之前所说的其实软件、语言其实并不是事情.
重要的是你懂数学原理并且把他去用计算机语言实现
.

只说不做不行,只会“所见即所得、百度一下你就知道不行”,更有甚者“淘宝一键解君愁,只要我有钱问题就不是问题更不行”

简单分析下3种语言

  其实MATLAB、IDL、Python对于遥感来说MATLAB和IDL是更好的,因为它们专业就是处理矩阵的,而且从我以前写的许多程序来看,其实IDL处理问题的效率比MATLAB更高…

  MATLAB最早是用Fortran写的到了后面才有部分用cpp开始写了…毫无疑问,这是许多人会用的语言。但是它拥有太多的包,一下载盗版的就是30G左右,不尊重版权,不过现在开始有了MATLAB Oneline 可以在线编辑了. 不过确实处理矩阵方便,而且句法简单明了其次,本地的帮助文档真的很友好,plus:开源程度也不错,国内有专门的ilovematlab论坛~~

图10.MATLAB的帮助文档  

  再看看IDL,IDL的内核是cpp,ENVI是用IDL写的,IDL是我觉得我学的语言里最糟心的了,没有之一了…句法混乱…如果不是要学我是真的不想用~,但是既然学了就用一用吧…帮助文档还行…其实看惯MATLAB还是看不惯233333,真的只想给差评…
最糟糕的是,它是闭源的,基本找不到一些程序,只能自己编.

图11.IDL的帮助文档  

  python底层也是用cpp写的,其实原来并不应该归到遥感里面去的,但是经过学习思考之后发现其实它能在遥感领域逐渐火起来也是有原因的…

  1. 句法比较简单.就跟写英语一样!
  2. 让你彻底体会到开源的快乐!
  3. 像gdal、tensorflow等等的库的开发出来,让机器学习、深度学习有了应用.

  但是不得不说python处理矩阵依靠numpy库很大程度上会限制它的运行效率…
  其次它的帮助文档要上网站,对于离线用用户不友好,在cmd或者terminal只能看部分的文档

图12.python的帮助文档  

  三者都是编译式的语言,同时都能让你体会到OOM(面对对象编程)的快感.但是编译的语言…还是没法和C++,C去相比的…
  但是其实没有必要去比较语言究竟哪个好哪个坏,只要适用自己的领域就好,就好比你不会希望用MATLAB去做网页,你不会希望用C++去做矩阵的处理…
只有适宜自己的语言,用上并且写出东西了,那才是真正有用的.

总结

  正如你之前看到的那样,用各种语言都能做出需要的东西,请不要再局限自己于用什么做…也不要问我究竟用什么做…好累~~
找到自己的擅长的使用就好了…
真正重要的是,把数学原理给抽出来加上计算机的实现…最后写出东西来…
  plus:很多时候官方的documentation比百度有用的多.
花了一天的时间在写代码和写blog…自己有很多收获,更希望人们能理性的思考问题.在信息社会中不要失去了一个人最重要的能力——思考.
  最后,放上自己玩的LaTeX笔记…祝大家汪汪汪汪汪汪汪节快乐.

发布评论

评论列表 (0)

  1. 暂无评论