科学网

 找回密码
  注册
科学网 标签 IDL

tag 标签: IDL

相关帖子

版块 作者 回复/查看 最后发表

没有相关内容

相关日志

IDL下计算信息熵(探讨版)
dongyanqing 2011-1-2 20:39
遇到好几次这个信息熵问题的IDL程序了,没深入研究过,也不懂这个概念,简单写了下,与大家探讨。 先转基本概念【http://wiki.mbalib.com/wiki/%E4%BF%A1%E6%81%AF%E7%86%B5】 信息熵的计算 根据Charles H. Bennett对Maxwell's Demon的解释,对信息的销毁是一个不可逆过程所以销毁信息是符合热力学第二定律的。而产生信息,则是为系统引入负(热力学)熵的过程。所以信息熵的符 号与热力学熵应该是相反的。一般而言,当一种信息出现概率更高的时候,表明它被传播得更广泛,或者说,被引用的程度更高。我们可以认为,从信息传播的角度 来看,信息熵可以表示信息的价值。这样我们就有一个衡量信息价值高低的标准,可以做出关于知识流通问题的更多推论。   信源的平均不定度。在信息论中信源输出是随机量,因而其不定度可以用概率分布来度量。记 H(X)=H(P1,P2,,Pn)=P(xi)logP(xi),这里P(xi),i=1,2,,n为信源取第i个符号的概率。 P(xi)=1,H(X)称为信源的信息熵。   熵的概念来源于热力学。在热力学中熵的定义是系统可能状态数的对数值,称为热熵。它是用 来表达分子状态杂乱程度的一个物理量。热力学指出,对任何已知孤立的物理系统的演化,热熵只能增加,不能减少。然而这里的信息熵则相反,它只能减少,不能 增加。所以热熵和信息熵互为负量。且已证明,任何系统要获得信息必须要增加热熵来补偿,即两者在数量上是有联系的。   可以从数学上加以证明,只要H(X)满足下列三个条件:   ①连续性:H(P,1-P)是P的连续函数(0P1);   ②对称性:H(P1,,Pn)与P1,,Pn的排列次序无关;   ③可加性:若Pn=Q1+Q2>0,且Q1,Q20,则有H(P1,,Pn-1,Q1,Q2)=H(P1,,Pn-1)+PnH;则一定有下列唯一表达形式:H(P1,,Pn)=-CP(xi)logP(xi)   其中C为正整数,一般取C=1,它是信息熵的最基本表达式。   信息熵的单位与公式中对数的底有关。最常用的是以2为底,单位为比特(bit);在理论推导中常采用以e为底,单位为奈特(Nat);还可以采用其他的底和单位,并可进行互换。   信息熵除了上述三条基本性质外,还具有一系列重要性质,其中最主要的有:   ①非负性:H(P1,,Pn)0;   ②确定性:H(1,0)=H(0,1)=H(0,1,0,)=0;   ③扩张性:Hn-1(P1,,Pn-,)=Hn(P1,,Pn);   ④极值性:P(xi)logP(xi)P(xi)logQ(xi);这里Q(xi)=1;   ⑤上凸性:H >H(P)+(1-)H(Q),式中0<<1。 再发函数 重点在于Histogram函数,不用for循环,否则效率低的多得多 ;只计算一维二维字节型或整型数据的信息熵 function calEntroy, image nDim = size(image, /N_Dimension) ;一维数据 if nDim LE 2 then begin pixNums = Histogram(image,BINSIZE =1) nums = Total(pixNums) pby = pixNums*1D/nums imageEntroy = -Total(pby*aLog(pby)/aLog(2)) ;其他维算法未知,o(_)o 哈哈 endif else begin ??? endelse return, imageEntroy end
个人分类: IDL技术|6748 次阅读|0 个评论
RoonKling圣诞节礼物2001-2010
dongyanqing 2010-12-23 13:30
源码合集下载http://www.rayfile.com/zh-cn/files/127e9c23-0e55-11e0-85ab-0015c55db73d/
个人分类: IDL技术|2761 次阅读|0 个评论
网站http://www.esrichina-bj.cn/改版了,漂亮
dongyanqing 2010-12-22 21:52
个人分类: 杂谈|4174 次阅读|0 个评论
IDL集群计算简介
热度 1 dongyanqing 2010-12-20 17:54
附件内容: pdf IDL集群计算简介
个人分类: 其他技术|3773 次阅读|1 个评论
IDL7、IDL8下如何向sav文件传参数
dongyanqing 2010-12-17 10:42
对sav传参数呢?注意下面两个问题即可 1.代码pro文件中的参数接收 仍然是那个COMMAND_LINE_ARGS函数 Pro TestIDLArgs compile_opt idl2 Result = Command_Line_Args(Count=c) r = Dialog_Message('There are ' + Strtrim(c,2) + ' input args.', /info) if c gt 0 then begin for i=0, c-1 do begin help, Result , output=out r = Dialog_Message('arg' + Strtrim(i+1, 2) + ': ' + out , /info) endfor endif End 2.sav调用时参数传入 两种调用,直接调用sav,另外是工程发布后调用exe。 1) 开始 菜单运行,直接输入 C:\Program Files\ITT\IDL71\bin\bin.x86\idlrt.exe d:\testIDLargs.sav -args abcdef 2)工程用make_rt发布后,其实配套给你一个工程同名的exe来调用sav,类似的参数就需要修改testidlargs.ini文件,如传递ab'的话ini文件可修改为
个人分类: IDL技术|8826 次阅读|0 个评论
iTools-新感觉
dongyanqing 2010-12-16 17:34
iTools或IDL Intelligent Tools或智能化编程工具,自IDL6.0版本开始出现,已经经历了IDL6.*,IDL7.*,IDL8.*三个大版本的改进。 iTools是个复杂的对象体系结构,也很复杂,见下图。 依我看来,它太复杂了,也从来没有花时间也没有静下心来研究琢磨它,记得刚哥从里面挖出来iMap的投影转换类,后来瞅了瞅,可不是一般人能干的,得二般人 。 今 天群里一问题,顺道搜索了下,发现IDL7.0开始下面增加了几个ICONVERTCOORD、IDELETE、IELLIPSE、 IGETCURRENT、IGETDATA、IGETID、IGETPROPERTY、IOPEN、IPOLYGON、IPOLYLINE、 IPUTDATA、IREGISTER、IRESET、IRESOLVE、IROTATE、ISAVE、ISCALE、ISETCURRENT、 ISETPROPERTY、ITEXT、ITRANSLATE、IZOOM这些个功能函数,试了试,还挺好使。 效果图: ;iTools可视化jpg图像文件 IOPEN,DIALOG_PICKFILE(),data,/vis ;获取图像的信息 dims = SIZE(data,/dimension) ;定义椭圆参数 center = dims /2 majAxisDist = 50.0 minAxisDist = 30.0 eccentricity = SQRT(1 - (minAxisDist^2 / majAxisDist^2)) ;画椭圆 IELLIPSE, majAxisDist, center , center , $ /DATA, ECCENTRICITY = eccentricity, $ VISUALIZATION = iToolID, THETA = 120 ;覆盖住了,透明下 ISETPROPERTY, 'oval', THICK=3, COLOR= , FILL_BACKGROUND=0 ;加个蓝色的文字 ITEXT,'tiger',0.5,0.3,0,color = ;图像也转下 IROTATE, 'image', -45, /zAXIS ;保存一个新的jpg ISAVE, 'c:\temp\logo.jpg'
个人分类: IDL技术|3726 次阅读|0 个评论
grib气象数据IDL 读取
dongyanqing 2010-12-2 22:55
气象中广泛应用的grib1格式IDL自身没有相关函数,但是利用这个读取库非常方便进行解析,该库是针对girb1的。 使用很容易, 压缩包 中有详细的资料。 IDL_GRIB
个人分类: IDL技术|8930 次阅读|0 个评论
基于canny边缘检测算法的IDL源码示例
dongyanqing 2010-12-1 22:19
电脑中无意everything出这个pro来,简单修改完善了下共享出来。 PRO kill_canny_app, event shmunmap, 'rose_shmmap' END PRO CannyApp_event, event centered = 0 case widget_info(event.id, /uname) of HIGHv: goto, FilterIt LOWv: goto, FilterIt SIGMAv: goto, FilterIt BtnQuit: goto, ExitFilterApp endcase FilterIt: sliderH_ID = widget_info(event.top, find_by_uname = HIGHv) widget_control, sliderH_ID, get_value = HighValue ; -- in percentage sliderL_ID = widget_info(event.top, find_by_uname = LOWv) widget_control, sliderL_ID, get_value = LowValue ; -- in percentage sliderS_ID = widget_info(event.top, find_by_uname = SIGMAv) widget_control, sliderS_ID, get_value = SigmaValue ; -- in percentage HighValue = HighValue * 0.01 LowValue = LowValue * 0.01 SigmaValue = SigmaValue * 0.01 wDraw2_ID = widget_info(event.top, find_by_uname = RoseEdges) widget_control, wDraw2_ID, get_value = ID_grWindow2 rose_image = shmvar('rose_shmmap') ;_____Plot the edges of the image:_____ wset, ID_grWindow2 rose_xsize = (size(rose_image, /dimensions)) rose_ysize = (size(rose_image, /dimensions)) red_rose = reform(rose_image , rose_xsize, rose_ysize) green_rose = reform(rose_image , rose_xsize, rose_ysize) blue_rose = reform(rose_image , rose_xsize, rose_ysize) red_edge = CANNY(red_rose, HIGH = HighValue, LOW = LowValue, SIGMA = SigmaValue) green_edge = CANNY(green_rose, HIGH = HighValue, LOW = LowValue, SIGMA = SigmaValue) blue_edge = CANNY(blue_rose, HIGH = HighValue, LOW = LowValue, SIGMA = SigmaValue) RGB_edge = bindgen(3, 227, 149) RGB_edge = red_edge * 255 RGB_edge = green_edge * 255 RGB_edge = blue_edge * 255 TV, RGB_edge ,CHANNEL=1 TV, RGB_edge ,CHANNEL=2 TV, RGB_edge ,CHANNEL=3 goto, AllDone ExitFilterApp: shmunmap, 'rose_shmmap' widget_control, event.top, /destroy return AllDone: END PRO CannyApp COMPILE_OPT IDL2 ;_____Create the unfiltered image:_____ rose_path = C:\Program Files\ITT\IDL\IDL80\examples\data\rose.jpg if file_test(rose_path) ne 1 then begin tmp = dialog_message('file not exist'+String(13b)+$ rose_path,/error) return endif rose_image = read_image(rose_path) ;______________________________________ ;_____Set up shared memory (so event handler can have image):_____ shmmap, 'rose_shmmap', /BYTE, size(rose_image, /dimensions) shm_var = shmvar('rose_shmmap') shm_var = rose_image ;_________________________________________________________________ ;_____Create the edge-detected image:_____ rose_xsize = (size(rose_image, /dimensions)) rose_ysize = (size(rose_image, /dimensions)) red_rose = reform(rose_image , rose_xsize, rose_ysize) green_rose = reform(rose_image , rose_xsize, rose_ysize) blue_rose = reform(rose_image , rose_xsize, rose_ysize) red_edge = CANNY(red_rose) green_edge = CANNY(green_rose) blue_edge = CANNY(blue_rose) RGB_edge = bindgen(3, 227, 149) RGB_edge = red_edge * 255 RGB_edge = green_edge * 255 RGB_edge = blue_edge * 255 ;____________________________________ ;_____Build the widgets:_____ wTLB=WIDGET_BASE(/ROW) wControls = widget_base(wTLB, /column) wLeft = WIDGET_BASE(wTLB,/COLUMN) wRight = WIDGET_BASE(wTLB,/COLUMN) wBase1 = WIDGET_BASE(wLeft,/COLUMN) wBase2 = WIDGET_BASE(wRight,/COLUMN) wText1a = WIDGET_LABEL(wBase1,VALUE=Original Rose) wDraw1 = WIDGET_DRAW(wBase1,XSIZE = rose_xsize, YSIZE = rose_ysize) wText2 = WIDGET_LABEL(wBase2,VALUE=Rose's edges) wDraw2 = WIDGET_DRAW(wBase2,XSIZE = rose_xsize, YSIZE = rose_ysize, uname = RoseEdges) ;_____Controllers:_____ wSliderH = widget_slider(wBase1, title = High Value (% of maximum pixel value):, maximum = 100, $ minimum = 0, value = 80, uname = HIGHv) wSliderL = widget_slider(wBase1, title = Low Value (% of High Value):, maximum = 100, $ minimum = 0, value = 40, uname = LOWv) wSliderS = widget_slider(wBase1, title = Sigma %, maximum = 100, $ minimum = 0, value = 60, uname = SIGMAv) wButtonQuit = widget_button(wBase1, value = Quit Edge App, uname = BtnQuit) ;____________________________ WIDGET_CONTROL,wTLB,/REALIZE ;____________________Draw the images:____________________ widget_control, wDraw1, GET_VALUE = window1ID widget_control, wDraw2, GET_VALUE = window2ID ;_____Plot the original image:_____ wset, window1ID reconstructed_rose = bindgen(227, 149, 3) reconstructed_rose = red_rose reconstructed_rose = green_rose reconstructed_rose = blue_rose TV,rose_image ,CHANNEL=1 TV,rose_image ,CHANNEL=2 TV,rose_image ,CHANNEL=3 ;_____Plot the edges of the image:_____ wset, window2ID TV, RGB_edge ,CHANNEL=1 TV, RGB_edge ,CHANNEL=2 TV, RGB_edge ,CHANNEL=3 ;________________________________________________________ XMANAGER,'CannyApp',wTLB, cleanup = kill_canny_app END ;---
个人分类: IDL技术|9961 次阅读|0 个评论
IDL下计算平面与平面夹角
dongyanqing 2010-11-30 09:13
; ;Author:dyq ; ;Describe:求两个平面的夹角 ;平面方程: ; a1*x+b1*y+c1*z+d1 = 0 ; a2*x+b2*y+c2*z+d2 = 0 ;Input: 面方程系数 ;Return: 面夹角度(锐角) ; 返回 function cal2PlaneAngle, a1,b1,c1,d1,a2,b2,c2,d2 ; n1 = SQRT(a1^2+b1^2+c1^2) n2 = SQRT(a2^2+b2^2+c2^2) angleCos = ABS(a1*a2+b1*b2+c1*c2)/(n1*n2) angle = aCos(angleCos)/!dtor return ,angle end
个人分类: IDL技术|3544 次阅读|0 个评论
IDL下计算线段与坐标轴夹角
dongyanqing 2010-11-30 09:10
功能是计算线段与坐标轴的夹角,与中学时学的一样,计算线段AB返回结果是那个,单位为弧度。 ;根据两点坐标返回线段与坐标轴的夹角(弧度) ;Point1到point2线段(线段AB) ; Function Cal2PointsAngle ,point1,point2 dx = point2 - point1 dy = point2 - point1 IF dx EQ 0 THEN BEGIN ; x轴 IF dy GT 0 THEN result = !PI/2 ELSE $ result = 3*!PI/2 ENDIF ELSE BEGIN IF dy EQ 0 THEN BEGIN ;x轴 IF dx GT 0 THEN result = 0 ELSE $ result = !PI ENDIF ElSE BEGIN result = ATAN(dy/dx) IF result GT 0 THEN IF dx LT 0 THEN result = result +!Pi IF result LT 0 THEN IF dx LT 0 THEN result = result +!Pi ELSE $ result = result + 2*!PI ENDELSE END return,result MOD (2*!PI) END
个人分类: IDL技术|4681 次阅读|0 个评论
ENVI&IDL资料下载FTP
热度 1 dongyanqing 2010-11-29 17:41
为满足大家的学习ENVIIDL的需要,现开通ENVIIDL学习资料FTP。 1、站点地址为:124.207.251.162端口21,匿名登录即可。 2、开放时间:周一至周五8:3017:30( 全天开放 )。 3、总带宽有限,下载资料的时候希望大家限速限线程。 附FTP文件夹的文件列表 下载 (133.1 KB) 2010/3/29 15:35 2010年6月最新文件目录 下载 (55.55 KB) 2010/6/30 08:53 优酷视频贴: 2010年IDL培训班北京站: http://bbs.esrichina-bj.cn/ESRI/thread-72600-1-1.html 2010年ENVI培训班北京站: http://bbs.esrichina-bj.cn/ESRI/thread-72621-1-1.html
个人分类: ENVI|5069 次阅读|2 个评论
ENVI监督分类的功能扩展
热度 2 dongyanqing 2010-11-25 17:55
遥感的监督分类作为一种比较成熟的信息提取方法,应用非常广泛。 在某些实际应用中,比如同一区域同一传感器多幅影像,未进行镶嵌,有时候需要基于一幅影像及感兴趣区(ROI)进行多幅影像的监督分类。 现在的遥感软件ENVIErdas中都无法直接实现,因软件在选取ROI时ROI都是基于被选择影像的,无法在其他影像监督分类时调用。 这个扩展补丁(V1.0)就是为了解决该问题,基于ENVI+IDL实现的。 运行需要系统安装ENVI,双击sav或选择IDLVirtualMachine运行sav文件。 执行程序-sav
个人分类: ENVI|4945 次阅读|1 个评论
[转载]遥感专业算法源码(ENVI+IDL)
dongyanqing 2010-11-25 16:41
图像预处理 DWT fusion sharpen multispectral images with discrete wavelet transform A trous fusion ditto with a trous wavelet transform Wang-Bovik quality index evaluate radiometric fidelity of pansharpened images C-correction correct for solar illumination in rough terrain Kernel PCA perform nonlinear principal components analysis (can take advantage of GPULib) Kernel MAF perform nonlinear maximum autocorrelation factor analysis (can take advantage of GPULib) Contour-match get tie-points for image-image registration from invariant features 监督分类 Bayes maximum likelihood wrapper for the ENVI ML classifier Support vector machine wrapper for the ENVI SVM classifier Hybrid two-layer neural network trained with kalman filter and scaled conjugate gradient algorithms Two-layer neural network trained with scaled conjugate gradient algorithm (can take advantage of GPULib) Boosted three-layer neural network apply adaptive boosting (AdaBoost) to a sequence of neural networks Gaussian kernel classification non-parametric Parzen-window classification (can take advantage of GPULib) Probabilistic label relaxation perform postclassification filtering Contingency table calculate confusion matrices and kappa values McNemar test compare classifiers with the McNemar statistic 非监督分类 Expectation maximization cluster image data with a mixture of multivariate Gaussians (can take advantage of GPULib) FKM clustering cluster image data with a fuzzy K-means algorithm HCL clustering cluster image data with a heirarchic agglomerative algorithm Kernel K-means cluster image data with a kernel version of K-means (can take advantage of GPULib) Kohonen SOM visualize image data with the Kohonen self-organizing map Mean shift segment images with mean-shift algorithm 变化监测 IR-MAD (iMAD) apply iteratively re-weighted multivariate alteration detection Radcal perform automatic relative radiometric normalization of images MadView set thresholds on MAD images 其他 Structure height use RFMs to determine height of vertical structures Class segmentation Segment a classified image Examples example IDL programs from the 2nd edition Solutions some solutions to the progamming exercises in the 2nd edition CUDA (experimental) Cuda_SVD a DLM for singular value decomposition on CUDA Cuda_NDVI a DLM for calculating NDVI indices on CUDA Cuda_STRETCH a DLM for enhacement stretching on CUDA 【转自】http://mcanty.homepage.t-online.de/index.html
个人分类: ENVI|8978 次阅读|0 个评论
IDL 叠图 grey + contour
热度 1 ywwu 2010-10-28 13:28
整理了一下自己写的叠图程序。 之前只是为了自己用,这次整理成更通,更易使用的格式。方便以后使用。 如果需要在图片上再添加标注,可以在overimv2.pro后再加入自己的代码。 overlay.rar
个人分类: 天文软件|4910 次阅读|1 个评论
用IDL和MATLAB实现好玩的HDF批处理
热度 1 liqin860408 2010-10-5 01:41
针对主被动微波数据:Quikscat/seawinds和AMSR-E 数据来自NSIDC和NASA 程序记得备份整理
个人分类: 未分类|5266 次阅读|2 个评论
一个可能许多人不知道的IDL的功能
dragdu 2010-9-18 23:58
大家都知道IDL可以用plot直接作图,也可以用iplot做交互式对象的图,但是可能不少人都不知道live_plot这个命令吧。它可以直接用来替代plot,和iplot类似,但比iplot简单且速度快,又是对象式的作图,有一定交互功能。最重要的是调整好图后可以选择直接保存为eps格式,相当方便啊。大家可以试一试啊,呵呵~~
个人分类: 科研心得|4331 次阅读|0 个评论
IDL确实好用阿
dragdu 2010-9-16 22:55
最近做了一些拟合光谱的工作,本来是用师兄写的程序来作的,但是总还是希望自己能够学会一些,所以就试着用IDL来写了一下,这才发现IDL确实很是方便阿。 用Craig Markwardt写的MPFIT这个子过程,能够很好地进行曲线拟合,固定参数,设定参数边界等等工作,加上IDL画图非常方便,不用像PGPLOT那样写程序,读写FITS文件也很容易,所以很快就写出了一个自己的拟合光谱的小程序。 当然IDL也有自己的缺点,比如由于是解释类的语言,执行速度相对比较慢,没有Fortran快。而且画的二维图也没有PGPLOT那么漂亮,但是在拟合几百个光谱时,这些还不用考虑。
个人分类: 科研心得|4275 次阅读|0 个评论
不同平台之间相互调用
ChenFengIUE 2009-10-20 18:03
由于最近的工作需要,得发挥IDL和Matlab各自的数据处理优势,所以,需要考虑将二者结合起来写点程序。 已有的可供参考的信息不多,还好在网上找到一位博友的博文中有简要提到实现过程。虽然只是支言片语,却对我起到了很大的引导作用。 总的来看,实现过程不难,几个重要的函数/方法:IDLcomIDispatch,Execute,GetWorkspaceData, PutWorkspaceData。 不过,细节部分却有些麻烦。如不能对3维数组数据传递,只能分成几个2维数组进行多次传递,在IDL平台上要实现更改Matlab的搜索路径好像不容易(我试验过很多次了,却没能成功:()。 可喜的是,不管怎么样现在可以在两个平台进行操作应用了。 可惜的是,还有细节问题需要处理,Matlab的确在数据容量上表现欠佳,不能和IDL媲美。
个人分类: 未分类|3038 次阅读|0 个评论
一些IDL网络资源
environment 2009-3-24 20:17
2009年3月24日验证有效的IDL网络资源 http://ross.iasfbo.inaf.it/IDL/ http://astro.berkeley.edu/~marc/idlshare/general/html/ http://astro.uni-tuebingen.de/software/idl/ http://sohowww.nascom.nasa.gov/solarsoft/gen/idl/ http://cow.physics.wisc.edu/~craigm/idl/ http://www.astro.washington.edu/docs/idl/htmlhelp/slibrary28.html http://idlastro.gsfc.nasa.gov/homepage.html http://www.astro.virginia.edu/class/oconnell/astr511/IDLresources/idl-faq-ivsoft-v4.html http://www.metvis.com.au/idl/ http://www.sljus.lu.se/stm/IDL/Surf_Tips/ http://www.astro.virginia.edu/class/oconnell/astr511/IDLguide.html
个人分类: 学习研究|3098 次阅读|0 个评论

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-6-16 02:31

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部