IDL程序1 基础语法与数据处理 授课人:李景刚 手机:

Slides:



Advertisements
Similar presentations
青少年儿童常见伤害的预防. 伤害的定义 伤害是指各种物理性、化学性或生物性 事件而导致人体发生暂时或永久性损 伤、死亡和残疾的一类疾病的总称。
Advertisements

大胆作为 勇于承担  建立安全监管新常态 市安全监管局 林凯军.
第六章 多媒体辅助教学系统 一、多媒体基本概念
SPSS 軟體與統計應用 Ya-Yun Cheng, How-Ran Guo
C语言程序设计 主讲教师 :张群燕 电话:
授课教师:江星玲 1.
语文组:藏在泉州古巷中的美食 结题报告.
自信心训练教材 如何提高自己的自信心 -Jerrywang.
沟通云平台 三三得玖通信技术有限公司 深圳市云屋科技有限公司 陈志伟
贵州分公司 工作总结报告 发起人: 山大鲁能.
儿科护理 说课 李国琴.
外科护理学 沧州医学高等专科学校.
第 9 章 多媒體.
消防安全教育 巫山县金银小学 马泮军.
SPSS统计软件的使用方法基础 主讲人:宋振世 (闵行校区) 电 话:
道路交通管理 授课教师:于远亮.
自衛消防編組任務職責 講 義 This template can be used as a starter file for presenting training materials in a group setting. Sections Right-click on a slide to add.
P303 HTML/DHTML/CSS/JavaScript 專業HTML網頁設計 陳錦輝.
操作系统结构.
特殊教育課程與教學調整現場實務 特教小組 執行秘書 林坤燦.
第4章 JavaScript脚本语言基础 4.1 JavaScript简介 4.2 JavaScript语法基础
第 9章 多媒体技术基础.
Visual Basic程序设计 主 编  柳青.
逃出生天游戏介绍 胡永泽 高振卓 答辩人:.
数字图像处理 刘伯强 山东大学生物医学工程.
深層學習 暑期訓練 (2017).
Ch07 PHP程式基礎 網頁程式設計.
Chapter 1 複習.
樹狀結構 陳怡芬 2018/11/16 北一女中資訊專題研究.
簡易 Visual Studio 2010 C++ 使用手冊
C 程式設計— 控制敘述 台大資訊工程學系 資訊系統訓練班.
王志成 航天星图科技(北京)有限公司 使用IDL进行科学数据可视化 王志成 航天星图科技(北京)有限公司.
1 Introduction Prof. Lin-Shan Lee.
2 C++ 的基本語法和使用環境 親自撰寫和執行程式是學好程式語言的不二法門。本章藉由兩個簡單的程式,介紹C++ 程式的基本結構和開發環境,讓初學者能逐漸建立使用C++ 的信心。
C 語言簡介 - 2.
第三單元 Control Structure II
数字图像处理(2) 图像文件格式 东北林业大学信息学院 任洪娥
丙級電腦軟設-VB程式設計 資料來源:林文恭研究室 整理:張福生.
项目策划商务模板 PRESENTED BY OfficePLUS
重點 資料結構之選定會影響演算法 選擇對的資料結構讓您上天堂 程式.
電腦解題─流程圖簡介 臺北市立大同高中 蔡志敏老師.
软件工程 Software Engineering
本章中將會更詳細地考慮有關重複的概念,並且會 介紹for和do…while等兩種用來控制重複的敘述 式。 也將會介紹switch多重選擇敘述式。 我們會討論直接和迅速離開某種控制敘述式的 break敘述式,以及用來跳過重複敘述式本體剩餘 部份的continue敘述式。 本章會討論用來組合控制條件的邏輯運算子,最後.
簡易 Visual Studio 2005 C++ 使用手冊
IDL系统开发及ENVI功能扩展 代课人:张锦水
BUSINESS REPORT 商务报告 PRESENTED BY JANE DOE.
陳維魁 博士 儒林圖書公司 第五章 控制結構 陳維魁 博士 儒林圖書公司.
1 Introduction Prof. Lin-Shan Lee.
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
软件工程 第四章 软件设计 软件过程设计技术与工具.
NS2 (Network Simulator - version 2)
大学英语跨文化交际 ——中西教育文化差异 精神卫生学院 林丽菁
软件设计任务 从工程管理的角度来看,软件设计分两步完成。 概要设计,将软件需求转化为数据结构和软件的系统结构。
行政管理者 的素质要求 中南大学湘雅医院 李远斌
第2章 算法与C语言程序 程序 (1)数据的描述:数据的类型和组织形式(数据结构) (2)操作的描述:操作步骤(算法) 沃思指出:
今天, AC 你 了吗? 2019/4/21.
工 作 总 结 汇 报 地球来的张先森 7 / 11.
使用工具优化无线远端关联 --- 《局域网组网技术》 安徽建设学校 汪双顶.
第3 语言翻译问题 [学习目标]:学习和掌握语言的语法的基本概念和基本要素,理解翻译的步骤;学习和掌握BNF文法。
林福宗 清华大学 计算机科学与技术系 2008年9月 2019年5月5日 多媒体技术教程 第4章 彩色数字图像基础 林福宗 清华大学 计算机科学与技术系 2008年9月.
计算机问题求解 – 论题1-5 - 数据与数据结构 2018年10月16日.
李宏毅專題 Track A, B, C 的時間、地點開學前通知
本节内容 Lua基本语法.
問題解決與流程圖 高慧君 台北市立南港高中 2006年12月22日.
第六章 类属B树索引技术 对基于树的索引方法给出一种通用算法。该算法是建立在类属B树的概念之上开发的。它将类型系统开放,使系统能支持用户自定义的数据类型、函数和某些特殊的查询谓词的集合。并且,将新的数据类型、函数、查询谓词等登记到数据库管理系统中,
统计软件应用 2 主讲人 陶育纯 SPSS 统计软件应用 2 主讲人 陶育纯 教案.
Do While 迴圈 東海大學物理系‧資訊教育 施奇廷.
Visual FoxPro 应用基础与面向对象 程序设计教程
C#快速導讀 流程控制.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
Presentation transcript:

