**********************装********************订********************线********************xx大学研究生课程考试(查)论文2016—2017学年第1学期《IDL程序设计》课程名称:IDL程序设计任课教师:xxxxxxxx学院:资源与环境科学学院专业:地理信息系统学号:xxxxxxxxx姓名:xxxxxx成绩:评语:-2-**********************装********************订********************线********************1.IDL与Matlab有何异同点?IDL与Matlab的相同处在于:①都是支持多种数据格式的可视化分析工具,具有跨平台、基于矩阵和高级语言的特点。②都可以提供高度集成的环境。③对于用户界面,都可以提供相应的工具和设计环境。④提供面向对象的图形系统支持并且支持硬件图形加速。⑤都可以与其他编程语言通过接口链接,实现协同编程。IDL与Matlab的不同处在于:①产品定位不同。Matlab侧重于分析和精度计算,IDL侧重于图像处理。②工具箱的形式不一样。,IDL将所有提供的工具全部集成在环境内部,以函数或者其它的形式出现,而Matlab则归类出各种工具箱,让用户自选购买,具有一定的灵活性,但这并不意味着他的每个工具箱的功能都很强大。③IDL5.5之后则自动支持多线程(CPU)的计算,大大地提高了计算速度,并且无需在代码中体现,而Matlab还做不出来这个功能。④数据类型的不同。前面说过,Matlab注重计算精度,但同时这也成为他面对大数量计算的瓶颈。尽管IDL与Matlab支持的数据类型是一样的,但是IDL具有更加灵活的处理方式。⑤图形显示方式的不同。Matlab只支持面相对象的图形显示,而IDL则提供直接图形法的选择,因为有时候,直接图形法更加方便。另外,Matlab不能支持真体数据的显示,这将对于包括医学影像(MedicalImage)、地质数据、大气以及环境科学方面的应用成为障碍。⑥网络解决方案。尽管Mathworks提供的CGI是基于网络的产品,但他只是类似IONScript,而不能提供IONJava所能给予用户的解决方案。**********************装********************订********************线********************2.读取图像\examples\data\convec.dat,并对它进行均值平滑(smooth和median),另外利用Sobel和Roberts函数使用以下3*3的窗口对图像进行卷积。给出IDL编程代码及其运行结果。Propinghuajuanjifile=filepath('convec.dat',subdirectory=['examples','data'])imagesize=[248,248]image=read_binary(file,data_dims=imagesize)device,decomposed=0loadct,0window,1,xsize=imagesize[0],ysize=imagesize[1],title='convec'tv,imagewindow,2,xsize=2*imagesize[0],ysize=imagesize[1],title='smooth'result=smooth(image,10,/edge_truncate)tv,result,0result1=median(image,10)tv,result1,1window,3,xsize=2*imagesize[0],ysize=imagesize[1],title='juanji'kernel=[[1,1,1],[1,-7,1],[1,1,1]]tv,smooth(image,3,/edge_truncate),248,3tv,sobel(image),0tv,roberts(image),1end-4-**********************装********************订********************线********************3.读取图像\examples\data\abnorm.dat,并对它进行Lee滤波(噪声处理)。给出IDL编程代码及其运行结果.结果包括原始图像和噪声处理后的图像,直方图。PROLeeFiltimgfile=filepath('abnorm.dat',SUBDIRECTORY=['examples','data'])imageSize=[64,64]image=READ_BINARY(file,DATA_DIMS=imageSize)DEVICE,DECOMPOSED=0LOADCT,0WINDOW,0,xsize=48,ysize=48,TITLE='OriginalImage'TVscl,imageWINDOW,1,xsize=48,ysize=48,TITLE='leefiltofImage'filteredImage=LEEFILT(image,1)tvscl,filteredImagewindow,3,title='originalhistogram'PLOT,HISTOGRAM(image),/XSTYLE,/YSTYLE,TITLE='OriginalImageHistogram',$XTITLE='IntensityValue',YTITLE='NumberofPixelsofThatValue'WINDOW,4,TITLE='HistogramofLeefiltImage'PLOT,HISTOGRAM(filteredImage),/XSTYLE,/YSTYLE,$TITLE='LeefiltImageHistogram',$XTITLE='IntensityValue',YTITLE='NumberofPixelsofThatValue'END4.在ENVI批处理模式下对打开图像(多波段影像)进行统计;如最小值(Min),最大值(Max),平均值(Mean),标准差(Stdv)等统计特征。给出IDL编程代码及其运行结果。**********************装********************订********************线********************proexcise4compile_optidl2envi,/restore_base_save_filesenvi_batch_initfile=filepath('alie.dat',SUBDIRECTORY=['examples','data'])envi_open_file,file,r_fid=fidenvi_file_query,fid,ns=ns,nl=nl,nb=nb,dims=dimsabnorm=envi_get_data(fid=fid,dims=dims,pos=0)pos=lindgen(nb)envi_doit,'envi_stats_doit',fid=fid,pos=pos,dims=dims,comp_flag=0,dmin=dmin,mean=dmean,dmax=dmax,stdv=stdvprint,'theminvalue:'print,dminprint,'themeanvalue:'print,dmeanprint,'themaxvalue:'print,dmaxprint,'thestdvvalue:'print,stdvend运行结果:ENVIexcise4%Compiledmodule:EXCISE4.theminvalue:0.000000000.000000000.000000000.000000000.00000000themeanvalue:1.400000046.7200000.0000000079.56000026.360000themaxvalue:13.000000122.000000.00000000180.00000142.00000thestdvvalue:3.278719345.7643600.0000000072.86922147.217476ENVI-6-**********************装********************订********************线********************5.读取一幅多波段影像的中心点光谱曲线,并Plot出来,用TimesNewRoman标示出其经纬度,给出IDL编程代码及其运行结果。proSpectralcurveenvi_open_file,envi_pickfile(),r_fid=fidenvi_file_query,fid,nb=nb,nl=nl,ns=ns,wl=wlxf=(nl/2)yf=(ns/2)envi_convert_file_coordinates,fid,xf,yf,xmap,ymap,/to_mapenvi_convert_projection_coordinates,xmap,ymap,envi_get_projection(fid=fid),oxmap,oymap,envi_proj_create(/geographic)r=findgen(nb)!P.FONT=0DEVICE,SET_FONT=TIMES*24fori=0,nb-1dobeginr[i]=envi_get_data(/complex,dims=[-1,nl/2,nl/2,ns/2,ns/2],fid=fid,pos=i)print,r[i]endforprint,'lon:',oxmap,'lat:',oymapplot,wl,r,/xstyle,/ystyle,title='Spectralcurve'endPlot图:**********************装********************订********************线********************6.编写自定义函数计算阶乘1!+2!+…..9!+10!的和FunctionFactorial,ny=1lifnNe0Thenbeginfori=1,ndobeginy=y*iendforendifreturn,yendprofactorialsum=0read,prompt='输入一个整数:',nfori=1,ndobeginprint,i,!=,factorial(i)sum=sum+factorial(i);endforprint,sumend运行结果:IDLfactorial%Compiledmodule:FACTORIAL.%Compiledmodule:FACTORIAL.输入一个整数:101!=12!=23!=64!=245!=1206!=7207!=50408!=403209!=36288010!=36288004037913IDL-8-**********************装********************订********************线********************7.编写程序,读取图像\examples\data\convec.dat,并对它进行缩放(zoom)prozoomingfile=filepath('convec.dat',subdirectory=['examples','data'])imagesize=[248,248]image=read_binary(file,data_dims=imagesize)device,decomposed=0loadct,0window,1,xsize=imagesize[0],ysize=imagesize[1],title='ag