主要内容

denoiseNGMeet

基于非局部与全局相结合的高光谱图像去噪方法

描述

例子

outputData= denoiseNGMeet (inputData采用非局部满足全局(non-local meets global, NGMeet)方法降低高光谱数据中的噪声。这是一种融合了空间非局部相似性和光谱低秩近似的迭代方法来估计原始像素值。有关更多信息,请参见算法

例子

outputData= denoiseNGMeet (inputData名称,值还使用一个或多个名称-值对参数指定选项。使用此语法设置NGMeet方法的参数值。

请注意

此函数需要图像处理工具箱™高光谱成像库.你可以安装图像处理工具箱高光谱成像库从附加的探险家。有关安装附加组件的详细信息,请参见获取和管理附加组件

例子

全部折叠

读取高光谱数据到工作区。

hcube =超立方体(“paviaU.hdr”);

对输入数据进行归一化,并在归一化后的输入数据中加入高斯噪声。

hcube =超立方体(重新调节(hcube.DataCube) hcube.Wavelength);inputData = imnoise (hcube。DataCube,“高斯”, 0, 0.005);inputData = assignData (hcube,“:”“:”“:”, inputData);

用NGmeet方法去噪高光谱数据。

outputData = denoiseNGMeet (inputData);

估计RGB图像的输入,噪声,和去噪的输出数据。通过应用对比度拉伸来增加图像的对比度。

originalImg =再着色(hcube,“方法”“rgb”“ContrastStretching”,真正的);noisyImg =再着色(inputData,“方法”“rgb”“ContrastStretching”,真正的);denoisedImg =再着色(outputData,“方法”“rgb”“ContrastStretching”,真正的);

显示原始、噪声和去噪数据的RGB图像。

图蒙太奇({originalImg、noisyImg denoisedImg})标题('Input Image | noise Image | Denoised Image');

读取高光谱数据到工作区。

hcube =超立方体(“paviaU.hdr”);

对输入数据进行归一化,并在归一化后的输入数据中加入高斯噪声。

hcube =超立方体(重新调节(hcube.DataCube) hcube.Wavelength);inputData = imnoise (hcube。DataCube,“高斯”, 0, 0.005);inputData = assignData (hcube,“:”“:”“:”, inputData);

利用NGmeet方法对高光谱数据进行去噪。设置平滑参数值为0.01,迭代次数为4次。

outputData = denoiseNGMeet (inputData,“σ”, 0.01,“NumIterations”4);

估计RGB图像的输入,噪声,和去噪的输出数据。通过应用对比度拉伸来增加图像的对比度。

originalImg =再着色(hcube,“方法”“rgb”“ContrastStretching”,真正的);noisyImg =再着色(inputData,“方法”“rgb”“ContrastStretching”,真正的);denoisedImg =再着色(outputData,“方法”“rgb”“ContrastStretching”,真正的);

显示原始、噪声和去噪数据的RGB图像。

图蒙太奇({originalImg、noisyImg denoisedImg})标题('Input Image | noise Image | Denoised Image');

输入参数

全部折叠

输入高光谱数据,指定为三维数字数组,表示大小的高光谱数据立方体——- - - - - -N——- - - - - -C超立方体对象。如果输入是a超立方体对象时,函数读取存储在DataCube对象的属性。高光谱数据立方体必须是真实的、非稀疏的。

名称-值参数

指定可选的逗号分隔的对名称,值参数。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:denoiseNGMeet (hcube“σ”,0.3)

平滑参数,指定为逗号分隔对组成“σ”一个正标量。默认值是0.1乘以噪声方差(σn).增加这个值,就增加了去噪输出的平滑程度。

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

低秩近似下的光谱带数,指定为逗号分隔对,由“SpectralSubspace”一个范围为(0,C].C为输入数据中的频带数。高光谱数据中端元的数量可以很好地估计用于低秩近似的光谱带的数量。的方法可以找到输入高光谱数据中的端元数countEndmembersHFC函数。

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

由逗号分隔的对组成的迭代次数“NumIterations”一个正整数标量。增加这个值可以得到更好的去噪结果。

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

输出参数

全部折叠

去噪的高光谱数据,以三维数字数组或超立方体对象。

算法

NGMeet方法通过使用这些步骤来估计去噪后的数据立方体。对于每一个迭代,

  1. 计算噪声输入数据的谱低秩近似(Y),利用奇异值分解。近似结果是一个简化的数据立方体()和相关的正交基一个

  2. 对简化后的数据立方体进行空间去噪采用非局部相似过滤。你可以通过指定平滑参数来控制平滑的程度“σ”

  3. 执行逆投影。映射去噪简化的数据立方体到原空间的正交基一个.结果为去噪输出(X)迭代时得到的

  4. 执行迭代正则化。更新噪声输入数据,Y我+ 1λX+ (1 -λY

  5. 对于指定的迭代次数,重复步骤1到4。最终的价值X为去噪后的高光谱数据。

参考文献

何伟,姚全明,李超,横古屋直人,赵启斌。“非局部满足全局:高光谱去噪的综合范式”。在2019 IEEE/CVF计算机视觉与模式识别大会(CVPR), 6861 - 70。美国加州长滩:IEEE, 2019。https://doi.org/10.1109/CVPR.2019.00703。

介绍了R2020b