图像处理中面部标志点的标准化

时间:2016-09-16 17:58:16

标签: image-processing normalization dlib

我正在开展一个与从脸上识别情绪(悲伤,快乐,愤怒等)相关的项目。我正在使用dlib库中的面部标志检测器来检测68个兴趣点。对于相同的情绪,这些兴趣点可以根据脸部的方向,眼睛的大小,嘴唇等在不同的脸上而变化。

我想将这些兴趣点归一化,使它们对脸部的方向,眼睛的大小,嘴唇等不变。我可以使用哪些技巧来做到这一点。然后我想用SVM训练数据。

1 个答案:

答案 0 :(得分:1)

Dlib已经通过调用http://dlib.net/face_landmark_detection_ex.cpp.html函数在http://dlib.net/imaging.html#extract_image_chips示例中使用了规范化代码。

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

...
// 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
}

获得标准化形状后 - 如何训练分类器。可能是“按原样”使用地标就足够了,可能需要获得最重要的点并计算它们之间的距离并训练距离数据