端元选择方法及操作

合集下载

改进的SGA端元选择的快速方法

改进的SGA端元选择的快速方法
Ab t a t s r c :SGA a e n a p p l ro e f risf Ⅱ a tmain a d h g e f in y p ro ma c .An i r v d S h s b e o u a n o t u u o to n ih. f c e c e r n e i f mp o e GA meh d wa r p s d a d a meho fc n tu tn y e pln sa o t d i h i h d me in ls c t o sp o o e n t d o o sr ci g a h p r a e wa d p e n t e h g - i nso a pa e.frt e 0 h pu p s fi r v n o s e lo t m ih i v le n u r b e v l me c lu ai n a d t us la s t o r o e o mp o i g a lw pe d a g r h wh c n o v s i n me a l ou a c l t n h e d o lw i o s e d o ac lto . Co lx v l me c mp rs n wa o v ne o smp e c mp rs n o h it n e fo a p i t p e fc l u ai n mp e o u o a io s c n e d t i l o a o ft e d sa c r m on i t y r ln n t i mpr v d meho o a h pe a e i h si p o e t d.Asa r s l.t e c mp e iy o a tS e u t h o lx t ffs GA sr d c d t ie ri p c i i e u e o l a n s a e d — n me so a i n in t l y.fo fr rc bi n o ii a GA.Ex e me t h w h tt e fs r m o me u c i rgn lS p r n s s o t a h a tSGA a he s me s lc in r s l i h st a e e t e u t o a rgna GA .whi he fr e nsg e ty f se h n t e lte n t r fe d mb rs l ci n s e d so i lS i l t o e m r r r al a t rt a h a tr i e ms o n me e ee to p e . u

三元选择表达式

三元选择表达式

三元选择表达式在计算机编程语言中,三元选择表达式(ternary operator)也被称为条件运算符(conditional operator),主要是用于给予条件的判断,从而返回不同的值。

即三元操作符会判断一个给定的条件,若条件为真,则返回一个值;若条件为假,则返回另一个值。

它通常的写法是"condition? value1 : value2",condition是用于判断的条件,value1和value2是两个分别对应的结果。

在一般的语言中,三元操作符都有明确定义的语法,大多数的开发语言都支持三元表达式,并提供了使用范例和语法规范。

常见的语言如JavaScript、PHP、Java、C# 等都有三元表达式。

三元选择表达式的语法规范如下:variableName = (expression) ? value1 : value2;在三元表达式中,条件表达式可以是任车数据类型,例如:整数、字符、布尔值等。

不过,一般来说,只有布尔值这种数据类型最常用于条件表达式中。

同时,value1 和 value2 也可以是任何类型数据,包括表达式。

在条件表达式为 true 时,所返回的值由 value1 所决定;在条件表达式为 false 时,所返回的值由 value2 所决定。

三元选择表达式的优点1. 增强了代码的可读性通过使用三元操作符,可以使代码更加简洁而且易于阅读。

使用三元表达式可以将多行的 if-else 语句简化为一行,易于编写和修改,也易于阅读和维护。

2. 缩短了代码的长度由于三元表达式将多行的 if-else 语句压缩至单行代码,所以能够大大缩减代码的长度,并在一定程度上减少了程序的复杂度。

3. 提高了代码的可维护性三元选择表达式作为一种简洁而高效的语句,可以大大提高代码的可读性和可维护性。

通过改善代码的结构和提高代码的可读性,可以使代码更加易于调试和修改。

三元选择表达式的缺点1. 可读性不强尽管三元选择表达式在简化代码长度和提高编写效率方面非常有用,但这种表达式并不总是可以使程序更加易于理解,特别是当条件和返回值非常复杂时。

dax中,多端表筛选一端表的计值规则

dax中,多端表筛选一端表的计值规则

dax中,多端表筛选一端表的计值规则【原创版】目录1.概述:DAX 中的多端表和一端表2.多端表筛选一端表的计值规则3.实际应用场景4.总结正文在数据分析领域,DAX(Data Analysis Expressions)是一种强大的数据处理和计算语言,被广泛应用于 Microsoft Power BI 和 Excel 等工具中。

在 DAX 中,我们经常会遇到多端表和一端表的概念。

为了更好地理解多端表筛选一端表的计值规则,我们先来了解一下这两种表的含义。

多端表是指一个表包含多个端,每个端可以看作是表的一个维度。

例如,一个销售表可以包含产品、时间、地区等多个端。

