從數學和編程的角度去看遙感影像和處理

遙感影像究竟做什麼,怎麼做

說長不長說短也不短,已經3年過去了…3年來沒有閉目造車,而是發揮了那個愛玩的少年的天性…盡力的去探索一些東西…也沒算白費時光,至少做到了做出了一些東西,遙感影像就是個柵格矩陣,裏面有你要的物理屬性信息,你所要做的就是處理它,提供給決策部門,提供決策信息.處理的時候你用軟件也行,可見即所得(但是批量服務經常需要版權),用編程的方法呢,可以解決批量問題,但是上手需要很久的時間.但是軟件其實就是程序封上了一層皮而已(在這篇文章裏我排除硬件方面的知識,主要是我對硬件的瞭解得很少 )

問題

總有人問我,胖友,這個該怎麼做該怎麼實現…我不知道該怎麼回答,在這個信息社會裏,消息非常的多,但是真正有用的信息是需要通過自己的提煉然後轉變成自己的知識的…其實,很多時候百度東找一個工具,西找一個工具,西看一個回答,東看一個回答,時間全部浪費了.很多時候,真正有用的信息都被藏在了別人自己開發的說明書裏,可惜,遙感的軟件大多數是外國公司的所以只能硬啃英文,遙感軟件說多不多,說少也不少,只是很多人在學校裏學習的時候就習慣了ENVI、Eardas.然後就堅定的認爲,以後處理影像只能用這兩個軟件…殊不知,像國外的易康等,國內還有瀋陽農業大學李國春教授的RSD處理GF,FY,WV等等軟件,
但是其實我更想說的是,軟件更多的只是一種工具,一種幫你實現你想看到的東西的一種工具,編程也一樣.真正重要的是後面的數學原理

穿過問題看本質

在這裏插入圖片描述
其實遙感影像不過就是一個矩陣加上一個投影信息,帶上地理參考和投影信息的矩陣,如果你能把兩者分解出來處理完矩陣之後再組合回去.什麼ENVI、Eardas可有可無…這個矩陣裏可以是飛機火車,也可以是阿狗阿貓的…演變到現在這麼多的數據,只要找到適合自己的數據即可了…
在這裏插入圖片描述
熟悉不能再熟悉的圖.但是如果我用計算機語言去尋找描述呢?
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
前些天在閱讀USGS L8 level1官方文檔的時候我發現了幾段特別有意思的話…
在這裏插入圖片描述
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就不是事情了…
NDVI=NIRRedNIR+RedNDVI = \frac{NIR-Red}{NIR + Red}
這裏兩個波段不就是兩個矩陣嗎.做個矩陣減法和加法再做個矩陣除法就解決了問題…然後把地理信息和投影信息放回去不就ok了嗎…有了這個思路,IDL,MATLAB,Python只要讀+計算+寫出不就好了嗎~
於是我都嘗試了一遍
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
這三個代碼塊是我用LaTeX排出來的…我就不放代碼了…挺簡單的…
雖然MATLAB,IDL,Python在數據顯示的精度方面會有差異,但是在ENVI裏最後顯示.NDVI並沒有任何偏差.見下圖咯!在這裏插入圖片描述
這也就是我之前所說的其實軟件、語言其實並不是事情.
重要的是你懂數學原理並且把他去實現.

只說不做不行,只會“所見即所得、百度一下你就知道不行”,更有甚者“淘寶一鍵解君愁,只要我有錢問題就不是問題更不行”

簡單分析下3種語言

其實MATLAB、IDL、Python對於遙感來說MATLAB和IDL是更好的,因爲它們專業就是處理矩陣的,而且從我以前寫的許多程序來看,其實IDL處理問題的效率比MATLAB更高…

MATLAB最早是用Fortran寫的到了後面纔有部分用cpp開始寫了…毫無疑問,這是許多人會用的語言。但是它擁有太多的包,一下載盜版的就是30G左右,不尊重版權,不過現在開始有了MATLAB Oneline 可以在線編輯了. 不過確實處理矩陣方便,而且句法簡單明瞭其次,本地的幫助文檔真的很友好,plus:開源程度也不錯,國內有專門的ilovematlab論壇~~
在這裏插入圖片描述

再看看IDL,IDL的內核是cpp,ENVI是用IDL寫的,IDL是我覺得我學的語言裏最糟心的了,沒有之一了…句法混亂…如果不是要學我是真的不想用~,但是既然學了就用一用吧…幫助文檔還行…其實看慣MATLAB還是看不慣233333,真的只想給差評…
最糟糕的是,它是閉源的,基本找不到一些程序,只能自己編.
在這裏插入圖片描述
python也是用cpp寫的,其實原來並不應該歸到遙感裏面去的,但是經過學習思考之後發現其實它能在遙感領域逐漸火起來也是有原因的…

  1. 句法比較簡單.就跟寫英語一樣!
  2. 讓你徹底體會到開源的快樂!
  3. 像gdal、tensorflow等等的庫的開發出來,讓機器學習、深度學習有了應用.

但是不得不說python處理矩陣依靠numpy庫很大程度上會限制它的運行效率…
其次它的幫助文檔要上網站,對於離線用用戶不友好,在cmd或者terminal只能看部分的文檔

在這裏插入圖片描述
三者都是編譯式的語言,同時都能讓你體會到OOM(面對對象編程)的快感.但是編譯的語言…還是沒法和C++,C去相比的…
但是其實沒有必要去比較語言究竟哪個好哪個壞,只要適用自己的領域就好,就好比你不會希望用MATLAB去做網頁,你不會希望用C++去做矩陣的處理…
只有適宜自己的語言,用上並且寫出東西了,那纔是真正有用的…

總結

正如你之前看到的那樣,用各種語言都能做出需要的東西,請不要再侷限自己於用什麼做…也不要問我究竟用什麼做…好累~~
找到自己的擅長的使用就好了…
真正重要的是,把數學原理給抽出來加上計算機的實現…最後寫出東西來…
plus:很多時候官方的documentation比百度有用的都.
花了一天的時間在寫代碼和寫blog…自己有很多收穫,更希望人們能理性的思考問題.在信息社會中不要失去了一個人最重要的能力——思考.
最後,放上自己玩的LaTeX筆記…祝大家汪汪汪汪汪汪汪節快樂.
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章