40
1 IDL 系 系系系 ENVI 系系系系 代代代 代代代 : : 代代代 代代代 Email:[email protected] Email:[email protected] Tel:13552203633 Tel:13552203633

IDL 系统开发及 ENVI 功能扩展

  • Upload
    nyoko

  • View
    210

  • Download
    4

Embed Size (px)

DESCRIPTION

IDL 系统开发及 ENVI 功能扩展. 代课人 : 张锦水 Email:[email protected] Tel:13552203633. 内容介绍. 图形基本知识 图形用户界面开发 ENVI 扩展编程. 图像基本知识. 真彩色和假彩色 图形显示程序 TV 和 TVSCL 图像处理 其它知识. 真彩色和假彩色. 假彩色 与一个颜色表联系起来,由颜色表为每个图像像素定义显示的颜色 真彩色 每个图像像素综合红、绿和蓝的强度以决定显示的颜色. 假彩色显示方式. 颜色索引表. 二维数组. 真彩色显示方式. R. 显示结果. G. B. - PowerPoint PPT Presentation

Citation preview

Page 1: IDL 系统开发及 ENVI 功能扩展

1

IDL 系统开发及 ENVI 功能扩展

代课人代课人 :: 张锦水张锦水Email:[email protected]:[email protected]:13552203633Tel:13552203633

Page 2: IDL 系统开发及 ENVI 功能扩展

图形基本知识图形基本知识 图形用户界面开发图形用户界面开发 ENVIENVI 扩展编程扩展编程

内容介绍

Page 3: IDL 系统开发及 ENVI 功能扩展

图像基本知识 真彩色和假彩色真彩色和假彩色 图形显示程序图形显示程序

TVTV 和和 TVSCLTVSCL 图像处理图像处理 其它知识其它知识

Page 4: IDL 系统开发及 ENVI 功能扩展

真彩色和假彩色 假彩色假彩色

与一个颜色表联系起来,由颜色表为与一个颜色表联系起来,由颜色表为每个图像像素定义显示的颜色每个图像像素定义显示的颜色

真彩色真彩色 每个图像像素综合红、绿和蓝的强度每个图像像素综合红、绿和蓝的强度

以决定显示的颜色以决定显示的颜色

Page 5: IDL 系统开发及 ENVI 功能扩展

假彩色显示方式

7070 4040 8080

7070 4040 8080

6060 5050 8181

IndexIndex RR GG BB

…………

8080 255 0 102

8181 255 51 0

…………

5050 204 0 153

6060 0 51 154

二维数组

颜色索引表

Page 6: IDL 系统开发及 ENVI 功能扩展

真彩色显示方式

70 40 80

70 40 80

60 50 81

105 40 100

70 40 80

60 50 81

20 40 0

60 40 80

60 50 81

20 40 0

60 40 80

60 50 81

R

GB

显示结果

Page 7: IDL 系统开发及 ENVI 功能扩展

数据提取 假彩色数据提取假彩色数据提取

Function Function GetPseudoColorDataGetPseudoColorDataOpenR,Lun,FileName,/Get_LunOpenR,Lun,FileName,/Get_LunImageArr = ImageArr = BytArr(ns,nl)BytArr(ns,nl) ; ; 定义二维数组定义二维数组ReadU,Lun,ImageArrReadU,Lun,ImageArr ;; 读取二进制文件读取二进制文件Free_Lun,LunFree_Lun,LunReturn,ImageArrReturn,ImageArr

EndEnd

真彩色数据提取真彩色数据提取Function Function GetPseudoColorDataGetPseudoColorData

OpenR,Lun,FileName,/Get_LunOpenR,Lun,FileName,/Get_LunImageArr = ImageArr = BytArr(ns,nl,3)BytArr(ns,nl,3) ; BSQ; BSQ 格式定义格式定义 33 维数组维数组ReadU,Lun,ImageArrReadU,Lun,ImageArr ;;Free_Lun,LunFree_Lun,LunReturn,ImageArrReturn,ImageArr

EndEnd

Page 8: IDL 系统开发及 ENVI 功能扩展