而一端表则是指一个表只包含一个端,例如,一个产品表只包含产品这个端。

在实际操作中,我们常常需要对多端表进行筛选,只保留其中一个端,并根据这个端进行计值。

例如,我们需要统计某个时间段内各个产品的销售总额。

在这种情况下,我们需要筛选出时间端,并根据这个端计算销售额。

DAX 中提供了丰富的函数和操作符来实现多端表筛选一端表的计值规则。

以下是一些常用的方法:1.使用"SELECT"函数:我们可以使用"SELECT"函数来选择需要的端。

例如,在上面的例子中,我们可以使用"SELECT(时间,产品)"来选择时间和产品这两个端。

2.使用"FILTER"函数:"FILTER"函数可以帮助我们筛选出需要的端。

例如,我们可以使用"FILTER(时间,时间 >= 开始时间 && 时间 <= 结束时间)"来筛选出指定时间段内的时间端。

3.使用"CALCULATE"函数:"CALCULATE"函数可以在筛选出的端上执行计算。

例如,我们可以使用"CALCULATE(销售额 = 销售额 * 数量)"来计算销售额。

端元名词解释

端元名词解释

端元名词解释
端元是指在计算机程序语言中用于标识程序中某个特定位置的
符号。

端元可以用于分隔程序中不同部分的标识符,例如在 C 语言中,分号就是一个常用的端元。

端元也可以用于表示程序中的操作,例如在Python 语言中,冒号就是用于标识代码块的端元。

端元通常是单个字符,但也可能是多个字符组成的符号。

端元在程序语言中扮演着非常重要的角色,因为它们可以帮助解析器理解程序的结构和含义。

例如,在C 语言中,分号是一个常用的端元,它用于在语句末尾标识一条语句的结束。

因此,在编写C 程序时,每条语句都必须以分号结尾。

同样,在Python 语言中,冒号是用于标识代码块的端元,因此在编写Python 程序时,必须在每个代码块的开头使用冒号。

一种高光谱遥感影像端元自动提取方法

一种高光谱遥感影像端元自动提取方法

An Automatic Endmember Extraction Algorithm from Hyperspectral Image
WANG Xiao2 ling ¹ , º , DU Pei 2 jun ¹ , TAN Kun ¹ , CAO Wen ¹ ( ¹ China Univer sity of Mining and T echnology , key labor a tory f or land Envir onment a nd Disaster Monitor ing of SBS M, Xuz hou 221116 ; º China univer sity of Mining and Techology , J ia ngsu key l abor ator y of Resour ces a nd Envir onment I nf orma tion Engineeing, Xuzhou 221116 ) Abstr act: An automat ic endmember extraction algorit hm is pr oposed based on unsuper vised classification, pixel pur ity in2 dex, liner spectra l mixing model and simplex of convex geometr y concepts. This pr oposed algorit hm can avoid the effects of un2 cert ainty, heavy wor kload and other shortcomings of existing artif icial sampling procedures. The approach is experimented by an example of OMIS hyperspectral image, and the experimental result indicates that the algorithm is effective and has high degree of automation. Key words: liner spectral mixtur e model; convex simplex; endmember

高光谱数据分析ENVI操作手册

高光谱数据分析ENVI操作手册

高光谱数据分析ENVI操作手册1.常见参数选择主菜单→File→Preferences●用户自定义文件(User Defined Files)图形颜色文件,颜色表文件,ENVI的菜单文件,地图投影文件等。

需重启ENVI ●默认文件目录(Default Directories)默认数据目录,临时文件目录,默认输出文件目录,ENVI补丁文件、光谱库文件、备用头文件目录等,需重启ENVI。

●显示设置(Display Default)可以设置三窗口中各个分窗口的显示大小,窗口显示式样等。

其中可以设置数据显示拉伸方式(Display Default Stretch),默认为2%线性拉伸。

●其他设置(Miscollaneous)制图单位(Page Unit),默认为英寸(Inches),可设置为厘米(Centimeters)还有缓冲大小(cache size),可以设置为物理内存的50-75%左右。

Image Tile Size不能超过4M。

2.显示图像及其波谱2.1.打开文件●主菜单,Open Image File→文件名.raw。

●或Window→Available Bands List→File →Open Image File→文件名.raw。

2.2.显示图像●显示单波段灰度级图像:Gray color,选择的波段一般是图像显示最清晰的波段。

