Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.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
Matlab sift描述符集PCA矩阵的计算_Matlab_Sift_Pca - Fatal编程技术网

Matlab sift描述符集PCA矩阵的计算

Matlab sift描述符集PCA矩阵的计算,matlab,sift,pca,Matlab,Sift,Pca,我想计算一个数据集的一般PCA矩阵,我将使用它来减少sift描述符的维数。我已经找到了一些算法来计算它,但是我找不到一种使用MATLAB计算它的方法 有人能帮我吗 如果您有权访问统计工具箱,则可以使用命令princomp,或在最新版本中使用命令pca [coeff, score] = princomp(X) 这是正确的做法,但知道如何使用它有点棘手 我的理解是你做了如下事情: sift_image = sift_fun(img) 这会给你一个二值图像:sift_特征? (即使不是二进制的

我想计算一个数据集的一般PCA矩阵,我将使用它来减少sift描述符的维数。我已经找到了一些算法来计算它,但是我找不到一种使用MATLAB计算它的方法


有人能帮我吗

如果您有权访问统计工具箱,则可以使用命令
princomp
,或在最新版本中使用命令
pca

[coeff, score] = princomp(X) 
这是正确的做法,但知道如何使用它有点棘手


我的理解是你做了如下事情:

sift_image = sift_fun(img)
这会给你一个二值图像:sift_特征? (即使不是二进制的,这仍然有效。)

输入,X:

使用
princomp
/
pca
公式化X,使每列都是
numel(sift\u图像)
x1向量
(即
sift\u图像(:)

对所有图像执行此操作,并将它们排列为X中的列。
这样X将是
numel(sift\u图像)
X num\u图像

如果图像大小不同(例如,像素尺寸不同,图像中的场景或多或少不同),则需要将它们放到某个公共空间中,这是一个完全不同的问题

除非您的内容是二进制的,否则您可能需要在列方向(即,对每个图像进行规格化)和行方向(对整个数据集进行规格化)上对X进行去均值/规格化

输出

score
是一组特征向量:它将是num_像素*num_图像。 要将第一个特征向量恢复为图像形状,请执行以下操作:

first_component = reshape(score(:,1),size(im));
对于其余的组件,依此类推。与输入图像一样多的组件

coeff
的每一行都是num_图像(等于num_分量)的权重集,可用于生成每个输入图像。i、 e

input_image_1 = reshape(score * coeff(:,1) , size(original_im));
其中,输入图像1是正确的原始形状
系数(1,:)是一个向量(num_images x1)
分数是像素x图像数
(免责声明:我可能混淆了列/行,但描述是正确的。)


这有用吗?

我知道princomp函数,但问题是我无法获得“n-by-p数据矩阵X”部分。我有一个图像数据集,我用vl_-sift函数一个接一个地提取了它们的sift描述符。在这种情况下,数据矩阵X将是什么?我不知道-这将取决于您如何收集sift描述符以及您计划如何处理它们。通常,使用PCA,您拥有收集了变量的对象,并且您将变量减少为q,其中q感谢真正有用的解释,但是我能做些什么来将图像带入公共空间呢?将它们带入相同空间的目的是使它们具有相同的大小(像素/体素尺寸)并对齐(也称为注册)。(…从上一篇文章继续…)根据您的数据,这可能非常容易。MATLAB内置了一些东西(),我在这里看到了一些关于堆栈溢出的东西。我处理医学图像,并使用专门为这些问题设计的工具。这些图像可能有不同数量的SIFT向量,那么在这种情况下,X将如何被框起来?