IDL编程实现图像处理

合集下载

IDL界面实现算法

IDL界面实现算法

IDL界面实现算法IDL(Interactive Data Language)是一种数据处理和可视化的编程语言,主要用于描述、分析和可视化科学和工程数据。

IDL界面的实现是通过用户界面和算法交互的方式,方便用户使用IDL语言进行数据处理和分析。

下面将介绍IDL界面实现算法的步骤和具体应用。

首先,IDL界面的实现需要使用IDL的开发环境,例如IDL Workbench或IDL Studio。

用户可以通过界面中的按钮、菜单和输入框与IDL语言进行交互,进行数据处理、分析和可视化。

在IDL界面中实现算法的一般步骤如下:1.界面设计:根据算法的需求和用户的使用习惯,设计界面的布局和元素。

界面设计应该直观、简洁,方便用户理解和操作。

常见的界面元素包括按钮、菜单、输入框、输出框等。

2. 界面编程:使用IDL语言编写界面的代码,包括界面元素的创建、布局和事件处理等。

IDL界面的编程可以使用IDL的自带函数库或者第三方界面库(如IDLace)进行。

3.算法实现:根据算法的具体逻辑,使用IDL语言编写算法的代码。

算法可以包括数据处理、分析、模型训练等步骤。

4.界面与算法的交互:在界面编程的代码中,通过调用算法代码,将界面中的输入数据传递给算法进行处理,并将算法的结果显示在界面的输出框中。

同时,界面还可以提供一些参数的输入框,让用户可以调整算法的参数。

5.错误处理和优化:在编程过程中,需要考虑各种可能的错误情况,并进行适当的错误处理。

另外,为了提高界面的性能和用户体验,还可以对代码进行优化,提高算法的运行效率。

IDL界面的实现可以应用于各种领域的数据处理和分析任务。

例如,在地理信息系统中,可以使用IDL界面来加载地图数据、进行空间统计分析和可视化;在气象预测中,可以使用IDL界面来导入气象数据、进行天气模拟和绘制预测图;在生物医学领域,可以使用IDL界面来导入生物图像数据、进行图像分割和特征提取等。

总之,IDL界面实现算法是一种将科学计算和数据处理与用户交互相结合的方法,可以方便用户进行数据处理和分析。

IDL批处理(转)

IDL批处理(转)
3、ENVI批处理模式
以批处理模式运行ENVI能够让用户在命令模式下使用ENVI。这种能力在以下几种情况下非常有用:
(1)用户主要使用IDL工作但偶尔需要用到ENVI的函数;
(2)用户希望创建定制的应用程序其中混合了IDL代码和ENVI函数;
(3)用户希望进行大量的ENVI处理而无需人工干预。
IDL批处理(转)
2010-10-28 22:11:19| 分类: 个人日记 |举报|字号 订阅
原文地址:如何应用IDL批处理图像大小 ———裁剪作者:mloyj
;This Function will Return the Start path
Function SourcePath
在ENVI中,我们常常需要对一系列的命令重复使用,我们就可以把这些命令组合起来,保存为一个IDL的批处理文件,方便我们日后使用
2、IDL批处理文件
批处理文件是以.pro结尾的一种包括了一系列的IDL命令的文件。运行这类文件和用户在IDL命令行中敲入的命令完全一样。
plot,data
假设批处理文件在C:\temp目录下,名称为batch_plot.pro,我们就可以在命令行中通过下面的方法调用
[plain] view plaincopyprint?
IDL>cd,'C:\temp'
IDL>arr = findgen(400)
IDL>@batch_plot
return
endif
envi_file_query, fid, ns=ns, nl=nl, nb=nb
dims = [-1, 0, ns-1, 0, nl-1]
pos = lindgen(nb)

idl中write_tiff的用法

idl中write_tiff的用法

idl中write_tiff的用法一、简介在I DL(I nt er ac tiv e Da ta La ng ua ge)中,wr it e_ti ff是一个用于将图像数据保存为TI F F(Ta gg ed Im ag eF i le Fo rm at)格式的函数。

T I FF是一种常用的无压缩图像文件格式,具有广泛的应用场景。

二、功能说明w r it e_ti ff函数主要用于将ID L中的图像数据保存为T IFF格式的图像文件。