●显示伪彩色图像:RGB color,选择具有明显吸收谷、强烈反射作用和所含信息量较大的波段作为彩色合成RGB波段。

●显示真彩色图像:波段列表(Available Bands List)中,右键→Load TrueColor 。

●图像保存:Display窗口,File→Save Image As→Image File,选择输出格式、路径和名称,OK。

●动画显示:Display窗口,Tools→Animation,动态显示各波段图像,能很快的分辨出包含信息量较多的波段。

混合像元分解及其应用(ENVI操作文本)讲解

混合像元分解及其应用(ENVI操作文本)讲解

一基于PPI的端元提取借助纯净像元指数(PPI)和n维可视化工具用于端元波谱收集。

第一步、获取纯净像元这个步骤是在MNF变换的结果上计算纯净像元指数(PPI),之后选择阈值范围从PPI图像上获得感兴趣区,感兴趣区包含的像元就是比较纯净的像元。

(1)打开高光谱数据。

(2)在ENVI主菜单中,选择Spectral ->MNF Rotation- > Forward MNF -> Estimate Noise Statistics From Dat a。

在标准ENVI文件选择对话框中,选择高光谱图像文件。

(3)打开Forward MNF Transform Parameters面板,选择MNF输出路径及文件名,单击OK执行MNF变换。

(4)在波段列表中输出MNF影像及特征曲线值。

从图中可以看出,大约20个波段以后的MNF的特征值很小(5)MNF变换后,在ENVI主菜单中,选择 Spectral-> Pixel Purity Index->[FAST] New Output Band。

在打开的Pixel Purity Index Input File对话框中,选择MNF变换结果,单击Spectral Subset按钮,选择前面10个波段(MNF后面波段基本为噪声),单击OK。

(6)在Display窗口中显示PPI结果。

选择Overlay->Region of Interest,在ROI Tool 面板中,选择Options->Band Threshold to ROI,选择PPI图像作为输入波段,单击OK,打开Band Threshold to ROI 面板(图14.19)。

Min Thresh Value:10,Max Thresh Value:空(PPI图像最大值),其他默认设置,单击OK计算感兴趣区,得到的感兴趣区显示在Display窗口中。

第二步、构建n维可视化窗口(1)在ENVI主菜单中,选择Spectral ->n-Dimensional Visualizer,在n-D Visualizer Input File 对话框中选择MNF变换结果,单击OK。

混合像元分解及其应用ENVI操作文本

混合像元分解及其应用ENVI操作文本

一基于PPI的端元提取借助纯净像元指数(PPI)和n维可视化工具用于端元波谱收集。

第一步、获取纯净像元这个步骤是在MNF变换的结果上计算纯净像元指数(PPI),之后选择阈值范围从PPI图像上获得感兴趣区,感兴趣区包含的像元就是比较纯净的像元。

(1)打开高光谱数据。

(2)在ENVI主菜单中,选择Spectral ->MNF Rotation- > Forward MNF -> Estimate Noise Statistics From Dat a。

在标准ENVI文件选择对话框中,选择高光谱图像文件。

(3)打开Forward MNF Transform Parameters面板,选择MNF输出路径及文件名,单击OK执行MNF变换。

(4)在波段列表中输出MNF影像及特征曲线值。

从图中可以看出,大约20个波段以后的MNF的特征值很小(5)MNF变换后,在ENVI主菜单中,选择 Spectral-> Pixel Purity Index->[FAST] New Output Band。

在打开的Pixel Purity Index Input File对话框中,选择MNF变换结果,单击Spectral Subset按钮,选择前面10个波段(MNF后面波段基本为噪声),单击OK。

(6)在Display窗口中显示PPI结果。

选择Overlay->Region of Interest,在ROI Tool 面板中,选择Options->Band Threshold to ROI,选择PPI图像作为输入波段,单击OK,打开Band Threshold to ROI 面板(图14.19)。

Min Thresh Value:10,Max Thresh Value:空(PPI图像最大值),其他默认设置,单击OK计算感兴趣区,得到的感兴趣区显示在Display窗口中。

第二步、构建n维可视化窗口(1)在ENVI主菜单中,选择Spectral ->n-Dimensional Visualizer,在n-D Visualizer Input File 对话框中选择MNF变换结果,单击OK。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

选取合适的端元是成功的混合像元分解的关键。

端元选取包括确定端元数量以及端元的光谱。

理论上,只要端元数量m小于等于b+1(b表示波段数),线性方程组就可以求解。

