1
我使用OpenCV来计算用2D点表示的一组像素的PCA。但我不确定PCA如何计算这些点的平均值,因为这不是我所期望的。OpenCV PCA的意思是如何计算的
如果我有以下3点(x,y)
:
(2,1), (2,2), (2,3)
然后我计算PCA(OpenCvSharp被使用,但它只是一个包装):
Mat input = new Mat(3,2, MatType.CV_32FC1);
input.Set(0,0, 2f);
input.Set(0,1, 1f);
input.Set(1,0, 2f);
input.Set(1,1, 2f);
input.Set(2,0, 2f);
input.Set(2,1, 3f);
Mat mean = new Mat();
PCA pcaResult = new PCA(input, mean, PCA.Flags.DataAsRow);
float meanX = pcaResult.Mean.Get<float>(0,0);
float meanY = pcaResult.Mean.Get<float>(0,1);
meanX
和meanY
是(0.6666667, 0)
。在那里我会预期他们是(2,2)
(我猜正在发生某种形式的规范化)。 PCA是如何计算的,我需要做些什么来计算我期望的平均值?或者我需要将平均值传递给PCA
?
是的,事实证明这是OpenCvSharp,平均返回特征值。我已经在OpenCvSharp的Github页面上发布了这个问题。 – Ayb4btu