6

我不确定这是正确的地方,但我走了:

我有一个包含 300 张高分辨率图片的数据库。我想在这个数据库上计算 PCA,到目前为止,我所做的是: - 将每个图像重塑为单列向量 - 创建我所有数据的矩阵 (500x300) - 计算平均列并将其减去我的矩阵,这给了我 X - 计算相关 C = X' X (300x300) - 找到 C 的特征向量 V 和特征值 D。 - PCA 矩阵由 X V*D^-1/2 给出,其中每列是主成分

这很棒,给了我正确的组件。

现在我正在做的是在同一个数据库上做同样的 PCA,只是图像的分辨率较低。

在此处输入图像描述

这是我的结果,左边是低分辨率,右边是高分辨率。你能看到它们中的大多数是相似的,但有些图像不一样(我圈出的那些)

有什么办法可以解释这一点吗?我需要我的算法具有相同的图像,但一组是高分辨率的,另一组是低分辨率的,我怎样才能做到这一点?

谢谢

4

1 回答 1

2

您使用的过滤器很可能对某些组件做了一两件事。毕竟,较低分辨率的图像不包含较高的频率,这也有助于您获得哪些组件。如果这些图像上的分量权重 (lambdas) 很小,那么也很有可能出现错误。

我猜你的组件图像是按重量排序的。如果是,我会尝试使用不同的预下采样滤波器,看看它是否会给出不同的结果(本质上是通过不同的方式获得较低分辨率的图像)。有可能出现不同的分量在该滤波器的过渡带中具有大量频率内容。看起来用红色圈出的图像几乎是彼此完美的反转。过滤器会导致这样的事情。

如果您的图像没有按重量排序,如果您圈出的图像重量很小,我不会感到惊讶,这可能只是计算精度错误或类似的东西。无论如何,我们可能需要更多关于如何下采样、如何在显示图像之前对图像进行排序的信息。此外,我不希望所有图像都非常相似,因为您基本上摆脱了相当多的频率分量。我很确定这与您将图像拉伸成向量以计算 PCA 的事实没有任何关系,但尝试将它们拉伸到不同的方向(取列而不是行,反之亦然)和试试看。如果它改变了结果,那么也许您可能想尝试以不同的方式执行 PCA,

于 2011-08-12T15:35:32.443 回答