然而实际上由于端元波段间的相关性,选取过多的端元会导致分解结果更大的误差。

端元光谱的确定有两种方式:(1) 使用光谱仪在地面或实验室测量到的“参考端元”;(2) 在遥感图像上得到的“图像端元”。

方法(1)一般从标准波谱库选择,方法(2)直接从图像上寻找端元可选择的方法有:从二维散点图中基于几何顶点的端元提取,借助纯净像元指数(Pixel Purity Index——PPI)和n维可视化工具用于端元波谱收集,基于连续最大角凸锥(Sequential Maximum Angle Convex Cone——简称SMACC)的端元自动提取。

下面介绍几种端元选择的方法。

1基于几何顶点的端元提取将相关性很小的图像波段,如PCA、IC、MNF等变换结果的前面两个波段,作为X、Y轴构成二维散点图。

在理想情况下,散点图是三角形状,根据线性混合模型数学描述,纯净端元几何位置分布在三角形的三个顶点,而三角形内部的点则是这三个顶点的线性组合,也就是混合像元,如图所示。

根据这个原理,我们可以在二维散点图上选择端元波谱。

在实际的端元选择过程中,往往选择散点图周围凸出部分区域,后获取这个区域相应原图上的平均波谱作为端元波谱。

图散点图上的纯净像元与混合像元下面以MNF变换后的第一、第二波段作为X、Y轴构建二维散点图,如图所示。

图 Scatter Plot窗口2基于PPI的端元提取借助纯净像元指数(PPI)和n维可视化工具用于端元波谱收集,下面详细介绍操作步骤。

第一步、获取纯净像元这个步骤是在MNF变换的结果上计算纯净像元指数(PPI),之后选择阈值范围从PPI图像上获得感兴趣区,感兴趣区包含的像元就是比较纯净的像元。

(1)打开高光谱数据。

(2)在ENVI主菜单中,选择Spectral ->MNF Rotation- > Forward MNF -> Estimate Noise Statistics From Data。

在标准ENVI文件选择对话框中,选择高光谱图像文件。

打开Forward MNF Transform Parameters面板,选择MNF输出路径及文件名,单击OK执行MNF变换。

(3)在ENVI主菜单中,选择Spectral-> Pixel Purity Index->[FAST] New Output Band。

在打开的Pixel Purity Index Input File对话框中,选择MNF变换结果,单击Spectral Subset按钮,选择前面10个波段(MNF后面波段基本为噪声),单击OK。

(4)在Pixel Purity Index Parameters面板中,设置Threshold Factor:3,其他参数默认,选择输出路径及文件名,单击OK执行PPI计算。

(5)在Display窗口中显示PPI结果。

选择Overlay->Region of Interest,在ROI Tool 面板中,选择Options->Band Threshold to ROI,选择PPI图像作为输入波段,单击OK,打开Band Threshold to ROI面板(图)。

Min Thresh Value:10,Max Thresh Value:空(PPI图像最大值),其他默认设置,单击OK计算感兴趣区,得到的感兴趣区显示在Display窗口中。

图 Band Threshold to ROI面板第二步、构建n维可视化窗口(1)在ENVI主菜单中,选择Spectral ->n-Dimensional Visualizer,在n-D Visualizer Input File对话框中选择MNF变换结果,单击OK。

(2)在n-D Controls面板中,选择1、2、3、4、5波段,构建5维的散点图。

第三步:选择端元波谱(1)在n-D Controls面板中,设置适当的速度(Speed),单击Start 按钮,在n-D Visualizer窗口中的点云随机旋转,当在n-D Visualizer窗口中的点云有部分聚集在一块时,单击Stop按钮。

(2)在n-D Visualizer窗口中,用鼠标左键勾画“白点”集中区域,选择的点被标示颜色。

(3)在n-D Controls面板中,选择Class->Items 1:20->White(用于删除点),单击Start按钮,当看到有部分选择的点云分散时候,单击Stop按钮,在n-D Visualizer窗口中选择分散的点,自动会将选择的点删除。

借助<-,->,New按钮可以一帧帧从不同视角浏览以辅助删除分散点。

(4)在n-D Visualizer窗口中,单击右键选择New Class快捷菜单,重复(1)~(3)选择其他“白点”集中区域。

图 n-D Visualizer窗口中的端元第四步、输出端元波谱(1)在n-D Controls面板中,选择Options->Mean All,在Input File Associated with n-D Scatter Plot对话框中选择原图像,单击OK。

