image-processing - 图像处理中面部标志点的归一化

标签 image-processing normalization dlib

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

我想标准化这些兴趣点,使它们不受面部方向、眼睛大小、嘴唇等的影响。我可以使用哪些技术来做到这一点。然后我想用 SVM 训练数据。

最佳答案

Dlib 已经具有在 http://dlib.net/face_landmark_detection_ex.cpp.html 中使用的规范化代码调用 http://dlib.net/imaging.html#extract_image_chips 索取 sample 功能。

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

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

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

关于image-processing - 图像处理中面部标志点的归一化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39537536/

相关文章:

flutter - 抖动的图像处理导致像素化

c++ - dlib 19.6 多分类器训练数据

python - anaconda安装dlib报错

python - 在 Python 中使用 OpenCv2 编写多个图像

c# - 如何确定图像中的最大颜色?

c++ - 检测不完整/完美的三角形

r - 在ggplot2中分别标准化多面直方图

javascript - 将 0 - 1 中的任何数字归一化的函数

c++ - 如何在没有循环的情况下规范化 opencv Mat 的行?

android - NV21 ByteArray 到 array2d<rgb_pixel>