主要内容

nfindr

使用N-FINDR提取端成员签名

    描述

    例子

    endmembers= nfindr (inputDatanumEndmembers从高光谱数据中提取端元签名多维数据集通过N-finder (N-FINDR)算法。numEndmembers为N-FINDR算法需要提取的端成员签名数。有关N-FINDR方法的更多信息,请参见算法

    例子

    endmembers= nfindr (inputDatanumEndmembers名称,值除前面语法中的输入参数外,还使用一个或多个名称-值对参数指定选项。使用此语法可设置迭代次数和降维的选项。

    请注意

    此函数需要图像处理工具箱™高光谱成像库.您可以安装图像处理工具箱高光谱成像库从Add-On Explorer。有关安装插件的更多信息,请参见获取和管理插件

    例子

    全部折叠

    读取一个高光谱数据到工作空间。

    超立方(“paviaU.hdr”);

    求出高光谱数据立方体中存在的光谱不同的端元数countEndmembersHFC函数。

    numEndmembers = countEndmembersHFCPFA的, 10 ^ 7);

    使用N-FINDR方法计算端元。默认情况下,nfindr函数采用最大噪声分数(MNF)变换进行预处理。迭代次数的默认值是估计的端元数的3倍。

    endmembers = nfindr(hcube.DataCube,numEndmembers);

    绘制高光谱数据的端元图。

    图(endmembers) xlabel(带数字的) ylabel (的像素值ylim([0 9000]) title({“Endmembers光谱”,['端元数= 'num2str (numEndmembers)]});

    读取一个高光谱数据到工作空间。

    超立方(“paviaU.hdr”);

    求出高光谱数据立方体中存在的光谱不同的端元数countEndmembersHFC函数。

    numEndmembers = countEndmembersHFCPFA的, 10 ^ 7);

    使用N-FINDR方法计算端元。指定迭代次数的值为1000。选择主成分分析(PCA)作为预处理的降维方法。

    Endmembers = nfindr(hcube.)DataCube numEndmembers,“NumIterations”, 1000,“ReductionMethod”主成分分析的);

    绘制高光谱数据的端元图。

    图(endmembers) xlabel(带数字的) ylabel (的像素值ylim([0 9000]) title({“Endmembers光谱”,['端元数= 'num2str (numEndmembers)]});

    输入参数

    全部折叠

    输入高光谱数据,指定为三维数字数组或超立方体对象。如果输入是a超立方体对象,则该函数从其中读取高光谱数据DataCube财产。

    高光谱数据是一个数字数组的大小——- - - - - -N——- - - - - -C而且N分别为高光谱数据中的行数和列数。C是高光谱数据中的光谱频带数。

    数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

    要提取的端成员数,指定为正标量整数。取值范围必须为[1C]。C是输入高光谱数据的光谱频带数。

    数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

    名称-值参数

    指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。

    在R2021a之前,名称和值之间用逗号隔开,并括起来的名字在报价。

    例子:“NumIterations”nfindr(立方体,7日,100年,“方法”,“没有一个”)

    迭代次数,指定为正标量整数。默认值为3.PP要提取的端成员签名的数量。算法的计算时间随着迭代次数的增加而增加。

    数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

    降维方法,指定为以下值之一:

    • “延长”-使用最大噪声分数(MNF)方法进行降维。这是默认设置。

    • 主成分分析的-使用主成分分析(PCA)方法进行降维。

    如果指定了这个参数,函数首先使用指定的方法降低输入数据的谱维数。然后,根据简化后的数据计算端元签名。

    数据类型:字符|字符串

    输出参数

    全部折叠

    端元签名,作为大小矩阵返回C——- - - - - -P数据类型与输入的高光谱数据的数据类型相同。

    数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

    算法

    N-FINDR是一种寻找高光谱数据端元的迭代方法。该方法假设由端元(最纯像素)组成的单纯形的体积大于由任何其他像素组合[1]定义的任何其他体积。有关步骤如下:

    1. 利用多分量函数或主成分分析计算输入数据的主成分频带并降低谱维数。将待提取的主成分带数设置为待提取的端元数。从主成分带中提取端元。

    2. 随机选择n从简化数据中提取的像素光谱数作为初始端元集。

    3. 对于迭代1,将初始端元集合表示为 e 1 1 e 2 1 e p 1

      将端元视为单纯形的顶点,并使用计算体积

      V E 1 | 依据 E 1 |

      在哪里 E 1 1 1 1 e 1 1 e 2 1 e p 1

    4. 对于迭代2,选择一个新的像素光谱r,以致于 r e 1 1 e 2 1 e p 1

    5. 将集合中的每个端元替换为r然后计算单纯形的体积VE(2)

    6. 取代th集合中的端元r,如果计算的卷VE(2)大于VE(1).这就产生了一组更新的端元。例如,如果= 2,在第二次迭代结束时得到的新端元集为 e 1 2 e 2 2 r e p 2

    7. 对于每次迭代,选择一个新的像素光谱r重复步骤5和6。每次迭代都会产生一个端成员的更新集。当迭代的总次数达到指定的值时,迭代结束NumIterations

    参考文献

    [1] Winter, Michael E. < N-FINDR:高光谱数据中快速自主光谱端元确定算法>。SPIE成像光谱法3753(1999年10月):266-75。https://doi.org/10.1117/12.366289。

    版本历史

    在R2020a中引入