IDL基礎(chǔ)語法與數(shù)據(jù)處理_第1頁
IDL基礎(chǔ)語法與數(shù)據(jù)處理_第2頁
IDL基礎(chǔ)語法與數(shù)據(jù)處理_第3頁
IDL基礎(chǔ)語法與數(shù)據(jù)處理_第4頁
IDL基礎(chǔ)語法與數(shù)據(jù)處理_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

基礎(chǔ)語法與數(shù)據(jù)處理李成clcug@163.comIDL2提綱IDL簡介IDL主要特性IDL集成開發(fā)環(huán)境IDL應(yīng)用程序基礎(chǔ)IDL的圖形圖像處理3一、IDL簡介IDL(InteractiveDataLanguage)交互式數(shù)據(jù)語言是一門專門針對圖形圖像處理與可視化的高級(jí)語言。IDL本身是集可視化、交互數(shù)據(jù)分析、大型商業(yè)開發(fā)為一體的高級(jí)集成開發(fā)環(huán)境,通過它可以很容易的構(gòu)建圖像處理與分析可視化的系統(tǒng)。4二、IDL主要特性科學(xué)數(shù)據(jù)分析及可視化

項(xiàng)目申請及項(xiàng)目快速實(shí)施商業(yè)軟件開發(fā)語法簡單、上手快,減少開發(fā)時(shí)間

?界面簡潔、功能強(qiáng)大,程序效率高;

?強(qiáng)大的跨平臺(tái)功能,一次編寫程序多操作系統(tǒng)平臺(tái)運(yùn)行;

?靈活的外部程序接口,方便實(shí)現(xiàn)混編一體化程序;

?提供了有效的數(shù)據(jù)管理手段,方便進(jìn)行數(shù)據(jù)管理操作;

?靈活多樣的程序發(fā)布部署方式,實(shí)現(xiàn)程序共享。

5IDL應(yīng)用領(lǐng)域航空航天遙感工程地球科學(xué)信號(hào)處理軟件開發(fā)科研教育海洋科學(xué)測試技術(shù)防御工程數(shù)學(xué)分析天文氣象……6基于IDL的開發(fā)的產(chǎn)品IDL-InteractiveDataLanguageION-IDLOntheNetVIP-VisualIDLProgrammingENVI-EnvironmentforVisualizingimagesRiverTools-AnalysisfordigitalterrainandrivernetworkmodelingNOESYS-Organize,visualize&shareHDFdata7ENVI是由遙感領(lǐng)域的科學(xué)家采用IDL開發(fā)的一套功能強(qiáng)大的、完整的遙感圖像處理軟件。ENVI架構(gòu)非常靈活,提供一個(gè)功能全面的函數(shù)庫(API),可以滿足用戶的個(gè)性化需求。ENVI/IDL與ArcGIS為遙感和GIS的一體化集成提供了一個(gè)最佳的解決方案。最新版本:ENVI5.1+IDL8.3ENVI/IDL8三、IDL集成開發(fā)環(huán)境命令行多文檔面板工程窗口變量查看窗口輸出日志窗口菜單欄和工具欄狀態(tài)欄9四、IDL應(yīng)用程序基礎(chǔ)變量變量、語句不分大小寫strtemp=0StrTemp=0變量無需事先說明

IDL>i=2IDL>print,i

2與C/C++不同!??!102.基本數(shù)據(jù)類型在數(shù)據(jù)類型的轉(zhuǎn)換中,如果輸出變量類型的字節(jié)數(shù)少于輸入變量類型的字節(jié)數(shù),將會(huì)發(fā)生截?cái)喱F(xiàn)象。113.數(shù)組IDL是面向矩陣的語言,幾乎所有運(yùn)算都可以在數(shù)組上使用。數(shù)組元素的存儲(chǔ)是按列進(jìn)行的,與其它的語言有區(qū)別。數(shù)組下標(biāo)是從零開始的,如果某些下標(biāo)超出了范圍,則該下標(biāo)將被轉(zhuǎn)換為在允許范圍內(nèi)的最小或最大的下標(biāo)值。被整數(shù)除時(shí)需要謹(jǐn)慎:當(dāng)一個(gè)整形變量被另一個(gè)整形變量除時(shí),IDL程序經(jīng)常會(huì)出錯(cuò),有可能會(huì)出現(xiàn)一個(gè)零數(shù)組12零數(shù)組和索引數(shù)組的創(chuàng)建函數(shù)13矩陣操作A=bytarr(100,200)

