Подтвердить что ты не робот

Какая сторона? - Автоматический алгоритм вращения изображения

Программное обеспечение, такое как Google Picasa, очень хорошо демонстрирует, что программное обеспечение может определить, каким образом была сделана фотография без Exif-Data, поскольку она недоступна в каждой камере.

Есть ли документированный алгоритм, который выводит, нужно ли поворачивать изображение или нет? Я хочу узнать вращение без использования EXIF ​​Data. Если это вообще возможно, я хотел бы сделать это с помощью ImageMagick.

4b9b3361

Ответ 1

Это сложная проблема и, соответственно, текущие исследования. Ответ Янна в основном указывает на обычные подходы уже (+1) и подсказки mfrellum в отношении объекта Pattern Признание также применяется также (+1) - для более глубокого анализа вы можете прочитать несколько следующих работ (субъективный отбор из моих прошлых исследований):

[Обратите внимание: большинство ссылок в формате PDF, приведенных ниже, были выведены из Google Scholar - Google, естественно, умеет находить соответствующий PDF в другом месте для общедоступных тезисов докладов, где фактическое содержание чаще всего скрывается за paywalls. Законность этого, конечно, подвержена острым дискуссиям, и поэтому регулярно защищает публично финансируемые научные исследования, так что сделайте свое собственное мнение!]

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

Удачи:)

Ответ 2

Вероятно, он читает информацию exif, хранящуюся в заголовке jpg, когда это доступно. Это дает ориентацию камеры при фотосъемке. Это гораздо более простой подход, чем попытка проанализировать фотографию, чтобы узнать, какой путь вверх.

Есть восемь возможных ориентаций. Флаги сообщают вам, какой путь вверх:

EXIF Orientation Value  Row #0 is:  Column #0 is:
1                       Top         Left side
2*                      Top         Right side
3                       Bottom      Right side
4*                      Bottom      Left side
5*                      Left side   Top
6                       Right side  Top
7*                      Right side  Bottom
8                       Left side   Bottom

NOTE: Values with "*" are uncommon since they represent "flipped" orientations.

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

Ответ 3

Я не знаю конкретной реализации, но вот несколько мыслей:

  • Небо синее. Ищите синий по краю. Более синий = скорее всего, будет вверх.
  • Верхние области изображения имеют меньше деталей (небо, облака), чем нижние.
  • Сделайте обнаружение края и найдите длинные горизонтальные линии. Если они не горизонтальны, возможно, изображение на его стороне. Объедините С# 1 и # 2, чтобы узнать, есть ли у вас 180 градусов или нет.

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

Ответ 4

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

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

Решение, вероятно, будет включать в себя эвристику типа 1-3 в ответе Янна Рамина, но количественно оценивается как число от 0 до 1 и помещается в вектор. Вы можете использовать imags с данными exif о ориентации, чтобы сделать набор тренировок для классификатора.

Ответ 5

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

РЕДАКТИРОВАТЬ: Большой вопрос - я потратил 5 минут на Google Scholar и не смог найти правильный проблемный домен.

EDIT: Получил это. Он назывался "обнаружение ориентации изображения" - не слишком затененный заголовок.

EDIT: быстрый обзор показывает, что существуют два основных подхода:

  • Комбинированные классификаторы - обучают множество разных классификаторов и объединяют результаты, классический подход "бросить все, что у вас есть". Здесь большая часть инновационного вклада в работу, как представляется, заключается в том, как создавать новые способы объединения разных классификаторов.
  • Конкретные функции - выберите конкретный (или небольшой набор конкретных) функций и используйте их для классификации, определения ориентации. Некоторые примеры: распознавание лица + обнаружение края, локальное двойное совпадение шаблона (относительно: работает только между двумя изображениями одного и того же объекта).

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

S. Балуджа (из Google) опубликовал следующие документы:

Из этого можно сделать вывод, что методы в нем указывают на то, что использует Google.

Ответ 6

Picasa имеет распознавание лица, что может помочь даже в том случае, если оно не помечает известных людей.