Существуют ли методы выравнивания лица с использованием псевдо-трехмерных ориентиров?
Есть несколько способов выполнить выравнивание лица с помощью двухмерных ключевых точек для двухмерных изображений. Представьте, что есть два кадра, один с правильным лицом, назовите его «оригинальным». И немного изменено другое, например, есть немного вращения головы или движения учеников, назовем это «повернутым». Обычный трубопровод для выравнивания:
- Обнаружить лицо и получить прямоугольник (например,
dlib.get_frontal_face_detector()
) - Найдите ключевые точки (например,
cv2.AKAZE_create().detectAndCompute()
) на "исходном" и "повернутом" - Сопоставить их.
- Выполнять
cv2.warpAffine()
или жеcv2.warpPerspective()
преобразование "повернутого" изображения, чтобы подогнать его к "исходному"
Мне нужно такое выравнивание, чтобы стабилизировать видео. Учитывая два кадра с небольшими различиями, мне нужно быстро и хорошо выровнять их.
Из-за того, что грани не плоские, этот метод не может достичь желаемого преобразования. Голова может быть помещена в то же место, но все равно повернута. Интересно, есть ли способ вместо этого использовать псевдо-трехмерные ориентиры лица?