该函数具有以下特点:-支持保存单通道或多通道图像-支持保存灰度图像或彩色图像-支持保存8位、16位或32位的图像数据-支持设置图像的分辨率和色彩空间-支持保存字节顺序为大端序或小端序的图像数据三、函数语法```w r it e_ti ff,f il ena m e,im ag e_da ta,[O P TI ON S]```f i l e n a m e-:要保存的T IF F图像文件名(包含路径)i m a g e_d a t a-:要保存的图像数据O P T I O N S-:可选参数,用于指定保存图像的一些选项,如分辨率、色彩空间等。

四、使用示例下面是一个使用w rit e_t if f函数保存图像数据的示例代码:```;读取原始图像数据r e ad_i ma ge,i ma ge_d at a,'p at h/to/or i gi na l_im ag e.png';调用w ri te_t if f函数保存图像数据为T IF F格式w r it e_ti ff,'pa th/t o/ou tp ut_i ma ge.t if f',i ma ge_d ata,RE SO L U T IO N=300,CO LO RS=3```上述代码将读取名为'o ri gi na l_im ag e.p n g'的图像数据,并将其保存为名为'o ut pu t_im a ge.t if f'的T IFF图像文件。

实验三 IDL图像处理

实验三 IDL图像处理

实验三IDL图像处理目的:掌握IDL图像处理的手段内容:1、显示图像事实上,任何类型的二维数据集都可认为是一幅图像。

但是要在一个8位的显示设备上显示图像数据,就必须将图像数据调整为 0~255之间的字节型数值。

(在一个24-bit的显示设备上,24位图像的RGB值必须调整成字节型数值)。

因为图像总是以字节型数值显示,所以图像总是以字节型数组来存储。

但是无论图像是怎样存储的,在IDL中,图像总是由两个显示图像的IDL命令:TV和TVScl以字节型数值来完成。

可用TV和TVScl两个IDL命令中的任一个来显示图像。

这两个命令几乎在各个方面都是一样的,包括能与之一起使用的关键字。

仅仅在一个方面不同:TVScl将图像数据调整为与IDL运行时所用颜色数目相适应的字节型数值。

注意,与Plot,Surface和Contour命令不同,TV和TVScl命令在显示图像之前不删除窗口中已显示的内容。

一般情况下这个问题影响不大,但有时候也会产生一些麻烦。

如果想要一个空白的显示窗口来显示图像数据,无论当前窗口上的显示内容是什么,都可用一个简单的命令Erase来删除。

IDL>Erase要了解这两个命令是怎样工作的,需要有一些图像数据用于处理。

用命令LoadData来打开图像数据集Ali and Dave。

将要处理这两幅图像数据中的第二幅图像。

键入IDL>image=LoadData(10)IDL>image=image[*,*,1]打开一个显示窗口,装上灰度颜色表, 用TV命令显示图像:IDL>Window,0,XSize=192,YSize=192IDL>TV,image所得图像:IDL和Research Systems公司的创始人--David Stern的图像。

People.dat数据集中的另外一幅图像是Ali Bahrami,Research Systems公司的第一位员工。

他们两人依然致力于IDL的开发因为使用的是TV命令,所以数据没有经过拉伸就被送到显示器中显示。

IDL 图像处理第7讲 图像增强与空间滤波

IDL 图像处理第7讲 图像增强与空间滤波

w1 w4 w7
w2 w5 w8
w3 w6 w9
If the gray levels of the pixels under the mask are denoted by z1, z2, . . . , z9 then the response of the linear mask is the sum
6
Smoothing Filters
Smoothing lters are used for blurring and noise reduction. Blurring is a common preprocessing step to remove small details when the objective is location of large objects. High-frequency noise is reduced by the lowpass characteristic of smoothing lters. Smoothing lters have all positive weights. The weights are typically chosen to sum to unity so that the average brightness values is maintained. 1 1 1 1 49 × 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
DIP Lecture 7
1Hale Waihona Puke Noise Suppression by Image Averaging
In applications such as astronomy noisy images are unavoidable. Noise can be reduced by averaging several images of the same scene with independent noise. Here we simulate the process by adding copies of an image with independent noise with = 0 and σ = 64 levels. Original

IDL入门教程二上简单图形显示II

IDL入门教程二上简单图形显示II

第二章简单的图形显示本章概述科学分析最基本的能力就是以简单的线画图、等值线图和曲面图来显示所研究的数据。

在这一章中,将知道用这些方式来显示数据是多么容易。

