Image processing 图像处理中人脸标志点的归一化

Image processing 图像处理中人脸标志点的归一化,image-processing,normalization,dlib,Image Processing,Normalization,Dlib,我正在从事一个与从面部识别情绪(悲伤、快乐、愤怒等)相关的项目。我正在使用dlib库中的面部地标检测器检测68个兴趣点。对于相同的情绪,这些兴趣点可能会根据不同面部的面部方向、眼睛大小、嘴唇等而有所不同 我想使这些兴趣点正常化,使它们对脸部方向、眼睛大小、嘴唇等保持不变。我可以使用什么技术来做到这一点。然后我想用SVM训练数据 Dlib已经有了通过调用函数在示例中使用的规范化代码 您将需要使用其部分代码来获得标准化的地标-它们仍然有足够的信息来检测情绪,但人脸将被旋转和缩放: ... // 1.

我正在从事一个与从面部识别情绪(悲伤、快乐、愤怒等)相关的项目。我正在使用dlib库中的面部地标检测器检测68个兴趣点。对于相同的情绪,这些兴趣点可能会根据不同面部的面部方向、眼睛大小、嘴唇等而有所不同


我想使这些兴趣点正常化,使它们对脸部方向、眼睛大小、嘴唇等保持不变。我可以使用什么技术来做到这一点。然后我想用SVM训练数据

Dlib已经有了通过调用函数在示例中使用的规范化代码

您将需要使用其部分代码来获得标准化的地标-它们仍然有足够的信息来检测情绪,但人脸将被旋转和缩放:

...
// 1. detect faces
std::vector<rectangle> dets = detector(image);
for (rectangle d : dets)
{
    // 2. get landmarks
    full_object_detection shape = sp(image, d);
    // 3. chip details (normalization params) for normalized image with normalized size of 100 pixels
    chip_details chip = get_face_chip_details(shape, 100);
    // 4. get normalized landmarks
    full_object_detection normalized = map_det_to_chip(shape, chip);
    // now you can used normalized shape in your classifier
}
。。。
// 1. 检测人脸
std::矢量dets=检测器(图像);
用于(矩形d:dets)
{
//2.获得地标
完整对象检测形状=sp(图像,d);
//3.规格化大小为100像素的规格化图像的芯片细节(规格化参数)
chip\u details chip=get\u face\u chip\u details(形状,100);
//4.获取标准化的地标
全对象检测标准化=映射到芯片(形状、芯片);
//现在可以在分类器中使用规格化形状
}
在得到规范化的形状之后,如何训练分类器就成了关键。也许“按原样”使用地标就足够了,也许你需要得到最重要的点并计算它们之间的距离,然后根据距离数据进行训练