列行b=tan(a)+10子區(qū)處理:A(*,1)表示第2行的所有列A(1:10,*)表示第2-11列的所有行14A#B表示A的列乘以B的行A##B表示A的行乘以B的列Transpose矩陣轉(zhuǎn)置a[i,j]=a[j,i]……矩陣操作154.結(jié)構(gòu)體結(jié)構(gòu)體分為匿名結(jié)構(gòu)體和署名結(jié)構(gòu)體兩種,匿名結(jié)構(gòu)是指沒有名字的結(jié)構(gòu)。如果在使用過程中,結(jié)構(gòu)成員的個(gè)數(shù)和類型可能發(fā)生變化,一般使用匿名結(jié)構(gòu);否則使用署名結(jié)構(gòu)。匿名結(jié)構(gòu)一般用于程序之間值的傳遞,署名結(jié)構(gòu)主要用在事件結(jié)構(gòu)中person={name:’jenny’,telephone:12345322}person={basicinfo,name:’jenny’,telephone:12345322}16

建立動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)的有效工具,是實(shí)現(xiàn)IDL面向?qū)ο缶幊毯蚖idget編程的基本要素之一。

IDL的指針與其他語言的指針有很大的不同,它不是指向存儲(chǔ)的地址而僅僅是一個(gè)輕型的指向一個(gè)堆變量的引用(指針變量)。堆變量可以動(dòng)態(tài)分配(數(shù)據(jù)類型和數(shù)組維數(shù)),這意味著傳遞指針變量就相當(dāng)于傳遞動(dòng)態(tài)數(shù)據(jù)。指針基本操作

創(chuàng)建: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標(biāo)量數(shù)組結(jié)構(gòu)5.指針176、IDL程序批處理:由一系列IDL命令組成,以IDL->@batchfile方式運(yùn)行。批處理文件運(yùn)行時(shí)并不編譯,因此使用控制結(jié)構(gòu)時(shí)必須大量使用續(xù)行符($),給書寫、理解造成困難。主程序:與批處理相似,但以end結(jié)束,以IDL->.runprofile方式運(yùn)行。主程序運(yùn)行時(shí)先編譯,因此可以正常使用控制結(jié)構(gòu)。過程:與主程序相似,但以proproname開始,以end結(jié)束。以IDL->proname方式運(yùn)行(也可以先運(yùn)行IDL->.compileproname,編譯但不運(yùn)行)。函數(shù):與過程相似,但以functionfnname開始,以end結(jié)束,并以return語句返回一個(gè)IDL變量。以IDL->ret=fnname(para_list)方式運(yùn)行。

在IDL系統(tǒng)中,一個(gè)過程或函數(shù)即為一個(gè)新的IDL命令。變量作用范圍:批處理和主程序方式的變量為全局變量,可以在IDL開發(fā)環(huán)境中使用。過程和函數(shù)的變量為局部變量,只在過程和函數(shù)運(yùn)行過程中有效。

參數(shù)傳遞

位置參數(shù):在參數(shù)列表中按位置列出參數(shù)名,嚴(yán)格的順序限制。通常用于必選參數(shù)。

定義:probatch,para1,para2,...

調(diào)用:batch,para1,para2,…

關(guān)鍵字參數(shù):關(guān)鍵字參數(shù)與位置無關(guān),且可以與位置參數(shù)混合位置。通常放在位置參數(shù)之后,用于可選參數(shù)。

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

調(diào)用:batch,keywordname=keywordsymbol,…batch,/keywordname

注意:keywordname用于定義,keywordsymbol用于調(diào)用。

