IDL基础语法与数据处理_第1页
IDL基础语法与数据处理_第2页
IDL基础语法与数据处理_第3页
IDL基础语法与数据处理_第4页
IDL基础语法与数据处理_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基础语法与数据处理李成clcug@163.comIDL2提纲IDL简介IDL主要特性IDL集成开发环境IDL应用程序基础IDL的图形图像处理3一、IDL简介IDL(InteractiveDataLanguage)交互式数据语言是一门专门针对图形图像处理与可视化的高级语言。IDL本身是集可视化、交互数据分析、大型商业开发为一体的高级集成开发环境,通过它可以很容易的构建图像处理与分析可视化的系统。4二、IDL主要特性科学数据分析及可视化

项目申请及项目快速实施商业软件开发语法简单、上手快,减少开发时间

•界面简洁、功能强大,程序效率高;

•强大的跨平台功能,一次编写程序多操作系统平台运行;

•灵活的外部程序接口,方便实现混编一体化程序;

•提供了有效的数据管理手段,方便进行数据管理操作;

•灵活多样的程序发布部署方式,实现程序共享。

5IDL应用领域航空航天遥感工程地球科学信号处理软件开发科研教育海洋科学测试技术防御工程数学分析天文气象……6基于IDL的开发的产品IDL-InteractiveDataLanguageION-IDLOntheNetVIP-VisualIDLProgrammingENVI-EnvironmentforVisualizingimagesRiverTools-AnalysisfordigitalterrainandrivernetworkmodelingNOESYS-Organize,visualize&shareHDFdata7ENVI是由遥感领域的科学家采用IDL开发的一套功能强大的、完整的遥感图像处理软件。ENVI架构非常灵活,提供一个功能全面的函数库(API),可以满足用户的个性化需求。ENVI/IDL与ArcGIS为遥感和GIS的一体化集成提供了一个最佳的解决方案。最新版本:ENVI5.1+IDL8.3ENVI/IDL8三、IDL集成开发环境命令行多文档面板工程窗口变量查看窗口输出日志窗口菜单栏和工具栏状态栏9四、IDL应用程序基础变量变量、语句不分大小写strtemp=0StrTemp=0变量无需事先说明

IDL>i=2IDL>print,i

2与C/C++不同!!!102.基本数据类型在数据类型的转换中,如果输出变量类型的字节数少于输入变量类型的字节数,将会发生截断现象。113.数组IDL是面向矩阵的语言,几乎所有运算都可以在数组上使用。数组元素的存储是按列进行的,与其它的语言有区别。数组下标是从零开始的,如果某些下标超出了范围,则该下标将被转换为在允许范围内的最小或最大的下标值。被整数除时需要谨慎:当一个整形变量被另一个整形变量除时,IDL程序经常会出错,有可能会出现一个零数组12零数组和索引数组的创建函数13矩阵操作A=bytarr(100,200)

列行b=tan(a)+10子区处理:A(*,1)表示第2行的所有列A(1:10,*)表示第2-11列的所有行14A#B表示A的列乘以B的行A##B表示A的行乘以B的列Transpose矩阵转置a[i,j]=a[j,i]……矩阵操作154.结构体结构体分为匿名结构体和署名结构体两种,匿名结构是指没有名字的结构。如果在使用过程中,结构成员的个数和类型可能发生变化,一般使用匿名结构;否则使用署名结构。匿名结构一般用于程序之间值的传递,署名结构主要用在事件结构中person={name:’jenny’,telephone:12345322}person={basicinfo,name:’jenny’,telephone:12345322}16

建立动态数据结构的有效工具,是实现IDL面向对象编程和Widget编程的基本要素之一。

IDL的指针与其他语言的指针有很大的不同,它不是指向存储的地址而仅仅是一个轻型的指向一个堆变量的引用(指针变量)。堆变量可以动态分配(数据类型和数组维数),这意味着传递指针变量就相当于传递动态数据。指针基本操作

创建:ptr=ptr_new([initexpr][,/allocate_heap][,/no_copy])

