Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 主成分分析问题_Math_Matlab_Image Processing_Linear Algebra_Pca - Fatal编程技术网

Math 主成分分析问题

Math 主成分分析问题,math,matlab,image-processing,linear-algebra,pca,Math,Matlab,Image Processing,Linear Algebra,Pca,我不确定这是不是合适的地方,但我想: 我有一个300张高分辨率图片的数据库。我想在这个数据库上计算PCA,到目前为止我做的是:-将每个图像重塑为单个列向量-创建我所有数据的矩阵(500x300)-计算平均列并将其减去我的矩阵,这给了我X-计算相关性C=X'X(300x300)-求C的特征向量V和特征值D。-PCA矩阵由XV*D^-1/2给出,其中每列为主分量 这是伟大的,给了我正确的组成部分 现在我要做的是在同一个数据库上做同样的PCA,只是图像的分辨率较低 这是我的结果,左边是低分辨率,右边

我不确定这是不是合适的地方,但我想:

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

这是伟大的,给了我正确的组成部分

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

这是我的结果,左边是低分辨率,右边是高分辨率。你可以看到大多数图片都很相似,但有些图片不一样(我圈出的那些)

有什么办法可以解释吗?我需要我的算法具有相同的图像,但一个设置为高分辨率,另一个设置为低分辨率,我如何才能做到这一点


谢谢

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

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


如果你的图像没有按权重排序,如果你圈出的图像权重很小,我也不会感到惊讶,这可能只是计算精度错误或类似的问题。在任何情况下,我们都可能需要更多关于如何减少采样的信息,在显示图像之前如何对图像进行排序。另外,我不希望所有的图像都非常相似,因为你基本上去掉了相当多的频率成分。我很确定这与将图像拉伸成向量以计算PCA这一事实没有任何关系,但尝试将它们拉伸到不同的方向(以列代替行,反之亦然),然后尝试。如果它改变了结果,那么您可能希望尝试以不同的方式执行PCA,但不确定如何执行。

谢谢。我通过简单地将高分辨率PCA结果调整为较低的图像分辨率,使其正常工作。这样,我确信两项决议的基础完全相同