图像显示 IDL命令 假彩色显示假彩色显示

11 )) Device,Decomposed = 0 Device,Decomposed = 0 22 )) LodctCT,Index IndexLodctCT,Index Index 为颜色索引表为颜色索引表

或者或者 TvLCtTvLCt 手工设置颜色手工设置颜色33 )) TV,Image ImageTV,Image Image 为二维数组为二维数组 (TvScl)(TvScl)

真彩色显示真彩色显示11 )) Device,Decomposed = 1Device,Decomposed = 12) TVScl,Image,Band = Index Index2) TVScl,Image,Band = Index Index 为通为通

道道

Page 9: IDL 系统开发及 ENVI 功能扩展

图形显示窗口 WindowWindow ,Index ,Index 创建一个新的窗口创建一个新的窗口 ,, 窗口的索引号,窗口的索引号, /F/F

reeree 由系统自动生成一个索引号的窗口由系统自动生成一个索引号的窗口 WsetWset ,, Index Index 将将 IndexIndex 窗口设置为当前窗口窗口设置为当前窗口 WdeleteWdelete ,, Index Index 删除某一个窗口删除某一个窗口 WshowWshow,Index,Index ,设置某一个窗口是否可见,设置某一个窗口是否可见 Erase Erase 擦出窗口中的内容擦出窗口中的内容

Page 10: IDL 系统开发及 ENVI 功能扩展

图像显示范例 IDL>Device,Decomposed = 1IDL>Device,Decomposed = 1 IDL> Window,/FreeIDL> Window,/Free IDL> OpenR,Lun,’E:\IDLIDL> OpenR,Lun,’E:\IDL 教学教学 \iknos_mult_subset.img’,/Get_Lun\iknos_mult_subset.img’,/Get_Lun IDL> ImageData = BytArr(282,224,3)IDL> ImageData = BytArr(282,224,3) IDL> ReadU,Lun,ImageDataIDL> ReadU,Lun,ImageData IDL> TvScl,ImageData[*,*,0],Channel = 1,Order = 1IDL> TvScl,ImageData[*,*,0],Channel = 1,Order = 1 ;; 第一通道,红第一通道,红

色色 IDL> TvScl,ImageData[*,*,1],Channel = 2,Order = 1IDL> TvScl,ImageData[*,*,1],Channel = 2,Order = 1 ;; 第二通道,绿第二通道,绿

色色 IDL> TvScl,ImageData[*,*,2],Channel = 3,Order = 1IDL> TvScl,ImageData[*,*,2],Channel = 3,Order = 1 ;; 第三通道,蓝第三通道,蓝

色色 IDL> Free_Lun,LunIDL> Free_Lun,Lun

Page 11: IDL 系统开发及 ENVI 功能扩展

图像操作 改变图像尺寸改变图像尺寸 图像基本处理图像基本处理 图形分类图形分类

Page 12: IDL 系统开发及 ENVI 功能扩展

改变图像尺寸

0 22 44 66

88 1010 1212 1414

1616 1818 2020 2222

2424 2626 2828 3030

0 4

16 204*4

5*5

00 11 33 44 66

……

2424 2525 2727 2828 3030

2*2

Page 13: IDL 系统开发及 ENVI 功能扩展

图像处理 直方图均衡化 直方图均衡化 Hist_EqualHist_Equal 和和 HistogramHistogram 平滑图像 平滑图像 SmoothSmooth 图像噪声图像噪声 MedianMedian 图像边缘 图像边缘 RobertsRoberts 和和 SobelSobel 图像频域滤波图像频域滤波 FFTFFT 波段操作波段操作

Page 14: IDL 系统开发及 ENVI 功能扩展

图像分类 监督分类 监督分类

最小距离分类法、多级别切割法、最大似然法等最小距离分类法、多级别切割法、最大似然法等 非监督分类 非监督分类 ((分级集群法、动态聚类法分级集群法、动态聚类法))