IDL程序1 基础语法与数据处理 授课人:李景刚 手机:13810912337 Email:sharp@ires.cn 北京师范大学资源学院 2004年9月20日

提纲 参考资料 什么是IDL IDL主要功能 IDL集成开发环境 IDL应用程序基础 IDL程序开发过程 IDL的图形图像处理

一、参考资料 在线帮助 http://www.rsi.com http://www.supresoft.com.cn http://www.idlworld.com 参考书 闫殿武,IDL可视化工具入门与提高,机械工业出版社,2003。定价:42.00元 刘光,地理信息系统二次开发教程-语言篇,清华大学出版社,2003。定价:35.00元

二、什么是IDL? Interactive Data Language ——交互式数据语言 主要特征:高级图像处理能力、交互式二维和三维图形技术、面向对象的编程方式、OpenGL图形加速、量化可视化表现、集成数学与统计学算法、灵活的数据输入输出方式、跨平台图形用户界面工具包、连接ODBC兼容数据库及多种程序连接工具等。

三、IDL主要功能 IDL是完全面向矩阵的,因此具有快速分析超大规模数据的能力。 具有高级图像处理能力、交互式二维和三维图形技术。 集成了数学分析和统计软件包,提供强大的科学计算模型。 具有完善的信号处理和图像处理软件包。 IDL GUIBuilder能快速进行界面开发。 最优化输出。 IDL新增加了小波变化工具包,信息损失比FFT小的多。

IDL应用领域 地球科学 医学影像 图像处理 软件开发 大学教学 实验室 测试技术 天文 信号处理 防御工程 数学分析 统计