也将学会用系统变量和关键字来定位和标注简单的图形显示。

将学会如下几点:1.如何用Plot命令将数据显示为线画图。

2.如何用Surface和Shade_Surf命令将数据显示为曲面图。

3.如何用Contour命令将数据显示为等值线图。

4.如何在显示窗口上定位显示图形。

5.如何用公共关键字来标注和自定义图形显示。

IDL中简单的图形显示IDL中一个简单的图形显示可认为是栅格图形的一个实例。

也就是说,可用Plot, Contour或者Surface命令通过一种算法来点亮显示窗口内相应的像素点而形成栅格图形。

这种栅格图形没有永久性。

换言之,一旦IDL显示图形和点亮相应的像素点后,IDL就不知道自己做了些什么。

这意味着,在用户重置图形窗口大小时,IDL无法进行相应的响应。

总之,在这种模式下图形显示不能被刷新,除非再次输入图形命令。

但是,栅格图形命令在IDL中被广泛应用,因为它们简单快捷。

而且,将看到,如果仔细地用栅格图形命令编写IDL程序时,可以克服许多与栅格图形命令相关的限制。

本章将介绍一些关于如何用栅格图形命令写出可调节尺寸的IDL图形窗口或进行直接硬拷贝输出的必备概念。

本章的图形命令都是Research Systems公司所说的直接图形。

另外一种被Research Systems公司称为对象图形的图形方式在IDL5.0中被引入。

对象图形使用时相对难一点,但它在IDL编程方面更强大更灵活。

对象图形不是为了在命令行使用而开发的,而是用在IDL的程序中,特别是用于带有界面的程序中(带有图形用户界面的程序)。

本书对对象图形不做介绍。

创建线画图生成线画图最简单的方法是绘出一个矢量。

可以用LoadData命令打开时序数据集。

LoadData命令是本书所带的一个IDL程序(详细细节参考第5页的“本书中所用的IDL程序和数据文件”)。

《遥感图像处理及ENVI IDL操作实践》第十一章 图像滤波

《遥感图像处理及ENVI IDL操作实践》第十一章 图像滤波

与膨胀(Dilate),开运算(Open)与闭运算(Close)。
结构元素:具有某种确定形状的基本结构元素,如一定大小
的矩形、圆或者菱形等。
三、卷积滤波—形态学操作(2)
腐蚀:用结构元素对图像进行探测,找出图像中可以放下该 结构元素的区域。腐蚀是一种消除边界点,使边界向内部收
缩的过程。可以用来消除小且无意义的目标物。
1 2 6 6
4 3 8 8
3 4 9 8
1
2
1
4
3
1
5 5 5
2
7 5 7 6 6
2 3
3 4
8 6 8 8
ቤተ መጻሕፍቲ ባይዱ
4
9 8 9
6
6 7 7
5
6
7
8
9
三、卷积滤波—中值滤波(2)
中值滤波效果
原始图像
3*3窗口滤波后的图像
三、卷积滤波—形态学操作(1)
形态学操作:用结构元素对图像进行探测,找出图像中可以 放下该结构元素的区域(或互补区域),包括:腐蚀(Erode)
二、小波变换(2)
概貌
水平细节
垂直细节 对角细节
三、卷积滤波—均值滤波(1)
以模块运算系数表示,即:
1 1 1 1 1 1 H1 9 1 1 1
1 1 5 5 5
2 2 7 7 6
1 2 6 6 7
4 3 8 8 8
3 4 9 8 9
1
2
1
4
3
1
5 5 5
2 3
7 4 7 6 6
三、卷积滤波—形态学操作(5)
问题的提出: • 腐蚀处理→目标物的面积减少; • 膨胀处理→目标物的面积增大。 • 开、闭运算解决了图像腐蚀与膨胀处理后目标物面积 变化的问题。 开运算:使用同一个结构元素对图像先腐蚀再膨胀的运算。 闭运算:使用同一个结构元素对图像先膨胀再腐蚀的运算。

使用IDL的12个小技巧

使用IDL的12个小技巧

使用IDL的12个小技巧IDL(Interactive Data Language)是一种用于科学数据分析和可视化的编程语言,广泛应用于天文学、地球科学、气象学等领域。

下面列举了一些使用IDL的小技巧,以便更高效地使用该语言:1.使用多行注释:在IDL中,可以使用分号';'来添加注释。

