1. 程式人生 > 其它 >ENVI下根據需要生成特定型別、大小、規律的隨機資料

ENVI下根據需要生成特定型別、大小、規律的隨機資料

本文源自一個客戶的需求:“我想對影像的緯度求餘弦值,但是座標值不是存在畫素值中,這個該如何做”。

1.生成方法

ENVI中可以根據需要生成特定型別、大小、規律的隨機資料,在toolbox中,選擇/Raster Management/Generate Test Data,彈出介面如下

圖:Generate Image Parameters面板

 

  • 其中第一項中列出可以生成如固定值、水平漸變值、垂直漸變值、均勻分佈、正態分佈和高斯發散規律。
  • Value部分則根據不同型別可設定相應的引數。
  • 第二項設定輸出檔案的大小、行列號和資料型別
  • 第三項則設定輸出檔案或記憶體中。

2.應用

1)使用者需求分析

對一影像來講,ENVI中只顯示了影像的資料值,而經緯度資訊是根據標頭檔案內容中的左上角點座標和解析度隨時計算的,並不單獨存為一波段或檔案,故無法直接對緯度求餘弦值。

2) 解決方法

問題可分為生成緯度資料和緯度求餘弦兩步。以ENVI自帶的WorldDem(C:\Program Files\Harris\ENVI56\classic\data)檔案為例,操作如下:

a)檢視檔案的基本資訊

  在圖層列表中,右鍵開啟 view matedata

圖:Edit ENVI Header

 

可得知,該影象左上角經緯度為[-180,90],大小為3600*1800,解析度為[0.1°,0.1°]。

對應緯度影象應該為大小為3600*1800,解析度為0.1°豎向漸變的影象。

b)生成緯度資料

利用資料生成工具,對應引數設定如下:

圖:Generate Image Parameters引數設定

 

生成影象顯示效果如下

圖:初步緯度影象結果

得到的結果是最小值在左上角,從上到下值依次增大,最大值在左下角,而我們所需的緯度資料應該是從上到下依次減小,最大值在左上角,相當於把影象沿著第一行向上做個翻轉,所以需要根據資料值做一個運算,得到我們需要的影象。在本例中,只需將值的符號進行反轉即可,故在波段運算的表示式為-b1,b1為我們上一步生成的隨機影象。

圖:bandmath表示式

 

波段運算後圖像為預期得到的緯度資料分佈圖。

圖:修正後緯度影象結果

c)餘弦求解

直接波段運算求解。但要注意,cos函式的輸入要求必須是弧度,而咱們的資料是角度,故需要轉換下,最終波段運算表示式為COS(b1*!pi/180)或COS(b1*!dtor)。b1為上一步運算得到的緯度影象。