Как стать автором
Обновить

Комментарии 28

Если соединить углы линиями и вычислить перспективу можно ли создать 3D модель объекта по фотографии?
как перспектива связана с трёхмерными моделями? Что бы рисовать «3D» надо как минимум 3и координаты…
скажите гуглу, он научился строить карту глубины по одиночному снимку. то-то там удивятся что сделали то что нельзя было, оказывается.
Такие уроды… -8 за нормальное замечание. macik_spb Вам написал: «в простом случае знание о перспективе как таковой почти ничего не даст, если говорить о 3d. » тоже сказал и я… никто не говорил про карты нормалей/глубины/отражения и прочие шаманства. Рассчитать перспективу и построить 3d? ну удачи, мб продадите автокаду свои труды…

Хотя бы по первой ссылке ответа ниже, идёт «искусственное» растяжение по неизвестной координате.
я вас не минусовал.
я вообще не связан с 3д-моделированием на интеллектуальных алгоритмах.

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

Как человек, который активно пилит рекомендательную систему для музыки — могу по своему опыту сказать: если есть достаточно изначальных данных для анализа (в моем случае уже накопленное поведение людей), возможность протестировать новые модели анализа — крайне малого количества весьма неточных данных может оказаться достаточно для выстраивания весьма стройной модели.

В моем случае, например, из для жанров аудиозаписей (которые забиты весьма криво и неточно) — строится модель, в ней устраняются сглаживания, устраняются выбросы. После этого строится ранжирование по времени внесения записей, строится линия в 22-мерном пространстве, соответствующая изменению жанрового вектора, экстраполируется, уменьшается до единичного вектора, дальше все множество таких единичных векторов через гномоническую проекцию проецируется в 21-мерное пространство, в котором идут определения жанровых предпочтений пользователя, и далее через нейронную сеть (мне было лень писать уже дальше алгоритм для расчетов) идет обучение системы о том, что пользователю нравится и что не нравится.
И это все делается в браузере (в том числе в мобильничках) в реальном времени для 5000 векторов. С некоторыми допущениями, конечно — на разных стадиях отсеиваются заранее неподходящие вектора, например, есть таблицы для переводов и так далее.

А начиналось все с ранжирования по прямому сравнению порядка жанров — просто {рок; альтернатива; поп} и {рок; поп; альтернатива} считались ближе, чем {шансон; классика; рок}.

Если что — я это один хрен опубликую с картинками и графиками в ближайшее время вместе с новым релизом, в котором уже это все будет, поэтому и спокойно рассказываю все детали.
по пунктам:
1) я не писал что криво работает, или по фотографии нельзя построить 3d модель. Ед. что следует из моего первого комментария это то, что нельзя рассчитав одну перспективу построить 3d модель. И это факт. Это был ответ на комментарий.
2)То что ответил именно на ваш комментарий связано исключительно с размещение комментариев на странице и никак иначе. Хотелось бы, что бы те «про» 3д моделирования, которые по одной перспективе строят виртуальные реальности прочитали, как мой комментарий, так комментарий macik_spb — развёрнутый и даже ссылками.
3)" что сделали то что нельзя было, оказывается." эта фраза вообще похожа на школьное агро! Я разве что-то подобное написал? Смотрите в корень господа.

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

upd: и да 3d модели и 3d картинки или ещё какие 3d — подразумевать/говорить/думать можно о совершенно разных вещах, однако это не отменяет того, что 3d модели это исключительно объекты с 3мя степенями свободы.
Ох, прям то, чем я занимался лет пять назад, почти слово в слово =). Интересно только, почему пространство всего 22-мерное — вероятно, особенности модели.
Тут очень много нюансов… в простом случае знание о перспективе как таковой почти ничего не даст, если говорить о 3d.
На самом деле тема очень глубокая и многогранная. О чем говорит даже подборка статей на хабре:
  1. про построение по 1-му фото, в «ручном» режиме — тыц
  2. по фото, рассчитывая карту глубин — тыц
  3. по нескольким фото уже давно в ходу — тыц, тыц, еще и еще
  4. моделирование 3d миров на основе отдельных снимков местности — тыц

    Ближе всего к вашему запросу вот эта статья — «Make3D из одной фотографии»: часть 1 и часть 2. К сожалению большая часть картинок и видео из этих статей не доступна, но во второй части можно посмотреть видео для получения общего представления.

    Была на хабре еще одна статья на эту тему, но найти не смог. Там похожая технология использована для воссоздания интерьеров в 3д.