然而,为了使代码更易读,可以使用/*注释内容*/的形式添加多行注释。

2.使用内建函数:IDL提供了许多内建函数来执行各种操作,如数学计算、数组处理、文件读写等。

在编写代码时,了解和使用这些函数可以有效地简化代码,并提高执行效率。

3. 显示帮助文档:IDL的帮助文档非常丰富,包括每个函数的定义、用法示例以及相关的参考资料。

在IDL命令行中,可以通过help函数来获取一些函数的帮助文档。

例如,help, function_name。

4. 使用通配符匹配文件名:在IDL中,可以使用*和?通配符来匹配文件名。

例如,read_ file, 'data*.txt'将读取以data开头、以.txt结尾的所有文件。

5.使用绘图模板:IDL提供了各种图形模板,可以用于创建各种类型的图表,如散点图、线图、柱状图等。

使用这些模板可以大大简化创建和自定义图形的过程。

6.使用图像处理工具:IDL提供了强大的图像处理工具包,可以对图像进行滤波、增强、分割等操作。

熟悉这些工具和函数,可以使图像处理过程更加高效和准确。

7. 使用结构体进行数据组织:IDL使用结构体(structure)来组织和存储复杂的数据。

结构体可以包含不同类型和大小的变量,使得数据的访问和操作更具有灵活性。

8.使用FOR循环和FOREACH迭代:在IDL中,使用FOR循环可以方便地对数据进行迭代处理。

另外,使用FOREACH迭代方式可以更加简洁地遍历数组元素。

9.使用条件语句:IDL提供了丰富的条件语句,如IF、ELSEIF和CASE语句,用于根据不同的条件执行不同的代码块。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