引用傳遞和值傳遞:所有變量為引用傳遞,其值會(huì)被修改。系統(tǒng)變量、下標(biāo)變量、表達(dá)式和常量均為值傳遞,原變量的值不被修改。1819關(guān)系運(yùn)算符IDLC/C++等于eq==不等于ne!=小于等于le<=小于lt<大于等于ge>=大于gt>20常用控制語句Begin–EndIf–Then–ElseCaseXof–else–endcaseFor–DoWhile–DoRepeat–UntilExpr?Expr1:expr2(條件判斷語句)簡單程序示例21testabc過程名add函數(shù)名a,b參數(shù)(必給)type關(guān)鍵字(可選)運(yùn)行結(jié)果:IDL>testabc,1,1.2運(yùn)算結(jié)果為2.20000IDL>testabc,1,1.2,type=0運(yùn)算結(jié)果為2.20000IDL>testabc,1,1.2,type=1運(yùn)算結(jié)果為1.20000IDL>testabc,1,1.2,type=3無此運(yùn)算類型!227、文件的讀入輸出處理文件的過程和函數(shù)1.打開文件、關(guān)閉文件openr,openw,openuclose2.讀寫文件讀寫文本文件:readf/printf讀寫二進(jìn)制文件:readu/writeu8.IDL面向?qū)ο蟪绦蛟O(shè)計(jì)封裝性繼承性多態(tài)性231.對象定義格式:Proclassname_DEFINE struct={classname,data1:value1,….,dataN:valueN}EndProclassname::methodname,參數(shù)….,關(guān)鍵字…

語句序列end2.對象創(chuàng)建&銷毀創(chuàng)建:object1=obj_new(’classname’)銷毀:obj_destroy,object1249.GUI界面手寫圖形用戶界面組成:基本容器(base)+各種組件(widget)消息響應(yīng)Xmanager分發(fā)事件+消息響應(yīng)函數(shù)(用戶定義)25界面示例2627IDL提供了許多讀寫圖像文件的函數(shù),例如read_bmp、read_gif、read_jpeg、read_tiff、read_png、write_bmp、write_gif、write_jpeg、write_tiff、write_png等函數(shù)。五、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圖像增強(qiáng)處理讀入和顯示圖像Myimage=read_tiff(filepath('image.tif',$ subdir=['examples','data']))Tv,myimage;圖像源源本本的顯示出來,不進(jìn)行拉伸處理Tvscl,myimage;顯示之前將圖像進(jìn)行拉伸,也就是將圖像的顏色值進(jìn)行拉伸,以充分利用這個(gè)地顏色表。32對比增強(qiáng)處理閾值化利用EQ、NE、GE、GT、LE和LT,產(chǎn)生二值(黑白)圖像。Tvscl,MyimageGT140顏色大于140的顯示為白色Tvscl,myimageLT140顏色小于140地顯示為白色33拉伸象素值將局部范圍內(nèi)的象素值拉伸到占據(jù)整個(gè)顯示亮度的范圍。Tvscl,Myimage>100大于100的象素Tvscl,myimage<140小于140的象素Tvscl,myimage>140<200140~200之間的象素34直方圖均衡化 在許多圖像中,象素的顏色值只占據(jù)整個(gè)顏色表的一小部分。將圖像轉(zhuǎn)化為在每一顏色上都有相同的象素點(diǎn)數(shù)的輸出圖像,就可以最大化地顯示圖形信息內(nèi)容。TV,Hist_EQUAL(myimage)35平滑圖像Smooth函數(shù)可以平滑圖像,相當(dāng)于低通濾波,消除部分的隨即噪聲。要確定好計(jì)算平均值的模板的大小。Tvscl,smooth(myimage,7)用7×7模板平滑圖像。36銳化圖像與平滑圖像相對,要高亮顯示圖像中的對象邊緣。方法一:從原始圖象中減去該圖像的平滑圖像。Tvscl,float(myimage)-smooth(myimage,7)方法二:IDL提供了微分銳化處理函數(shù),其中最常用的是梯度法。37梯度法中一個(gè)是羅伯特梯度法(Robertgradient),對應(yīng)IDL中的ROBERTS函數(shù)。R=roberts(myimage)Tvscl,R梯度法中的另一個(gè)是索貝爾(Sobel)算子,利用兩個(gè)核卷積。一個(gè)是垂直邊緣效應(yīng)最大,一個(gè)是水平邊緣效應(yīng)最大,兩個(gè)卷積的最大值作為該點(diǎn)的輸出值。So=sobel(myimage)Tvscl,so

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論