?

基于IDL直接圖形法的圖像顯示

2017-04-09 14:01李琳琳
環球人文地理·評論版 2017年1期
關鍵詞:編程語言代碼組件

李琳琳

摘要:本文發揮IDL強大的圖形處理功能,將圖像文件,利用IDL編程語言,顯示在窗口中,并通過指針傳遞,將文本路徑實時更新,進而得到一個完整的獨立式的圖形數據讀取、顯示、參數傳遞等程序。

關鍵詞:IDL語言;圖形可視化

引言:IDL全稱交互是數據語言。是一個擁有強大的數據處理能力,與多種編程語言交互式編程,兼容ODBC數據庫和跨平臺應用開發的一門編程語言。由于其功能強大,簡單易學,使其應用領域頗為廣泛。例如,美國國家航空航天局(NASA)在太空飛船中的使用IDL研究紫外線放射現象;生物專家利用IDL開發用于觀察人類大腦的核磁共振圖的MRIViewer。還包括大家所熟知的ENVI,也是利用IDL編寫開發。

1 系統開發環境

IDL的圖像顯示可以基于兩種圖像顯示方法實現。一種是直接利用用戶設定的數據進行顯示,這種方法稱為直接圖形法。另一種是利用對象引導程序,即將數據顯示在創建顯示窗口的對象窗口里。對于一個程序而言,界面與事件處理則是基礎組成部分。

界面與事件處理一般步驟:

(1)需求分析,列出需要的功能模塊;

(2)設計流程圖;

(3)設計邏輯圖;

(4)事件功能的實現;

(5)編寫功能函數;

(6)代碼集成,成果顯示。

2 界面設計

整個程序的界面組成是由的widget_base()組件作為界面容器,在該容器中添加了widget_button()(按鈕組件)、widget_draw()(顯示組件)以及widget_text()(文本組件)等構成。

利用widget_base()創建一個容器組件,即程序顯示框架。在file按鈕下,創建文件打開與關閉按鈕,通過xsize、ysize設置其大小,利用uname實現組件功能。其代碼如下:

tlb=widget_base(mbar=mbar,/column,/frame)

wfile=widget_button(mbar,value='file',xsize=50,ysize=50)

wexit=widget_button(wfile,value='exit',uname='Exit')

tOpen=widget_button(TBbase,value='open.bmp',/bitmap,$

uname='Open',xsize=40,ysize=40,xoffset=200,yoffset=150)

為了讓程序界面設計更加友好,因此在程序界面底部添加程序運行版本信息組件。

text=widget_text(tlb,xsize=.6,ysize=.5,value='IDL 8.0 LBV BandMath ')

3 TIFF格式數據的圖像顯示

由于遙感影像來源廣泛,因此,數據格式也大不相同。例如,ASCII碼(文本)文件需要利用READF函數進行讀??;JPEG格式文件需要用READ_JPEG()函數讀??;使用READ_IMAGE讀取BMP圖像。本文主要針對TIFF格式數據進行讀取與顯示。

1)數據讀取。TM數據擁有多波段數據信息,為了有目的性的選讀文件,利用n_elements()函數,對輸入的文件進行判斷。對于不符合要求的文件,實施警告處理并要求重新篩選。本文采用簡單的兩組TIFF影像數據進行疊加顯示。代碼如下:

file=dialog_pickfile(title='pick file',filter='*.tif')

n=n_elements(file)

if n eq '2' then begin

aa=file[0]

a=read_tiff(aa)

bb=file[1]

b=read_tiff(bb)

endif else begin

war=dialog_message('Erro',/error)

return

endelse

2)數據疊加顯示。衛星數據是按照行進行存儲的,與IDL數據掃描的原理一樣。因此,可以利用數組方法,將得到的兩幅影像進行疊加運算。代碼如下:

image_result=[a+b]

tv,image_result

4 代碼的集成及圖像顯示

兩個事件之間利用指針傳遞,從而實現界面與事件處理之間的關系。首先,對文件讀取路徑實施初始化,然后對文件讀取路徑進行實時更新,并顯示在程序界面上。

實現主要代碼如下:

Pro A

pState={WINID:WinID,xtext:xtext,$

curpath:'D: '}

widget_control,tlb,set_uvalue=ptr_new(pState)

END

Pro B

widget_control,ev.top,get_uvalue=pstate

END

如果指針傳遞成功,疊加后的數據影像便可以完整顯示在創建的顯示區域了。

參考文獻

[1]董彥卿 IDL程序設計——數據可視化與ENVI二次開發。高等教育出版社

[2]韓培友 IDL可視化分析與應用。西北工業大學出版社

[3]蓋迎春 IDL 在青藏鐵路地理信息系統中的應用研究,2007(6),冰川凍土

猜你喜歡
編程語言代碼組件
無人機智能巡檢在光伏電站組件診斷中的應用
壓力-體積轉換在CFC編程語言中的實現解析
新型碎邊剪刀盤組件
U盾外殼組件注塑模具設計
Java編程語言的特點與應用
創世代碼
創世代碼
創世代碼
創世代碼
淺談不同編程語言對計算機軟件開發的影響
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合