Oxagile делится разработками коллег в DL Service

Рассказывает Дмитрий Поздняков, Head of Deep Learning Department Oxagile.

В два раза больше

Одна из задач в пуле проекта — повысить точность распознавания лиц на кадрах, снятых носимыми видеорегистраторами. Объективы у этих камер — "рыбий глаз", только они позволяют снимать все, что происходит перед регистратором. 

Но очень часто герои этих видео оказываются на краях кадра и их лица сильно искажаются. Алгоритмы распознавания лиц из-за этого иногда не могут с ними справиться. Нужно сначала исправить так называемые бочкообразные искажения объектива (дисторсию). 

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

Если сравнить эффективность классического подхода и нашего, то площадь исправленного изображения у нас, как минимум, в два раз выше. Мы и сохраняем информацию по краям, и получаем правильную геометрию картинки. 

У меня и команды ушло на эту задачу примерно две недели. Алгоритм принял заказчик, его удовлетворил результат, но мне не очень нравилось качество исполнения. Я потратил еще некоторое время на доводку, чтобы работа приобрела реальную научную ценность.

 

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

 

Новый математический аппарат

Оптические искажения заметны тем сильнее, чем дальше от края кадра мы смотрим. Чтобы их скорректировать, нужно определенным образом растянуть изображение. Но чем дальше от края, тем искажения больше и тем сильнее придется растягивать. 

Растягивать получится только до определенного предела. Классические алгоритмы просто обрезают все, что "вылетает" за этот предел, тем самым сужая поле зрения. Упрощенно говоря, если до коррекции угол обзора был 180 градусов, то после останется примерно 115. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

У нас была задача: "исправить искажения, не потеряв поле зрения".

Звучит невыполнимо:  как можно одновременно и поправить поле зрения, и ничем не пожертвовать. Нужно было растягивать изображение по-новому. 

Пришлось начать решение задачи почти с нуля. Есть общепринятые подходы, которые были созданы очень давно и все ими пользуются. Порой не задумываясь об условиях их создания и вытекающих из них ограничений. 

У нас сегодня есть намного большие возможности вычислительной техники, почему бы не посмотреть на проблему по-новому и не создать новый математический аппарат для ее решения, отказавшись от общепринятых приближений. 

 

Все подробности решения проблемы изложены в статье. Из нее можно узнать, как построен новый  матаппарат и чем он отличается от классического решения. 

 

В результате, мы сохраняем все поле зрения на кадрах, снятых объективом "рыбий глаз".  При этом убираем дисторсионные искажения изображения, которые свойственны таким объективам: горизонтальные линии вновь становятся горизонтальными, вертикальные - вертикальными. 

 

 

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

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

Версия для печатиВерсия для печати
  • 1
  • 2
  • 3
  • 4
  • 5
Всего голосов: 0
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!