基于IDL的系列产品 IDL - Interactive Data Language ION - IDL On the Net VIP - Visual IDL Programming ENVI - Environment for Visualizing images RiverTools - Analysis for digital terrain and river network modeling NOESYS - Organize, visualize & share HDF data

IDL内带的例子 IDL>demo回车

四、IDL集成开发环境 菜单栏和 工具栏 工程窗口 多文档面板 输出日志窗口 变量查看窗口 状态栏 命令行

五、IDL应用程序基础 宽松的语法检测机制 分隔符为“,”,而非空格 不分大小写 变量无需事先说明 换行符:$ 注释符:;

2.变量 变量无需事先声明; 变量的名必须以字母开头,可以包括其它字母、数字、下划线、美元符号。最长可达255个字符,但变量大小取决于计算机配置和操作系统; 大小写没有区别,名称中不能有空格; IDL中的保留词不能作为变量的名称。

3.基本数据类型 在数据类型的转换中,如果输出变量类型的字节数少于输入变量类型的字节数,将会发生截断现象。

4.数组 IDL是面向矩阵的语言,几乎所有运算都可以在数组上使用。 数组元素的存储是按列进行的,与其它的语言有区别。 数组下标是从零开始的,如果某些下标超出了范围,则该下标将被转换为在允许范围内的最小或最大的下标值。 被整数除时需要谨慎:当一个整形变量被另一个整形变量除时,IDL程序经常会出错,有可能会出现一个零数组

零数组和索引数组的创建函数

矩阵操作 A=bytarr(512,512) 子区处理: A(*,1)表示第2行的所有列 A(*,1:10)表示第2-11行的所以列 列 行 b=tan(a)+10 子区处理: A(*,1)表示第2行的所有列 A(*,1:10)表示第2-11行的所以列

决定数组性质的函数 函数名称 返回值 N_elements() 数组元素的数目 Variance() 数组的方差 Size() 数组大小和类型的信息 Stddev() 数组的标准差 Min() 数组的最小值 Moment() 平均值、方差、倾斜度、峰度 Max() 数组的最大值 标准差、平均绝对偏度 Mean() 数组的平均值 Total() 数组元素的总和

矩阵操作 A#B 表示 A的列乘以B的行 A##B表示 A的行乘以B的列 Transpose 矩阵转置 a[i,j] = a[j,i] ……

WHERE 函数 Indices=where(data gt 0.4 and data lt 0.5) Data[indices]=1.0

5、IDL程序 批处理:由一系列IDL命令组成,以IDL->@batchfile方式运行。批处理文件运行时并不编译,因此使用控制结构时必须大量使用续行符($),给书写、理解造成困难。 主程序:与批处理相似,但以end结束,以IDL->.run profile方式运行。主程序运行时先编译,因此可以正常使用控制结构。 过程:与主程序相似,但以pro proname开始,以end结束。以IDL->proname方式运行(也可以先运行IDL->.compile proname,编译但不运行)。 函数:与过程相似,但以function fnname开始,以end结束,并以return语句返回一个IDL变量。以IDL->ret=fnname(para_list)方式运行。 在IDL系统中,一个过程或函数即为一个新的IDL命令。 变量作用范围:批处理和主程序方式的变量为全局变量,可以在IDL开发环境中使用。过程和函数的变量为局部变量,只在过程和函数运行过程中有效。

关系运算符 Eq equal to Ne not equal to Le less than or equal to Lt less than Ge greater than or equal to Gt greater than

常用控制语句 Begin – End If – Then – Else Case X of – else – endcase For – Do While – Do Repeat – Until Expr? Expr1:expr2 (条件判断语句)

If语句 If 条件 then 语句 If 条件 then begin 语句 Endif If 条件 then 语句 else 语句 Endif else begin endesle 当特定的条 件为真时, If语句执行 单个语句或 一个语句模 块。

