Создание 3D-эффекта из 2D-изображения - PullRequest
1 голос
/ 31 января 2011

У меня есть случайное 2D изображение. Я хотел бы иметь возможность представить изображение в 3D. Это не должно быть очень детальным, даже если изображение было произвольно разбито на слои, как всплывающее окно из детской книги.

Цель состояла бы в том, чтобы при прямом просмотре данное изображение выглядело бы нормально, но если бы зритель двигался / наклонялся влево, вправо, вверх, вниз, был бы эффект 3d.

Это похоже, но не совсем так, как этот вопрос здесь: Как создавать 3D-стреоскопические изображения с помощью MATLAB с инструментом изображений?

Это полный перебор: http://make3d.cs.cornell.edu/

И это, вероятно, на правильном пути: http://www.imagemagick.org/Usage/distorts/#perspective

Моей идеальной реализацией было бы использование автоматизированного PHP-скрипта с взятием ImageMagick, который подает изображение и выдает в результате либо ( в порядке предпочтения ):

  1. Изображения, представляющие каждый слой, из ближайший к глубочайшему (ближе к Аналогия с всплывающими книгами для детей)
  2. 5 изображений, представляющих указанные виды (прямой, левый, правый, верхний, нижний)

Было ли это сделано (или одна из вышеприведенных идеальных реализаций), или кто-нибудь знает, как сделать все или часть этого?

1 Ответ

1 голос
/ 31 января 2011

Что касается первой части вашего вопроса, похоже, ваша идеальная реализация - http://make3d.cs.cornell.edu/, за исключением того, что:

  • Вы хотите, чтобы это было проще (возврат изображений с фиксированным набором углов в отличие от прохождения)
  • Вы хотите это с помощью imagemagick и PHP

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

Так что мой совет - попытаться как-то обойти это ограничение. Если вы реализуете подход с использованием более подходящих инструментов (таких как C ++ и OpenCV, например, или Matlab, как это сделали парни из Make3D), то вы можете обернуть это в приложении CGI, чтобы ваши PHP-скрипты могли получить к нему доступ. Некоторое время назад у Корнелла (авторов Make3D) была похожая вещь, но похоже, что они этого больше не делают.

Что касается второй части вашего вопроса, теория того, что вы хотите сделать, была довольно хорошо изучена. См. здесь для списка работ по оценке глубины. Здесь - это то, как все выглядит в источнике.

...