释放:ptr_free,ptr示例:person={name:’jenny’,telephone:12345322}ptrperson=ptr_new(person)Print,(*ptrperson).namePtr_free,ptrperson标量数组结构5.指针176、IDL程序批处理:由一系列IDL命令组成,以IDL->@batchfile方式运行。批处理文件运行时并不编译,因此使用控制结构时必须大量使用续行符($),给书写、理解造成困难。主程序:与批处理相似,但以end结束,以IDL->.runprofile方式运行。主程序运行时先编译,因此可以正常使用控制结构。过程:与主程序相似,但以proproname开始,以end结束。以IDL->proname方式运行(也可以先运行IDL->.compileproname,编译但不运行)。函数:与过程相似,但以functionfnname开始,以end结束,并以return语句返回一个IDL变量。以IDL->ret=fnname(para_list)方式运行。

在IDL系统中,一个过程或函数即为一个新的IDL命令。变量作用范围:批处理和主程序方式的变量为全局变量,可以在IDL开发环境中使用。过程和函数的变量为局部变量,只在过程和函数运行过程中有效。

参数传递

位置参数:在参数列表中按位置列出参数名,严格的顺序限制。通常用于必选参数。

定义:probatch,para1,para2,...

调用:batch,para1,para2,…

关键字参数:关键字参数与位置无关,且可以与位置参数混合位置。通常放在位置参数之后,用于可选参数。

定义:probatch,keywordname=keywordsymbol,...

调用:batch,keywordname=keywordsymbol,…batch,/keywordname

注意:keywordname用于定义,keywordsymbol用于调用。

引用传递和值传递:所有变量为引用传递,其值会被修改。系统变量、下标变量、表达式和常量均为值传递,原变量的值不被修改。1819关系运算符IDLC/C++等于eq==不等于ne!=小于等于le<=小于lt<大于等于ge>=大于gt>20常用控制语句Begin–EndIf–Then–ElseCaseXof–else–endcaseFor–DoWhile–DoRepeat–UntilExpr?Expr1:expr2(条件判断语句)简单程序示例21testabc过程名add函数名a,b参数(必给)type关键字(可选)运行结果:IDL>testabc,1,1.2运算结果为2.20000IDL>testabc,1,1.2,type=0运算结果为2.20000IDL>testabc,1,1.2,type=1运算结果为1.20000IDL>testabc,1,1.2,type=3无此运算类型!227、文件的读入输出处理文件的过程和函数1.打开文件、关闭文件openr,openw,openuclose2.读写文件读写文本文件:readf/printf读写二进制文件:readu/writeu8.IDL面向对象程序设计封装性继承性多态性231.对象定义格式:Proclassname_DEFINE struct={classname,data1:value1,….,dataN:valueN}EndProclassname::methodname,参数….,关键字…