Case语句 Case 表达式 of 情况1: 情况2: 语句 情况3: begin 语句 end else: 语句 endcase 根据一个标量表达式来选取 某个语句或语句块运行。当 表达式和一系列情况中的第 一个匹配成立时,相应的语 句或语句块被执行(只有一 种匹配的情况被识别)。当 语句执行完毕,case语句结 束。如果没有发现匹配的, 那将执行else下的语句或语 句块。如果没有else语句, 此时将发生错误,并且中断 运行。建议都加上“else”。 Case 表达式 of 情况1: 情况2: 语句 情况3: begin 语句 end else: 语句 endcase

For语句 For I = v1, v2 do 语句 For I = v1, v2 inc do 语句 For I = v1, v2 inc do begin 语句 endfor For语句循环执行一个语句或一个语句块,该循环安特定的 步长从初始值上升或下降至结尾值。前面两种形式,每次 循环只执行一个语句;而第三种情况执行一个语句块。在 每一次循环中,I的值以步长inc增加或减少,这依赖于inc 的值是正还是负。没有指定inc,循环则以步长1递增。

While语句 While 条件 do 语句 While 条件 do begin 语句 Endwhile

Repeat语句 Repeat 语句 until 条件 Repeat begin 语句 Endrep until 条件

Return语句 Return, 结果 Return

Switch语句 Switch 表达式 情况1: 情况2:语句 情况3:begin 语句 end else: 语句 endswitch

Case和switch语句的区别 Case语句一旦找到第一种匹配的情况,就不会考虑其他的情况,而switch语句将继续转到下一种情况;没有找到匹配相就要执行else语句,如果没有else语句,case语句会出现错误信息,整个运行停止,switch语句则只停止其自身的执行,而其他语句进行执行。

Switch语句中如果不想向下执行的话,可以加入break语句 x=2 SWITCH x OF       1: PRINT, 'one'        2: PRINT,'two'         3: PRINT, 'three'        4: PRINT, 'four' ENDSWITCH IDL prints: two three four x=2 case x OF       1: PRINT, 'one'        2: PRINT,'two'         3: PRINT, 'three'        4: PRINT, 'four' ENDcase IDL prints: two Switch语句中如果不想向下执行的话,可以加入break语句

Goto语句 使用goto语句可以跳动当前程序单元的指定位置。其形式: Goto, 标号 label: 象其他语言一样,程序中要尽量的避免使用goto语句,最多不超过1次。

Break语句 Break语句执行从for、while、repeat等循环语句或case、switch语句中的下一情况。 语法如下:

Continue语句 Continue语句使for、while或repeat循环得以继续执行。 语法为: continue

Expr? Expr1:expr2 Expr? Expr1:expr2 index=(num ge 10)? 2:4

6、文件的读入输出 处理文件的过程和函数 名称 功能 Openr 打开一个存在的文件,并用于之读 Fstat() 返回一个已打开文件的信息 Openw 打开一个用于读写的新文件 Eof() 检测文件末尾 Openu 打开一个存在地文件,并用于读写 Close 关闭文件 Findfile() 返回当前文件夹中文件的名称 /get_lun 获取逻辑设备号,打开文件 Dialog_pickfile() 图形文件选择器 Free_lun 释放逻辑设备号,并关闭文件

文件读写 读取有格式(ASCII)文件 Readf从有格式文件中读取数据 Printf将数据写入到有格式文件中 例如:读取有格式文件 IDL>openr,lun, ‘input.dat’,/get_lun IDL>data=lonarr(10,100) IDL>readf,lun,data,format=‘(10i6)’ IDL>free_lun,lun

例如:写入一个有格式文件 IDL>data=lindgen(10,100) IDL>openw,lun, ‘output.dat’,/get_lun IDL>printf,lun,data,format=‘(10i6)’ IDL>free_lun,lun