分级集群法采用“距离”评价各样本分级集群法采用“距离”评价各样本(每个像元)在空间分布的相似程度,(每个像元)在空间分布的相似程度,把他们的分布分割或者合并成不同的把他们的分布分割或者合并成不同的集群。每个集群的地理意义需要根据集群。每个集群的地理意义需要根据地面调查或者与已知类型的数据比较地面调查或者与已知类型的数据比较后方可确定。后方可确定。

Page 15: IDL 系统开发及 ENVI 功能扩展

图形用户界面开发 GUI(Graphic User Interface)GUI(Graphic User Interface) 图形用户界图形用户界

面面 基于组件式开发基于组件式开发 事件驱动整个流程的进行事件驱动整个流程的进行

Page 16: IDL 系统开发及 ENVI 功能扩展

组件结构

Widget_Base

Widget_Label Widget_Textbox …… Widget_Tree

WidgetID

Page 17: IDL 系统开发及 ENVI 功能扩展

事件定制A

B C

D E F

G

Event Hander

Event Hander

语法: Xmanager,’Name’,ID

Page 18: IDL 系统开发及 ENVI 功能扩展

界面示例 IDL>Base = Widget_Base(Title = 'IDL>Base = Widget_Base(Title = ' 界面演示界面演示 ',mbar = mbar,column =1)',mbar = mbar,column =1) IDL>Base1 = Widget_Base(base,row = 1 )IDL>Base1 = Widget_Base(base,row = 1 ) IDL>Button1 = Widget_Label(Base1 ,Value = 'IDL>Button1 = Widget_Label(Base1 ,Value = ' 用户名用户名 ')') IDL>Text1= Widget_Text(Base1,Value = 'aaaa',/editable)IDL>Text1= Widget_Text(Base1,Value = 'aaaa',/editable) IDL>Base2 = Widget_Base(base,row = 1)IDL>Base2 = Widget_Base(base,row = 1) IDL>Button2 = Widget_Label(Base2 ,Value = ' IDL>Button2 = Widget_Label(Base2 ,Value = ' 密码密码 ')') IDL>base3 = widget_base(base,row = 1,/align_center)IDL>base3 = widget_base(base,row = 1,/align_center) IDL>ok = widget_button(base3,value = 'IDL>ok = widget_button(base3,value = ' 确定确定 ')') IDL>Text2= Widget_Text(Base2,Value = '****',/editable)IDL>Text2= Widget_Text(Base2,Value = '****',/editable) IDL>cancel = Widget_Button(BaMse3,value = 'IDL>cancel = Widget_Button(BaMse3,value = ' 取消取消 ')') IDL>Widget_Control,Base,/RealizeIDL>Widget_Control,Base,/Realize

Page 19: IDL 系统开发及 ENVI 功能扩展

常用函数 Widget_Control,WidgetIDWidget_Control,WidgetID

控制控件的所有状态属性控制控件的所有状态属性 常用参数:常用参数: Set_UValueSet_UValue 、、 Get_UvalueGet_Uvalue 、、 Get_ValueGet_Value 、、

Set_Value

Result = Widget_Info(WidgetID)Result = Widget_Info(WidgetID) 获得某个窗体或控件包含的子控件获得某个窗体或控件包含的子控件 Find_By_Uname Find_By_Uname buttonID = Widget_Info(BaseID,Find_BbuttonID = Widget_Info(BaseID,Find_B

y_Uname = ‘ButtonName’y_Uname = ‘ButtonName’ ))

Page 20: IDL 系统开发及 ENVI 功能扩展

应用实例 总体界面总体界面 读取遥感图像读取遥感图像 保存保存 JPEGJPEG 图像图像 基本图像处理基本图像处理 图像分类图像分类 波段操作波段操作 注意问题注意问题

Page 21: IDL 系统开发及 ENVI 功能扩展

总体界面菜单

工具条

图像显示

Page 22: IDL 系统开发及 ENVI 功能扩展

遥感影像读取 (1)

Page 23: IDL 系统开发及 ENVI 功能扩展

遥感影像读取 (2)

图像格式图像格式 BSQ BSQ 隔波段扫描隔波段扫描 m*n*3m*n*3 BIL BIL 隔行扫描隔行扫描 m*3*nm*3*n BIPBIP 隔像素扫描 隔像素扫描 3*m*n3*m*n