语句序列end2.对象创建&销毁创建:object1=obj_new(’classname’)销毁:obj_destroy,object1249.GUI界面手写图形用户界面组成:基本容器(base)+各种组件(widget)消息响应Xmanager分发事件+消息响应函数(用户定义)25界面示例2627IDL提供了许多读写图像文件的函数,例如read_bmp、read_gif、read_jpeg、read_tiff、read_png、write_bmp、write_gif、write_jpeg、write_tiff、write_png等函数。五、IDL图形图像处理28常用格式(1)ASCII_TEMPLATE PresentsaGUIthatgeneratesatemplatedefininganASCIIfileformatASSOC AssociatesanarraystructurewithafileBINARY_TEMPLATE PresentsaGUIforinteractivelygeneratingatemplatestructureforusewithREAD_BINARYCDFRoutines CommonDataFormatroutinesEOSRoutines HDF-EOS(HierarchicalDataFormat-EarthObservingSystem)routinesHDF_BROWSER OpensGUItoviewcontentsofHDF,HDF-EOS,orNetCDFfileHDF_READ ExtractsHDF,HDF-EOS,andNetCDFdataandmetadataintoanoutputstructureIDLffDICOM ContainsthedataforoneormoreimagesembeddedinaDICOMpart10fileIDLffDXF Objectthatcontainsgeometry,connectivity,andattributesforgraphicsprimitivesIDLffShape Containsgeometry,connectivityandattributesforprimitivesaccessedfromESRIShapefilesMPEG_OPEN OpensanMPEGsequenceMPEG_SAVE SavesanMPEGsequencetoafileNCDFRoutines NetworkCommonDataFormatroutinesPRINT/PRINTF WritesformattedoutputtoscreenorfileREAD/READF ReadsformattedinputfromkeyboardorfileREAD_ASCII ReadsdatafromanASCIIfileREAD_BINARY ReadsthecontentsofabinaryfileusingapassedtemplateorbasiccommandlinekeywordsREAD_BMP ReadsMicrosoftWindowsbitmapfile(.BMP)READ_DICOM ReadsanimagefromaDICOMfileREAD_IMAGE ReadstheimagecontentsofafileandreturnstheimageinanIDLvariableREAD_INTERFILE ReadsInterfile(v3.3)fileREAD_JPEG ReadsJPEGfileREAD_PICT ReadsMacintoshPICT(version2)bitmapfileREAD_PNG ReadsPortableNetworkGraphics(PNG)fileREAD_PPM ReadsPGM(grayscale)orPPM(portablepixmapforcolor)fileREAD_SRF ReadsSunRasterFormatfile29常用格式(2)READ_SYLK ReadsSymbolicLinkformatspreadsheetfileREAD_TIFF ReadsTIFFformatfileREAD_WAV Readstheaudiostreamfromthenamed.WAVfileREAD_WAVE ReadsWavefrontAdvancedVisualizerfileREAD_X11_BITMAP ReadsX11bitmapfileREAD_XWD ReadsXWindowsDumpfileREADS ReadsformattedinputfromastringvariableREADU ReadsunformattedbinarydatafromafileSOCKET Opensaclient-sideTCP/IPInternetsocketasanIDLfileunitTAPRD ReadsthenextrecordonatapeTAPWRT WritesdatatoatapeWRITE_BMP WritesMicrosoftWindowsVersion3deviceindependentbitmapfile(.BMP)WRITE_IMAGE Writesanimageanditscolortablevectors,ifany,toafileofaspecifiedtypeWRITE_JPEG WritesJPEGfileWRITE_NRIF WritesNCARRasterInterchangeFormatrasterfileWRITE_PICT WritesMacintoshPICT(version2)bitmapfileWRITE_PNG WritesPortableNetworkGraphics(PNG)fileWRITE_PPM WritesPPM(TrueColor)orPGM(grayscale)fileWRITE_SRF WritesSunRasterFile(SRF)WRITE_SYLK WritesSYLK(SymbolicLink)spreadsheetfileWRITE_TIFF WritesTIFFfilewith1to3channelsWRITE_WAV Writestheaudiostreamtothenamed.WAVfileWRITE_WAVE WritesWavefrontAdvancedVisualizer(.WAV)fileWRITEU Writesunformattedbinarydatatoafile3031图像增强处理读入和显示图像Myimage=read_tiff(filepath('image.tif',$ subdir=['examples','data']))Tv,myimage;图像源源本本的显示出来,不进行拉伸处理Tvscl,myimage;显示之前将图像进行拉伸,也就是将图像的颜色值进行拉伸,以充分利用这个地颜色表。32对比增强处理阈值化利用EQ、NE、GE、GT、LE和LT,产生二值(黑白)图像。Tvscl,MyimageGT140颜色大于140的显示为白色Tvscl,myimageLT140颜色小于140地显示为白色33拉伸象素值将局部范围内的象素值拉伸到占据整个显示亮度的范围。Tvscl,Myimage>100大于100的象素Tvscl,myimage<140小于140的象素Tvscl,myimage>140<200140~200之间的象素34直方图均衡化 在许多图像中,象素的颜色值只占据整个颜色表的一小部分。将图像转化为在每一颜色上都有相同的象素点数的输出图像,就可以最大化地显示图形信息内容。TV,Hist_EQUAL(myimage)35平滑图像Smooth函数可以平滑图像,相当于低通滤波,消除部分的随即噪声。要确定好计算平均值的模板的大小。Tvscl,smooth(myimage,7)用7×7模板平滑图像。36锐化图像与平滑图像相对,要高亮显示图像中的对象边缘。方法一:从原始图象中减去该图像的平滑图像。Tvscl,float(myimage)-smooth(myimage,7)方法二:IDL提供了微分锐化处理函数,其中最常用的是梯度法。37梯度法中一个是罗伯特梯度法(Robertgradient),对应IDL中的ROBERTS函数。R=roberts(myimage)Tvscl,R梯度法中的另一个是索贝尔(Sobel)算子,利用两个核卷积。一个是垂直边缘效应最大,一个是水平边缘效应最大,两个卷积的最大值作为该点的输出值。So=sobel(myimage)Tvscl,so

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论