我有一个表示高光谱图像的 3-D 矩阵:2 维表示不同的像素,1 维表示不同的光谱带。
我需要按以下方式分割该图像: 1. 将图像按像素划分为 2 部分。 2. 计算 2 个片段中每个片段的平均光谱值。 3. 将 2 个分段中每个分段中的所有像素设置为等于所述平均值。
最后,我需要将图像分为 2 个片段,同一片段中的所有像素等于该片段的光谱平均值。
我尝试过使用kmeans,但到目前为止没有成功。
有人知道该怎么做吗?
如果您详细说明
kmeans()
的哪些内容不适合您,将会有所帮助。我怀疑您正在尝试在调用 kmeans
时保留图像尺寸(m x n 像素)。
如果跨行/列折叠,kmeans 应该能够通过其光谱带向量对每个像素进行分类。
[m,n,sps] size(data); %pixel row, pixel col, spectral band
numGroups = 2;
[idx,centers] = kmeans(reshape(data,[m*n,sps]),numGroups);