IDL编程实现图像处理pro exampleENVI, /RESTORE_BASE_SAVE_FILESENVI_BATCH_INITtlb=widget_base(column=1,mbar=mbar,title='Example',tlb_frame_attr=1,xoffset=500,yo ffset=100,xsize=800,ysize=600,RESOURCE_NAME = 'example')filemenu=widget_button(mbar,value='File')fileopt1=widget_button(filemenu,value='Open',event_pro='open_event')fileopt2=widget_button(filemenu,value='Save',/menu)Save1= widget_button(fileopt2,value = 'binary',uname = 'savebinary')Save2= widget_button(fileopt2,value = 'jpg',uname = 'savejpg')Save3= widget_button(fileopt2,value = 'bmp',uname = 'savebmp')Save4= widget_button(fileopt2,value = 'tif',uname = 'savetif')Save5= widget_button(fileopt2,value = 'dat',uname = 'savedat')fileopt3=widget_button(filemenu,value='Exit',event_pro='exit_event',/separator)editmenu=widget_button(mbar,value='Edit')processopt1=widget_button(editmenu,value='K-L Transform',event_pro='K_L_event',/separator)processopt2=widget_button(editmenu,value='HistogramEqualization',event_pro='HistogramEqualization_event',/separator)processopt3=widget_button(editmenu,value='NDVI',event_pro='NDVI_event',/separator) processopt5=widget_button(editmenu,value='Image Smoothing',event_pro='IS_event')processopt4=widget_button(editmenu,value='edge enhancement',/menu)imageopt1=widget_button(processopt4,value='robort',event_pro='robort_event') imageopt2=widget_button(processopt4,value='sobel',event_pro='sobel_event') imageopt3=widget_button(processopt4,value='prewitt',event_pro='prewitt_event')helpmenu=widget_button(mbar,value='Help')idlhelp=widget_button(helpmenu,value='IDL help',event_pro='help_event')iconbase=widget_base(tlb,row=1,/frame)subdir='resource/bitmaps'mapfile=filepath('open.bmp',subdir=subdir)iconopt1=widget_button(iconbase,value=mapfile,/bitmap,event_pro='open_event') mapfile=filepath('save.bmp',subdir=subdir)iconopt2=widget_button(iconbase,value=mapfile,/bitmap,event_pro='Save_event') button5=widget_button(iconbase,value='new.bmp',/bitmap,event_pro='new_event') button3=widget_button(iconbase,value='zoom_in.bmp',/bitmap,uvalue='suoxiao') button4=widget_button(iconbase,value='zoom_out.bmp',/bitmap,uvalue='fangda')help = widget_button(iconbase,value = filepath('help.bmp',subdirectory =['resource','bitmaps']),/bitmap,event_pro='help_event')draw=widget_draw(tlb,x_scroll_size=780,y_scroll_size=550,xsize=1000,ysize=1000,xof fset=200,/button_events)file=''data=BYTARR(2,2,2)pdata = bytarr(2,2,2)status=0pstate=ptr_new({draw:draw,file:file,data:ptr_new(data),pdata:ptr_new(pdata)}) widget_control,tlb,set_uvalue=pstatewidget_control,tlb,/realizeXMANAGER, 'example', tlb,/no_blockendpro open_event,eventcompile_opt IDL2envi,/restore_base_save_filesenvi_batch_initwidget_control,event.top,get_uvalue=pstatefilters = ['*.jpg','*.bmp','*.img','*.tif','*.jpeg','*.png']file = DIALOG_PICKFILE(/READ, FILTER = filters)envi_open_file,file,r_fid=fidif fid eq -1then returnenvi_file_query,fid,dims=dims,nb=nb,nl=nl,ns=ns,bnames=bnamespos=indgen(nb)(*pstate).file=filebasename=file_basename(file)f1=strpos(basename,'.')type=strmid(basename,f1+1,strlen(basename)-f1)type=strupcase(type)widget_control,(*pstate).draw,get_value=drawwset,drawCASE TYPE OF'JPEG': BEGINREAD_JPEG,FILE,DATATV,DATA,/TRUE*((*PSTATE).DATA)=DATAEND'PNG' : BEGINREAD_PNG,FILE,DATATV,DATA,/TRUE*((*PSTATE).DATA)=DATAEND'JPG': BEGINREAD_JPEG,FILE,DATATV,DATA,/TRUE*((*PSTATE).DATA)=DATAEND'BMP': BEGINDATA=READ_BMP(FILE)TV,DATA,/TRUE*((*PSTATE).DATA)=DATAEND'DAT': BEGINDATA = BYTARR(NS,NL,NB)OPENR,LUN,FILE,/GET_LUNREADU,LUN,DATATVSCL,DATAFREE_LUN,LUN*((*PSTATE).DATA)=DATAEND'IMG': BEGINdata = bytarr(ns,nl,nb)data= ENVI_GET_DATA(fid=fid, dims=dims, pos=pos) WIDGET_CONTROL,(*pstate).draw, GET_VALUE=drawWSET, drawtvscl,data,/order*((*pstate).data)=dataEND'TIF': BEGINDATA=BYTARR(NS,NL,NB)DATA= ENVI_GET_DATA(FID=FID, DIMS=DIMS, POS=POS)TVSCL,DATA,/ORDER*((*PSTATE).DATA)=DATAEND'TIFF': BEGINDATA=BYTARR(NS,NL,NB)DATA= ENVI_GET_DATA(FID=FID, DIMS=DIMS, POS=POS)TVSCL,DATA,/ORDER*((*PSTATE).DATA)=DATAENDENDCASEendpro save_event,eventwidget_control,event.top,get_uvalue=pstatefile=(*pstate).filesavefile= dialog_pickfile(title='save',path = 'D:')if savefile eq''then beginvoid = dialog_message('No file!',/error)returnendifa=strpos(savefile, '.')b=strlen(savefile)type = strmid(savefile,a+1, b-a)case type of'save':beginfile=(*pstate).fnameENVI_OPEN_FILE,file,r_fid=fidif fid eq -1then beginvoid=DIALOG_MESSAGE('file inputed error',/information)ENVI_BATCH_EXITreturnendiffilename=DIALOG_PICKFILE(title='choose file saved position',filter='*.jpg')write_jpeg, filename+'.jpg', *((*pstate).data), /true end'jpg' : beginwrite_JPEG,savefile,dataend'png' : beginwrite_png,savefile,dataend'bmp' : beginwrite_bmp,savefile,dataend'tif': beginwrite_tiff,savefile,dataend'dat': beginopenw,lun,binary,/get_lunwriteu,savefile,dataendendcasehelp, event, /structIF event.SELECT THEN WIDGET_CONTROL, event.TOP, /DESTROYendpro help_event,evevtcompile_opt IDL2envi,/restore_base_save_filesenvi_batch_initONLINE_HELPENDpro exit_event, eventhelp, event, /structIF event.SELECT THEN WIDGET_CONTROL, event.TOP, /DESTROYendpro K_L_event,eventcompile_opt IDL2envi,/restore_base_save_filesenvi_batch_initwidget_control,event.top,get_uvalue=pstatefile=(*pstate).fileenvi_open_file,file,r_fid=fidif fid eq -1then beginreturnendifenvi_file_query,fid,dims=dims,nb=nbpos=lindgen(nb)envi_doit,'envi_stats_doit',fid=fid,pos=pos,dims=dims,mean=avg,eval=eval,evec=evec ,comp_flag=5envi_doit,'pc_rotate',$fid=fid,pos=pos,dims=dims,mean=avg,eval=eval,evec=evec,$out_dt=4,out_name=out_name,out_nb=nb,r_fid=r_fid,/forward,/in_memoryenvi_file_query,r_fid,dims=dims,nb=nb,ns=ns,nl=nldata =bytarr(ns,nl,nb)data= envi_get_data(fid=fid,dims=dims,pos=pos)window,1,xsize=ns,ysize=nl,title='spatial principal component analysis'tv,data,/orderendpro ndvi_event,eventcompile_opt IDL2envi,/restore_base_save_filesenvi_batch_initwidget_control,event.top,get_uvalue=pstatefile=(*pstate).filedata=*((*pstate).data)envi_open_file,file,r_fid = fidenvi_file_query, fid, dims=dims,nb=nb,ns=ns,nl=nlpos = [4,3] - 1envi_doit,'ndvi_doit',fid=fid, pos=pos, dims=dims,/check, o_min=0, o_max=255,r_fid=r_fid,/inme_moryenvi_file_query,r_fid,dims = dims,nb = nb,ns=ns,nl=nldata = BYTARR(ns,nl,nb)data= ENVI_GET_DATA(fid=r_fid, dims=dims, pos=pos)window,3,title='NDVI'TVSCL,data,/orderendpro HistogramEqualization_event,eventwidget_control,event.top,get_uvalue=pstatedata=*((*pstate).data)file=(*pstate).fileenvi_open_file,file,r_fid=fidenvi_file_query,fid,dims=dims,nb=nb,ns=ns,nl=nlWINDOW, 1, TITLE = 'The original image histogram'plot,HISTOGRAM(data)result =HIST_EQUAL(data); ADAPT_WINDOW, 2,xsize = ns,ysize = nl,TITLE = 'histogram matching'TV, result,/orderWINDOW, 3, TITLE = 'After the image histogram matching'plot,HISTOGRAM(result)endpro IS_event,eventwidget_control,event.top,get_uvalue=pstatefile=(*pstate).fileenvi_open_file,file,r_fid=fidenvi_file_query,fid,dims=dims,nb=nb,ns=ns,nl=nlif fid eq -1then returndata=smooth(*((*pstate).data),3)window,1,xsize=ns,ysize=nl,title='smoothing'tvscl,data,/orderendpro robort_event,eventwidget_control,event.top,get_uvalue=pstatedata=*((*pstate).data)file=(*pstate).fileenvi_open_file,file,r_fid=fidenvi_file_query,fid,dims=dims,nb=nb,ns=ns,nl=nlDATA=DATA(*,*,1)DATA=ROBERTS(DATA)window,1,xsize=ns,ysize=nl,title='roberts'tvscl,data,/orderendpro sobel_event,eventwidget_control,event.top,get_uvalue=pstateDATA=*((*PSTATE).DATA)file=(*pstate).fileenvi_open_file,file,r_fid=fidenvi_file_query,fid,dims=dims,nb=nb,ns=ns,nl=nlDATA=DATA(*,*,1)DATA= SOBEL(DATA)window,1,xsize = ns,ysize = nl,title='sobel' TVSCL,data,/ORDERendpro prewitt_event,eventfile=(*pstate).fileENVI_OPEN_FILE,file,r_fid=fidENVI_FILE_QUERY,fid,dims = dims,nb = nb,ns=ns,nl=nl IF fid EQ -1THEN BEGINvoid=DIALOG_MESSAGE('window',/information)ENVI_BATCH_EXITRETURNendifresult=prewitt(*((*pstate).data))window,1,xsize = ns,ysize = nl,title='window' TVSCL,result,/order*((*pstate).pdata) = resultWIDGET_CONTROL,ev.top,get_Uvalue = pstate end。

相关文档
最新文档