我不确定这是正确的地方,但我在这里:
我有一个高分辨率的300张图片数据库。我想在这个数据库上计算PCA,到目前为止,这就是我所做的: - 将每个图像重塑为单个列向量 - 创建所有数据的矩阵(500x300) - 计算平均列并将其减去我的矩阵,这给了我X - 计算相关性C = X' X(300x300) - 找到C的特征向量V和本征值D. - PCA矩阵由X V * D ^ -1 /给出2,其中每列是主成分
这很棒,给了我正确的组件。
现在我正在做的是在同一个数据库上进行相同的PCA,除了图像的分辨率较低。
这是我的结果,左边的低分辨率和右边的高分辨率。您是否可以看到它们中的大多数相似但有些图像不一样(我圈出的图像)
有什么方法可以解释这个吗?我需要让我的算法拥有相同的图像,但是一个设置在高分辨率,另一个设置在低分辨率,我怎么能实现这个呢?
感谢
答案 0 :(得分:2)
您使用的过滤器很可能对某些组件做了一两件事。毕竟,较低分辨率的图像不包含更高的频率,这也会影响您将获得的组件。如果这些图像的分量权重(lambdas)很小,那么也很有可能出错。
我猜你的组件图像按重量排序。如果它们是,我会尝试使用不同的预下采样滤波器,看看它是否给出不同的结果(基本上通过不同的方式获得较低分辨率的图像)。不同出现的组件可能在该过滤器的过渡带中具有大量频率内容。它看起来像是用红色圈出的图像几乎是彼此完美的反转。过滤器可以导致这样的事情。
如果您的图像不按重量排序,我不会感到惊讶,如果您圈出的图像的重量非常小,而且可能只是计算精度错误或类似的东西。在任何情况下,我们可能需要更多关于您如何下采样的信息,以及在显示图像之前如何对图像进行排序。此外,我不希望所有图像都非常相似,因为你基本上摆脱了相当多的频率组件。我很确定它与你将图像延伸到矢量来计算PCA的事实没有任何关系,但是尝试将它们拉伸到不同的方向(取列而不是行,反之亦然)和试试看。如果它改变了结果,那么也许你可能想尝试以不同的方式执行PCA,而不确定如何。