(2)获取的平均波谱曲线绘制在n_D Mean绘图窗口中。

(3)参考“波谱分析工具”章节,识别每条波谱曲线对应的地物类型。

(4)在n_D Mean绘图窗口中,选择File->Save Plot As->Spectral Library(或者ASCII),将端元波谱保存为波谱库文件或者文本文件。

3基于SMACC的端元提取连续最大角凸锥(Sequential Maximum Angle Convex Cone )简称SMACC。

SMACC方法可从图像中提取端元波谱以及丰度图像(abundance Image)。

它提供了更快,更自动化的方法来获取端元波谱,但是它的结果近似程度较高,精度较低。

SMACC方法是基于凸锥模型(也称为残余最小化)借助约束条件识别图像端元波谱。

采用极点来确定凸锥,并以此定义第一个端元波谱;然后,在现有锥体中应用一个具有约束条件的斜投影生成下一个端元波谱;继续增加锥体生成新的端元波谱。

重复这个过程直至生成的凸锥中包括了已有的终端单元(满足一定的容差),或者直至满足了指定的端元波谱类别个数。

通俗的解释,SMACC方法首先找到图像中最亮的像元,然后找到和最亮的像元差别最大的像元;继续再找到与前两种像素差别最大的像素。

重复该方法直至SMACC找到一个在前面查找像素过程已经找到的像素,或者端元波谱数量已经满足。

SMACC方法找到的像素波谱转成波谱库文件格式的端元波谱。

下面以一个高光谱数据为例,详细介绍这个工具的操作过程。

(1)在ENVI主菜单中,选择File->Open Image File,打开高光谱数据文件。

(2)在ENVI主菜单中,选择Spectral ->SMACC Endmember Extraction,在Select Input Image对话框中选择高光谱数据文件,单击OK打开SMACC Endmember Extraction Parameters面板(图)。

(3)在SMACC Endmember Extraction Parameters面板中,需要填写以下参数:端元波谱提取数量(Number of Endmembers):15误差容限值(RMS Error Tolerance):0默认值0表示只有达到Number of Endmembers 参数指定的终端个数,SMACC 才会结束。

如果指定一个RMS误差,那么达到这个RMS误差的话,SMACC就会结束,不管是否获取指定数量的端元波谱。

反射率数据推荐使用,辐射亮度值数据推荐使用1。

但是要注意反射率数据常常扩大了倍数,比如扩大了10000倍,这个时候RMS Error Tolerance参数设置应该为10000x1%=100。

选择分离端元波谱的约束条件(unmixing constraint For Endmember Abundances):Positivity Only:把每个波长的正值端元波谱作为约束条件。

这个选项常用于反射率数据,因为负反射率值没有物理意义,Sum to Unity or Less:等于或者小于每个像素计算得到每种物质的组分之和作为约束条件。

当想从反射率数据中获取物质的物理意义和丰度图像的阴影图时候,可以选择这个约束条件,结果中会单独生成一个丰度阴影图像(Shadow Abundance)。

Sum to Unity:等于每个像素计算得到每种物质的组分之和作为约束条件。

当零端元波谱没有物理意义或者想获得暗端元波谱可以选择这个约束条件,这个约束条件推荐用于辐射亮度数据和热辐射数据。

合并相似端元波谱(Coalesce Redundant Endmembers):该选项是基于波谱角制图方法把阈值(在SAM Coalesce Value对话框中定义的值)内的所有端元波谱合并为一个端元波谱。

如果想要区分波谱比较相似的地物,不要选择该选项。

输出结果文件Endmember Location ROIs:该输出包括从终端单元波谱结果中产生的像元感兴趣区文件,这个输出文件是可选的。

Abundance Image:输出丰度图像,该输出文件将包括阴影图像和终端单元聚集图像。

该输出图像是可选的。

Select Output Spectral Library Enter Output Filename:该输出文件中包括提取出的终端单元的波谱库信息。

这个是必先项目。

(4)单击OK,执行SMACC过程。

图 SMACC Endmember Extraction Parameters面板获取的端元波谱以ENVI波谱库文件形式保存,设置的端元数为15,由于设置合并相似端元波谱选项,实际获得6种端元波谱,借助Spectral Analyst功能识别获得的端元波谱。

同时还可以得到每种端元波谱的丰度图像。

相关文档
最新文档