повернуть лицо с непереднего на передний opencv

В течение недели я боролся с проблемой, заключающейся в том, что я не могу повернуть лицо не спереди, как левое лицо в этом изображение на передний план, как правое лицо на том же изображении.

введите описание изображения здесь

1). Я использую учебник о delaunay на веб-сайте Learnopencv, чтобы получить весь треугольник левой грани (около 138 треугольников) следующим образом:

...

triangle num 4: [100, 383] | [120, 374] | [112, 385]

triangle num 5: [120, 374] | [100, 383] | [92, 345]

triangle num 6: [136, 396] | [137, 379] | [151, 394]

triangle num 7: [137, 379] | [136, 396] | [118, 395]

triangle num 8: [92, 345] | [86, 414] | [80, 451]

triangle num 9: [86, 414] | [92, 345] | [100, 383]

triangle num 10: [86, 414] | [100, 383] | [118, 395]

triangle num 11: [116, 336] | [120, 374] | [92, 345]

triangle num 12: [120, 374] | [116, 336] | [133, 344]

...

2). и эта библиотека: https://github.com/chili-epfl/attention-tracker (который может оценить позу головы), чтобы получить матричное преобразование 4x4 положения головы левого лица, эта матрица, по-видимому, является результатом функции Rodrigues в opencv.

 0.659585  -0.749291 -0.0592507  0.0591621 

-0.0327269 -0.107385 0.993679    -0.00523744 

-0.750917  -0.653477 -0.0953513  -0.280204 

 0         0         0           1 

Поэтому я не знаю, каким будет следующий шаг, чтобы повернуть весь треугольник из шага 1 с матрицей 4x4 из шага 2, чтобы получить результат Right Face. Пожалуйста, помогите!


person Rain Maker    schedule 30.04.2016    source источник
comment
Может быть, какой-то код и изображения будут полезны для получения ответов...   -  person tfv    schedule 30.04.2016
comment
Код действительно длинный для чтения, поэтому я думаю, что результат моего кода здесь будет более ясным. Чтобы быть более конкретным, мой список треугольников объявляется следующим образом: cv::vector‹cv::vector‹Point2f› › list_tri_points Таким образом, каждый элемент будет списком 2D-точек, таких как результат на шаге 1 и матрица 4x4 на шаге 2. Я храню в переменной типа cv::Mat Чего я хочу добиться, так это каким-то образом преобразовать все треугольники в list_tri_points в новый список треугольников, используя матрицу 4x4. И этот новый список треугольников будет представлен на лицевой стороне   -  person Rain Maker    schedule 30.04.2016


Ответы (1)


Как спроецировать лицо из нефронтальной проекции в фронтальную проекцию — сложная задача, даже если вы спроецировали положение ориентира лица. Я предлагаю использовать две библиотеки с открытым исходным кодом, которые я использовал раньше.

Первый предоставлен MIT. этот код не только фронтализатор лица и может использоваться для любого объекта. https://bitbucket.org/gbhuang/congealreal

Вторая ссылка на библиотеку находится ниже той, которая предназначена только для проекции лица.

https://github.com/eranid/adience_align

Я думаю, что вторая библиотека является наиболее полезной.

person erfan zangeneh    schedule 30.04.2016
comment
Спасибо Zangeneh за ответ на мой вопрос. Моя цель - сделать распознавание лица, сравнивая отношения между всеми возможными парами ориентиров входного изображения (не фронтальное изображение лица) с отношениями сохраненного изображения (фронтальное изображение лица). Но с не фронтальной гранью пропорции не могут быть правильными, поэтому я должен преобразовать ее во фронтальную грань, а затем вычислить соотношения. Но если, как вы сказали, это сложная проблема, есть ли какие-либо другие решения для правильного сравнения соотношений двух лиц, которые учитывают разницу в позе, но без проекции лица? - person Rain Maker; 01.05.2016
comment
Если вы хотите внедрить систему распознавания лиц, которая может распознавать лица в разных позах, у вас есть два пути. Первый способ — использовать модуль фронтализации, а второй — использовать оценку позы лица, которая сообщает нам, не является ли лицо фронтальным. - person erfan zangeneh; 01.05.2016
comment
Привет, Зангене, не могли бы вы более подробно объяснить, как использовать оценку позы при распознавании лиц? Я все еще не понимаю. Спасибо! - person Rain Maker; 02.05.2016