网站首页  词典首页

请输入您要查询的论文:

 

标题 基于IDL直接图形法的图像显示
范文

    李琳琳

    

    摘要:本文发挥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),冰川冻土

随便看

 

科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。

 

Copyright © 2004-2023 puapp.net All Rights Reserved
更新时间:2025/3/13 0:31:49