读取无格式(二进制)文件 Readu读取无格式文件(单一数据类型) IDL>file=filepath(‘ctscan.dat’,subdir=‘examples/data’) IDL>openr,lun,file,/get_lun IDL>Data=bytarr(256,256) IDL>Readu,lun,data IDL>free_lun,lun IDL>tvscl,data

将二进制数据写入无格式文件 Writeu将二进制数据写入一个打开的无格式文件 IDL>data=dist(256) IDL>openw,lun, ‘dist.dat’,/get_lun IDL>writeu,lun,data IDL>free_lun,lun 写入文件时一般要加入一个文件头,该文件头记录了文件中包含的数据的大小和类型等信息。使用size函数可以实现这一操作。

常用格式(1) ASCII_TEMPLATE Presents a GUI that generates a template defining an ASCII file format ASSOC Associates an array structure with a file BINARY_TEMPLATE Presents a GUI for interactively generating a template structure for use with READ_BINARY CDF Routines Common Data Format routines EOS Routines HDF-EOS (Hierarchical Data Format-Earth Observing System) routines HDF_BROWSER Opens GUI to view contents of HDF, HDF-EOS, or NetCDF file HDF_READ Extracts HDF, HDF-EOS, and NetCDF data and metadata into an output structure IDLffDICOM Contains the data for one or more images embedded in a DICOM part 10 file IDLffDXF Object that contains geometry, connectivity, and attributes for graphics primitives IDLffShape Contains geometry, connectivity and attributes for primitives accessed from ESRI Shape files MPEG_OPEN Opens an MPEG sequence MPEG_SAVE Saves an MPEG sequence to a file NCDF Routines Network Common Data Format routines PRINT/PRINTF Writes formatted output to screen or file READ/READF Reads formatted input from keyboard or file READ_ASCII Reads data from an ASCII file READ_BINARY Reads the contents of a binary file using a passed template or basic command line keywords READ_BMP Reads Microsoft Windows bitmap file (.BMP) READ_DICOM Reads an image from a DICOM file READ_IMAGE Reads the image contents of a file and returns the image in an IDL variable READ_INTERFILE Reads Interfile (v3.3) file READ_JPEG Reads JPEG file READ_PICT Reads Macintosh PICT (version 2) bitmap file READ_PNG Reads Portable Network Graphics (PNG) file READ_PPM Reads PGM (gray scale) or PPM (portable pixmap for color) file READ_SRF Reads Sun Raster Format file

常用格式(2) READ_SYLK Reads Symbolic Link format spreadsheet file READ_TIFF Reads TIFF format file READ_WAV Reads the audio stream from the named .WAV file READ_WAVE Reads Wavefront Advanced Visualizer file READ_X11_BITMAP Reads X11 bitmap file READ_XWD Reads X Windows Dump file READS Reads formatted input from a string variable READU Reads unformatted binary data from a file SOCKET Opens a client-side TCP/IP Internet socket as an IDL file unit TAPRD Reads the next record on a tape TAPWRT Writes data to a tape WRITE_BMP Writes Microsoft Windows Version 3 device independent bitmap file (.BMP) WRITE_IMAGE Writes an image and its color table vectors, if any, to a file of a specified type WRITE_JPEG Writes JPEG file WRITE_NRIF Writes NCAR Raster Interchange Format raster file WRITE_PICT Writes Macintosh PICT (version 2) bitmap file WRITE_PNG Writes Portable Network Graphics (PNG) file WRITE_PPM Writes PPM (TrueColor) or PGM (gray scale) file WRITE_SRF Writes Sun Raster File (SRF) WRITE_SYLK Writes SYLK (Symbolic Link) spreadsheet file WRITE_TIFF Writes TIFF file with 1 to 3 channels WRITE_WAV Writes the audio stream to the named .WAV file WRITE_WAVE Writes Wavefront Advanced Visualizer (.WAV) file WRITEU Writes unformatted binary data to a file