Вот еще. Не совсем по теме, но выглядит эффектно.
spice_harj скорее всего имел в виду, что автоматически из одного фото невозможно получить карту глубины, и соответственно 3D.
Из пары фото (стереофото) или из нескольких — пожайлуста, уже давно есть structure from motion.
Посмотрите лекцию по трехмерной реконструкции. Вот хорошие страницы по 3D восстановлению из одного изображения: один, два. И здесь особые точки не используются.
Для получения 3D модели с использованием особых точек необходимо 2 и более фотографий (например, здесь): используются особые точки с их дескрипторами и применением метода оценки параметров модели на основе случайных выборок RANSAC (Random Sample Consensus). Также для восстановления используют эпиполярную геометрию (epiporal geomerty). Например, на Хабрахабр Alex2004 писал про основы стереозрения, а здесь дана очень подробная статья по геометрическим свойствам нескольких изображений.
Я думаю, это возможно только для определённых категорий объектов, для которых можно априори сделать предположения об их геометрии. Например, если мы распознаём дом или городскую застройку, то очевидно, что должны преобладать горизонтальные и вертикальные линии (обнаруженные например преобразование Хафа). Допустим, на изображении обнаруживаются статистически значимые пучки таких линий, имеющих где-то, возможно за пределами картинки, точку схождения. Тогда логично предположить, что эти все линии, например, являются истинным горизонталями, образующими перспективу. Обнаружив три таких пучка, мы можем восстановить трёхточечную перспективу, и действительно обрести представление о 3D-структуре снимка.
сорри за оффтоп, но стиль похож на методичку которые были у нас в универе
Я специально решил написать статью в таком виде, поскольку алгоритмы должны излагаться четко и последовательно. Никакого отношения к стилю как в методичке изначально не ставилась, было интересно разобраться. Наоборот, хотел, чтобы было понятно и не было ничего лишнего.
Susan на тестовых изображениях наиболее аккуратна. Это так?
Если честно, совершенно не понятно, на основе чего получены сравнительные данные. Ну и сама пятибальная шкала «на глазок» в качестве сравнительной метрики как-то не очень.
Данные взяты из таблицы в книге Digital Image Processing.
Шкала получена не «на глазок», а напрямую из оригинальной таблицею Поэтому ранжировал следующим образом:
1 – Bad, 2 – Poor, 3 – Fair, 4 – Good, 4+ – Very Good, 5 – Excellent
Так какие выводы я могу сделать из этой таблицы с такой шкалой?
Вот, допустим, хочу я написать feature based трекер объектов. Для этого мне нужны какие-то фичи и, например, алгоритм оптического потока Лукаса-Канаде. Вот исходя из ваших таблиц, вабор каких фич будет для меня оптимален по «устойчивости» трекинга? И как этих попугаев конвертировать в метрики, которые будут понятны заказчику?
Да, по данным из таблицы SUSAN показывает неплохие результаты. Однако применение детектора зависит от предметной области. Опять же, необходимо провести исследование применимости детектора к изображениям из Вашей выборки изображений, например, посмотреть в Matlab, что получается на выходе. Но популярными детекторами до сих пор являются детекторы Харриса, FAST.
Также можно попытаться поискать другие статьи по сравнению. Например, здесь авторы проводят исследования детекторов Харриса и SUSAN, по результатам которых они делают вывод, что детектор Харриса лучше.
вы бы реализацию показали, без нее не интересно.
Статья отличная, автору спасибо!

В офиц. документации OpenCV вполне нормальные примеры,
детектор углов Harris
docs.opencv.org/doc/tutorials/features2d/trackingmotion/harris_detector/harris_detector.html
детектор углов Shi-Tomasi
docs.opencv.org/doc/tutorials/features2d/trackingmotion/good_features_to_track/good_features_to_track.html
Реализация рассмотренных алгоритмов:
Moravec: Matlab, Java
Harris: C#, C++ OpenCV, Java
Shi-Tomasi: OpenCV C++, Matlab
Förstner: C++
SUSAN: C, Matlab
Trajkovic4: Java
FAST: C#, Java
CSS: Matlab
Детектор, основанный на глобальных и локальных свойствах кривизны: Matlab
CPDA: Matlab 1, Matlab 2
оффтоп: Так вышло, что я работаю в лаборатории, в которой профессором до недавнего времени был Wolfgang Förstner из статьи. Он вышел на пенсию буквально пару месяцев назад. Тут вы можете найти его публикации. Он вообще потрясающий человек. Если вы занимаетесь компьютерным зрением, в частности, реконструкцией 3д с помощью картинок, я бы мог позадавать ему интересующие вас вопросы.
Спасибо за предложение!
В описании в основном олдовые методы детекторов особых точек без оглядки на сравнение к инвариантности к повороту и скейлу\трансформациям и засветкам.
Или вы разделяете понятия детектор углов и детектор особых точек? Если нет, то почему не было про тот же SIFT и кучу других детекторов например из opencv? Если да, то для чего используются именно детекторы углов?

вот довольно обширные сравнения
http://www.robots.ox.ac.uk/~vgg/research/affine/
http://homes.esat.kuleuven.be/~tuytelaa/FT_survey_interestpoints08.pdf
Ну не такие уж FAST, Corner Harris и Shi-Tomasi и устаревшие. Их по прежнему активно используют для трекинга, т.к. они быстро считаются.

Всякие детекторы типа SIFT, ORB, KAZE слишком тяжелые и иногда избыточные.
Алгоритм SIFT детектирует не углы, а капли (блобы, blobs) — структуры, описываемые 4 параметрами: координаты центра (x,y), масштаб и направление. В статье я рассматриваю обычные углы, которые описываются координатой центра (x,y) (только, если это не многомасштабный детектор). Поэтому я не рассматривал SIFT, о чем написано в статье.
Прекрасная статья! спасибо! :)
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.