解析头文件,读取数据解析头文件,读取数据 定义三维数组 定义三维数组 arry = BytArr[m*n*3]arry = BytArr[m*n*3] 读取数据读取数据 ReadU,Lun,ArrReadU,Lun,Arr

Page 24: IDL 系统开发及 ENVI 功能扩展

保存 JPEG文件 提取屏幕数据提取屏幕数据

Wset Wset 确定当前活动窗口确定当前活动窗口 TVRD TVRD 提取当前窗口中的图像内容提取当前窗口中的图像内容

转换数据格式转换数据格式ReImageArr = Reverse(ImageArr,3) = Reverse(ImageArr,3)

输出输出 JPEGJPEG 图片图片 Write_JPEG,FileName,ReImageArrWrite_JPEG,FileName,ReImageArr

JPEG

Page 25: IDL 系统开发及 ENVI 功能扩展

基本图像处理 直方图直方图 图像光滑图像光滑 边缘增强边缘增强

RobertsRoberts 增强增强 SobelSobel 增强增强

去除噪声去除噪声

Page 26: IDL 系统开发及 ENVI 功能扩展

直方图 Hist_EqualHist_Equal HistogramHistogram

Page 27: IDL 系统开发及 ENVI 功能扩展

图像光滑 SmoothSmooth 光滑光滑

Page 28: IDL 系统开发及 ENVI 功能扩展

边缘增强 RobertsRoberts SobelSobel

Page 29: IDL 系统开发及 ENVI 功能扩展

去除噪声 MedianMedian

Page 30: IDL 系统开发及 ENVI 功能扩展

图像分类 Clust_WtsClust_Wts ClusterCluster

Page 31: IDL 系统开发及 ENVI 功能扩展

波段操作( +)

Page 32: IDL 系统开发及 ENVI 功能扩展

波段操作( /) Band2 / Band1Band2 / Band1 需要拉伸显示需要拉伸显示

Page 33: IDL 系统开发及 ENVI 功能扩展

注意问题 界面变量的存储界面变量的存储

定义存储结构体,保存当前的图像数据、界面变量定义存储结构体,保存当前的图像数据、界面变量 错误陷阱的设置错误陷阱的设置 ,, 标准处理模式标准处理模式

Catch,ErrIndex Catch,ErrIndex

If ErrIndex NE 0 Then BeginIf ErrIndex NE 0 Then Begin

Goto LablelpointGoto Lablelpoint

EndIf EndIf

ExitPro:ExitPro:

释放变量释放变量 ExitExit

Lablelpoint:Lablelpoint:

Goto ExitProGoto ExitPro 程序退出清空变量程序退出清空变量 定义 Clean_UP 事件清空变量,主要为指针变量

Page 34: IDL 系统开发及 ENVI 功能扩展

ENVI功能扩展 直接解压直接解压 ENVIENVI 函数,批处理函数,批处理pro example_envi_batch_exit pro example_envi_batch_exit envi, /restore_base_save_files envi, /restore_base_save_files envi_batch_init, log_file='batch.txenvi_batch_init, log_file='batch.txt' ; envi_batch_exit t' ; envi_batch_exit

end end 由由 ENVIENVI 直接调用自定义函数直接调用自定义函数

Page 35: IDL 系统开发及 ENVI 功能扩展

ENVI操作界面

Page 36: IDL 系统开发及 ENVI 功能扩展

ENVI菜单编辑环境

Page 37: IDL 系统开发及 ENVI 功能扩展

编辑 ENVI菜单文件

Caption Event

Page 38: IDL 系统开发及 ENVI 功能扩展

自定义函数 自定义函数 自定义函数

Pro Proname,EventPro Proname,Event

…………

EndEnd

存放到存放到 Save_AddSave_Add 目录下面,由系统编译,目录下面,由系统编译,EnviEnvi 自动调用其功能。自动调用其功能。

Page 39: IDL 系统开发及 ENVI 功能扩展

示例

Page 40: IDL 系统开发及 ENVI 功能扩展

Questions?

谢 谢!