人脸识别:PCA特征脸算法的简单解释

信息处理 图像处理 机器学习 检测 人脸检测
2022-02-04 06:01:39

我正在做一个必须使用 eigenface 的项目,但我有一些不确定性,我不知道如何处理它。互联网上有一些关于它的教程,但我无法理解它们的确切含义。

这就是我所知道的:

  • 首先,您必须将图像矩阵转换为向量。因此,您必须将下一行一个接一个地附加到第一行。

  • 然后,如果我们有一个人的许多图像,我们将所有图像的每个特定索引相加,然后除以这些图像的数量。所以

    mean[1]= image1[1]+image2[1]+..../图像数

问题:

  1. 之后我们制作了偏差图像。第一个问题是我们对每一行图像都这样做吗?所以:

    divImage1[1]=image1[1]-均值[1];
    所以我们必须制作偏差图像的协方差矩阵;所以:
    cov(image1)=cov(转置(devImage1)* devImage);

  2. 下一个问题是:这是一个大矩阵。

    • 我应该如何处理?我读到你可以计算它的 subImage 。或者因为它是一个对称矩阵,你只需要计算对角线元素。但我不确定它的主要思想

    • 所以我必须计算这个矩阵的特征向量。这是我们的特征脸。所以我们对一个人的每一张图像都有一个特征脸?

  3. 下一个问题是:我不知道他们什么时候给了我们一个新图像,我们应该如何使用这些特征脸来识别它是某个人?

1个回答

Eigenface中的逐步解释对我来说似乎很清楚。

协方差矩阵就像方差的高维扩展,通过从唯一样本中移除平均值来计算。

  1. 是的,您删除了平均脸(AF从所有图像中提取,但请妥善保存。你的cov(image1)定义对我来说似乎很奇怪,但假设你有它。

  2. 大矩阵的特征向量是特征面(EF),放入矢量形式,您可以将它们重塑为图像形式。想象一下,这是图像库中几个人共有的共同特征。

在这个阶段,每个图像Ik可以通过以下的线性组合来近似EF年代:

Ik=AF+akEF1+bkEF2+ckEF3.
这个想法是同一个人的不同照片将具有几乎相同的ak,bk,ck,因为它们具有相同的特征。但是不同的人会有完全不同的系数。所以比较系数的向量可能有助于区分不同的人。在你的情况下:

  1. 您已经计算出特征脸。一张新照片来了。如果你计算它的系数EFs(称为投影),如果它们与另一个人的系数接近,实际上是最接近的,那么,也许,新图片是该人的图片。

附加链接: