FitEyesDirection
Только в Wrap4D
FitEyesDirection автоматически вычисляет угол наклона и отклонения геометрии глаза путем сравнения визуализированной геометрии глаза и входного изображения попиксельно.
Входы
- Левый глаз
Geometry
Геометрия левого глаза, которую необходимо повернуть в соответствии с эталоном- Правый глаз
Geometry
Геометрия правого глаза, которую необходимо повернуть в соответствии с эталоном
Примечание
Входная геометрия глаза должна быть направлена по оси Z с центром вращения в точке (0, 0, 0). В нашей галерее уже есть правильно расположенная геометрия. Далее вам нужно расположить геометрические формы глаз в глазницах с помощью преобразований. Алгоритм вращает глаза вокруг центра вращения (точки (0, 0, 0)), поэтому если геометрия изначально стоит иначе, глаза будут вращаться неправильно.
Совет
Из наших тестов следует, что лучше всего подойдет геометрия с плоской радужкой. Эта геометрия уже есть в нашей галерее.
- Камеры
Camera
(несколько) Камеры без искажений- Целевые изображения
Image
(несколько) Неискаженные изображения, соответствующие входным данным Камеры- Обнаружения
FacialDetection
(несколько) Неискаженные обнаружения, соответствующие входным изображениям и камерам. Необходимо ограничить область изображения, которая будет использоваться при подгонке
Совет
После успешного добавления всех входных данных визуальный редактор станет активен. Если все подключено правильно, то геометрия глаз будет отображаться в правильном положении, как на изображении ниже.
Выход
- Левый глаз
Geometry
Геометрия левого глаза с результатом трансформации вращения в сочетании с предыдущими трансформациями геометрии- Правый глаз
Geometry
Геометрия правого глаза с результатом трансформации вращения в сочетании с предыдущими трансформациями геометрии
Совет
Чтобы получить трансформацию центрированного глаза, вам необходимо применить все входные преобразования в инвертированном виде и в обратном порядке. Самый простой способ сделать это — использовать ноду CopyTransform. Вам необходимо скопировать преобразование из входа ноды в инвертированном виде и применить к выходу ноды FitEyesDirection. Эта трансформация понадобится в ноде InterpolateEyes.
Параметры
- Вычислить:
начинается процесс подгонки
- Автовычисление:
если установлено, нода будет пересчитываться каждый раз, когда изменяются некоторые параметры или входные данные.
- Видимость:
смешивает по маске рендеринг глаз с входными изображениями
- Тип предварительной подгонки:
если установлено, независимо от исходного положения глаза, оптимизация начнется с центра маски. Включено по умолчанию, не рекомендуется отключать без необходимости
- Итерации оптимизации:
количество итераций оптимизации. По умолчанию принимает большое значение, но если решение найдено и количество итераций не достигло предела, то оптимизация прекращается
- Итерации субдискретизации:
количество внешних итераций, в которых изображение уменьшается и выполняется основная оптимизация. В тестах 3 и 4 итерации субдискретизации оказались наиболее универсальными значениями
- Точность:
число от 1 до 10. Увеличение параметра увеличивает точность, необходимую для преждевременного завершения подгонки. В большинстве тестов значение параметра 4 является достаточным, но в некоторых случаях может потребоваться увеличить значение параметра
- Порог доверия к подгонке изображения:
число, показывающее, насколько мы доверяем входным данным. Это значит, что если разница между рендером и изображением в пикселе больше порога, то это не будет считаться ошибкой. По умолчанию порог равен 50, но может принимать значение от 0 до 255. Небольшое значение порога позволяет игнорировать блики в глазах и другой шум. При отсутствии бликов и шума значение параметра можно увеличить.
- Согласованность расстояния взгляда:
вес, который влияет на то, насколько на результат подгонки будет влиять взаимное вращение глаз. Если в опции нет необходимости, вес устанавливается равным 0, в противном случае вес делается небольшим (например 0,001)
- Ширина изображения:
На внутреннем уровне алгоритм уменьшит размер изображения, чтобы ускорить свою работу. Чрезмерное уменьшение размера изображения может ухудшить качество подгонки. Значение по умолчанию — 1200, оно использовалось для всех наших тестов.
- Уменьшение маски по размеру X(Y):
уменьшение размера маски по координатам. Используется для удаления ресниц и век с зоны подгонки, однако важно постараться не потерять информацию о глазах.
Исправление проблем
Слишком большая маска
Плохая подгонка глаз может произойти, если для оптимизации предоставлено слишком много площади. Для решения проблемы необходимо увеличить значения параметров Уменьшение маски по размеру X и Уменьшение маски по размеру Y. Результат изменения этих параметров можно увидеть в визуальном редакторе. В примере мы изменили параметры 3->10 и 3->8 соответственно.
Подгонка с уменьшенной маской:
Низкая точность
Уменьшение параметра Точность позволяет заметно ускорить подгонку глаз, но если переусердствовать, оптимизация остановится слишком рано, и результат подгонки не будет соответствовать изображению. Также возможно, что начального значения параметра (4) может оказаться недостаточно. Вы заметите это, если результат узла близок к желаемому, но не в точности совпадает
Дрожание
Если вы заметили дрожание при просмотре последовательности, возможно, проблема в том, какую текстуру вы используете для оптимизации. Если радиус текстуры радужной оболочки намного больше или меньше, то алгоритм может по-разному поворачивать глаз от кадра к кадру, и будет считаться, что он все сделал правильно. Проверить совпадение радиусов можно с помощью нод Render и MergeImage или в визуальном редакторе ноды FitEyesDirection.
Ниже приведен пример текстуры со слишком маленьким радиусом, а также с подходящим радиусом