ENVI环境的直接调用 envi, /restore_base_save_files envi_init, /batch_mode 主要函数: envi_open_file envi_file_query envi_get_map_info envi_get_data envi_write_envi_file

ENVI环境的直接调用 数据文件的读入: filters = ['*.*'] city92file = DIALOG_PICKFILE(/READ, FILTER = filters) envi_open_file, city92file,r_fid=fid ;Geting the ID of the file. if (fid eq -1) then begin envi_batch_exit ;There was an erro, when opening the file. return endif envi_file_query, fid, ns=ns, nl=nl, nb=nb Dims=[-1, 0, ns-1, 0, nl-1] map_info = envi_get_map_info(fid=fid) city92_data=envi_get_data(fid=fid,dims=dims,pos=0) envi_file_mng, id=fid, /remove 数据文件的输出: simu96_f= DIALOG_PICKFILE(/WRITE, FILTER = filters) envi_write_envi_file, simu96,out_name=simu96_f,map_info=map_info

六、IDL图形图像处理 读写数据 导入文本数据 用到ASCIITEMP()和READASCII()函数

选取系统所带的例子:plot.txt文件

2、导入二进制图像 用到BINARY_TEMPLATE()和READ_BINARY()函数

选取系统所带的例子:surface.dat文件

3、保存模板 如果需要读入许多具有同样格式的文本文件或二进制文件,则可以将模板保存起来再利用。 然后调用如下语句恢复模板:

4、读取图像文件 IDL提供了许多读写图像文件的函数,例如read_bmp、read_gif、read_jpeg、read_tiff、read_png、 write_bmp、 write_gif、 write_jpeg、 write_tiff、 write_png等函数。

5、二维坐标图的绘制 Plot函数 x =2*!PI/100*findgen(100) Plot,sin(x)

6、图像增强处理 读入和显示图像 Myimage = read_tiff(filepath('image.tif', $ subdir= ['examples', 'data'])) Tv,myimage;图像源源本本的显示出来,不进行拉伸处理 Tvscl,myimage;显示之前将图像进行拉伸,也就是将图像的颜色值进行拉伸,以充分利用这个地颜色表。

对比增强处理 阈值化 利用EQ、NE、GE、GT、LE和LT,产生二值(黑白)图像。 Tvscl,Myimage GT 140 颜色大于140的显示为白色 Tvscl,myimage LT 140 颜色小于140地显示为白色

拉伸象素值 将局部范围内的象素值拉伸到占据整个显示亮度的范围。 Tvscl,Myimage > 100 大于100的象素 Tvscl,myimage < 140 小于140的象素 Tvscl,myimage >140<200 140~200之间的象素

直方图均衡化 在许多图像中,象素的颜色值只占据整个颜色表的一小部分。将图像转化为在每一颜色上都有相同的象素点数的输出图像,就可以最大化地显示图形信息内容。 TV,Hist_EQUAL(myimage)

平滑图像 Smooth函数可以平滑图像,相当于低通滤波,消除部分的随即噪声。 要确定好计算平均值的模板的大小。 Tvscl,smooth(myimage,7) 用7×7模板平滑图像。

锐化图像 与平滑图像相对,要高亮显示图像中的对象边缘。 方法一:从原始图象中减去该图像的平滑图像。 Tvscl,float(myimage)-smooth(myimage,7) 方法二:IDL提供了微分锐化处理函数,其中最常用的是梯度法。

梯度法中一个是罗伯特梯度法(Robert gradient),对应IDL中的ROBERTS函数。 R=roberts(myimage) Tvscl,R 梯度法中的另一个是索贝尔(Sobel)算子,利用两个核卷积。一个是垂直边缘效应最大,一个是水平边缘效应最大,两个卷积的最大值作为该点的输出值。 So=sobel(myimage) Tvscl,so

Question? Thank you!