lez*_*lon 6 math matlab image-processing linear-algebra pca
我不确定这是正确的地方,但我在这里:
我有一个高分辨率的300张图片数据库.我想在这个数据库上计算PCA,到目前为止,这就是我所做的: - 将每个图像重塑为单个列向量 - 创建所有数据的矩阵(500x300) - 计算平均列并将其减去我的矩阵,这给了我X - 计算相关性C = X'X(300x300) - 找到C的特征向量V和本征值D. - PCA矩阵由X V*D ^ -1/2给出,其中每列是a主成分
这很棒,给了我正确的组件.
现在我正在做的是在同一个数据库上进行相同的PCA,除了图像的分辨率较低.

这是我的结果,左边的低分辨率和右边的高分辨率.您是否可以看到它们中的大多数相似但有些图像不一样(我圈出的图像)
有什么方法可以解释这个吗?我需要我的算法具有相同的图像,但是一个设置在高分辨率,另一个设置在低分辨率,我怎么能实现这一点?
谢谢
您使用的过滤器很可能对某些组件做了一两件事。毕竟,较低分辨率的图像不包含较高的频率,而较高的频率也有助于您将获得哪些组件。如果这些图像的分量权重 (lambda) 很小,则很可能会出现错误。
我猜你的组件图像是按重量排序的。如果是,我会尝试使用不同的预下采样滤波器,看看它是否给出不同的结果(本质上是通过不同的方式获得较低分辨率的图像)。出现不同结果的分量可能在该滤波器的过渡带中具有大量频率内容。看起来红色圈出的图像几乎是彼此完美的倒置。过滤器可能会导致这样的事情。
如果您的图像没有按权重排序,那么如果您圈出的图像权重很小,并且这可能只是计算精度错误或类似的问题,我不会感到惊讶。无论如何,我们可能需要更多有关如何缩减采样、如何在显示图像之前对图像进行排序的信息。另外,我不希望所有图像都非常相似,因为您基本上消除了相当多的频率分量。我很确定这与您将图像拉伸为向量来计算 PCA 的事实没有任何关系,但尝试将它们以不同的方向拉伸(采用列而不是行,反之亦然)并且尝试一下。如果它改变了结果,那么也许您可能想尝试以不同的方式执行 PCA,但不确定如何执行。