Pull to refresh

Comments 104

Крутая статья. Прочитал на одном дыхании.

А про 3д глаз — есть более интересная идея в научных кругах: мозг строит трехмерную картинку, опираясь на микро движения глаза, т.е. влево-вправо, для всех точек изменилось — пусть и на пару десятых миллиметра — расстояние, и готово, расчёт пошел
О, а поделитесь ссылкой, любопытно. Заранее можно, правда, подумать, что это не окончательное решение вопроса — микродвижения дают нам полезный параллакс, но чтобы составить полноценное 3d, нам все еще нужно «обойти» предмет и заглянуть «за него» с другой стороны) Эх, были бы у нас стебельчатые глаза, как неоднократно замечает тот же Марк Чангизи)
Движения дают нам примерно всю информацию об объектах в мире. Например, многие люди (да и животные) при первом изучении незнакомого предмета начинают склонять голову, изменяя тем самым перспективу. Так же могу припомнить известную историю «У узбеков нет иллюзий!», где люди не могли опознавать предметы на картинках. В случае с компьютерным зрением ситуация ровно противоположная — все начинается именно с плоских картинок.
Разве микродвижения могут дать параллакс? Ведь центр вращения глаз находится практически в центре глаза.
В этом смысле бинокулярность дает намного больше информации.
Простое проверочное упражнение: закрываете один из глаз, смотрите на собственный нос и аккуратно прячете палец за нос так чтобы он был не виден, но совсем чуть-чуть, на краешке. После этого смотрите вперёд и перефирийным зрением замечательно замечаете палец. Фокус не в том, где находится центр вращения, а в том, где находится преломляющая линза. Посмотрели вперёд — хрусталик оказался чуть дальше впереди и увидел скрытое.
А вы не знаете случайно, где можно приобрести/как можно сделать недорогой детектор движения глаз, который бы мог зафиксировать движение глаз при рассматривании картинки и отрисовать потом траекторию взгляда на самой этой картинке? Нужно для хобби-проекта :)
Если что, это называется eye-tracker.
Спасибо, загуглю. У меня просто есть только рисунок из Детской Энциклопедии времен СССР, на который я случайно наткнулся. Там на фото какого-то натюрморта наложен этот самый eye-traking в виде черных изломанных линий туда-сюда-обратно. Я искал eye moving и прочие словосочетания из серии «это может быть то что нужно», но eye-tracker почему-то поискать не додумался.
Оно?)
image

Альфред Ярбус, однако, очень известная и классическая работа по саккадам (не читал, но наслышан, как говорится). У него, правда, был очень суровый eye-tracker с присосками на глазных яблоках — надеюсь, вы справитесь как-то менее инвазивным способом.
Оно! К присоскам я честно говоря морально не готов. Надеюсь с помощью всяких современных технологий вроде недорогих камер и либ компьютерного зрения можно будет обойтись без присосок и игл в глаза.
Это вряд ли, по моему мозг одинаково хорошо строит модель, видимую только для одного глаза, и модель, видимую на фотографии где точно нет никакого микропараллакса. Гораздо важнее для воссоздания модели светотени. Как аргумент, приведу пример: для точного построения 3Д сцены на компьютере нужен сложный алгоритм рейтрейсинга с учетом всех переотражений, физичских свойст поверхностей и т.д, иначе мы тут же видим малейшую неточность. Значит, эта сенсорная информация очень важна для зрения, раз ей выделена такая детализация.
Почему сразу строит? Мы же нейросеть шопипец параллельная, а значит вполне может один кусок строить модель, а другой её дополнять исходя из накопленной базы образом… И таких «минианализаторов» может быть непонятно много, но пусть мы их все знаем. Следующая проблема — логика выбора «правильного сочетания» этих блоков и выбор «оперативной модели объекта»
К слову. Блоксхема AlexNet — лучшей сети для распознавания образов в 1212-ом году:
К слову. Блоксхема AlexNet — лучшей сети для распознавания образов в 1212-ом году:
image
А это блоксхема GoogLeNet, лучшей уже в 2014-ом году:
image
Так что проблема «проблема — логика выбора «правильного сочетания» этих блоков» уже настала, причём так настала что писец.
А про 3д глаз — есть более интересная идея в научных кругах: мозг строит трехмерную картинку, опираясь на микро движения глаза, т.е. влево-вправо, для всех точек изменилось — пусть и на пару десятых миллиметра — расстояние, и готово, расчёт пошел


Мозг строит 3d картинку по огромному набору признаков (известно порядка 15 разных). Какой-то один признак как главный выделить нельзя, в разных контекстах приоритет отдается разным признакам. Но чаще всего вроде все же бинокулярное зрение работает, причем у человека это комбинация двух тесно связанных признаков — конвергенции и аккомодации, и нынешнее кинотеатральное 3D воспроизводит из них только первый, почему, собственно, и имеет проблемы с хождением в массы.

Но конкретно саккады к 3д зрению насколько я знаю не имеют совершенно никакого отношения. При микродвижениях глаза картинка просто сдвигается одинаковым образом для всех видимых точек. Ниже в комментах писали что это просто удобный трюк для вычисления контуров на изображениях — при небольшом дрожании картинки сигнал со зрительных рецепторов на которые попадает граница предмета будет меняться, а на рецепторах не попадающих на границы он будет оставаться примерно постоянным.
Да, извиняюсь, был напуган)
Но я однозначно читал где-то, что вот эти микроскопические сдвиги точки фокуса (при помощи микросаккад) дают возможность увидеть контуры плоскостей видимой картинки, и построить своего рода «карту высот», а уже бинокулярное зрение служит для точного определения расстояний.
Более всего работает накопленный зрительный опыт. Пока человек находится в знакомой обстановке, пока видит знакомые образы, он будет правильно определять пространство вокруг даже на двумерном изображении. Мы знаем, каких размеров и формы железная дорога, столбы и деревья, именно поэтому легко воспринимаем фотографию, и спокойно можем обходиться и одним глазом в обычной обстановке. Если же показать человеку изображение, где нет знакомых образов, он точно воспримет сцену неправильно. А вот бинокулярное зрение и другие признаки уже помогают накопить этот зрительный опыт.
Спасибо за интересную статью. Возможно, когда-то гугловские сервера и будут распознавать образы, считывая в секунду терабайты паттернов. Но на данном этапе развития проще обработать хэштеги «Едем в поезде в Сочи», которые уже вычислены вашей нейросетью и нейросетями ваших друзей.
Это что же получается — загружая тонны персональных фото в гугл, я учу его не только мое лицо распознавать, но и помогаю ему создать собственную 3D-модель, распечатать ее на органическом принтере, создать свою копию?
Не возьмусь предполагать, работает ли Гугл над этим. А вот на основе фоток туристов распознать лесополосу вдоль сочинской железной дороги — думаю, да.
*режим зануды* Загружая тонны персональных фото — нет, потому что у вас тут отсутствует ключевой элемент оптического потока — понимание, какой кадр в какой переходит) Так что фото — это пожалуйста, а вот видеоблогов остерегайтесь)
Ну, кроме оптического потока всякие методы есть, да и поток организовать из кучи фотографий лица наверное не невозможно. Фон отсечь, освещение выровнять — и вперед…
Спасибо, что прочитали) Ну, обрабатывать хэштеги — тоже интересная штука, и что отдельно приятно, хорошо коммерциализируется (без иронии!). Немного грустно наблюдать, как к машинному обучению периодически относятся как к странной помести пятиногой табуретки и серебрянной пули — оно вроде как толком не работает, но дайте нам воткнуть его в фейсбук, и все френды ваши)
Честно говоря, это кажется грандиозным. Особенно, действительно, для систем слежения.
Скажем (возвращаясь к зрению), ваши глаза сейчас постоянно совершают мелкие и очень быстрые движения — саккады — перескакивая между предметами в поле зрения (а в промежутках между этими движениями ваше зрение вообще не работает — именно поэтому нельзя увидеть собственные саккады, даже уставившись в зеркало в упор). Мозг постоянно занимается упорной работой по «сшиванию» увиденных кусочков. Это — та же самая задача, которую мы только что пытались решить, или все-таки другая?
Это связано с особенностью работы нейронов, фильтрующих изображение на предмет нахождения границ. Просто такая себе хардварная оптимизация, находящая резкий градиент и его направление, подобные фильтры есть и в фотошопе и, видимо, разных библиотеках CV — когда изображение смещается на пиксель-другой и вычитается из оригинала.

Как верное указано в статье, проблема зрения заключается вовсе не в распознавании изображений. Та картинка, что мы видим, и, как мы считаем, является реальностью — на самом деле воссозданная нашим мозгом его личная модель этой самой реальности. Мозг умеет моделировать очень хорошо, это его суть (позволяющая, в том числе, выживать организму более эффективно, чем его конкуренту с более примитивным мозгом, при прочих равных). Он постоянно дополняет и уточняет его внутреннюю модель, а уже про те объекты, из которых она состоит, мы и говорим — «мы их видим».

Нерешенная проблема зрения — научиться так же эффективно моделировать 3D-окружение, и эффективно постоянно вносить соответствующие поправки исходя из текущей наличной информации.
Кстати, как-то наткнулся на статью про возможность распознавать 3D образы с рождения.
elementy.ru/news/432084?page_design=print
Возможно, у нас многое уже заложено с рождения, скажем так определение каких-либо объектов 3D по 2D изображению.
тэг: не котики
Статья настолько отличная, что даже на это вопиющее неуважение к котикам можно закрыть глаза.
И, между прочим, у этого есть обоснование!) Заметьте, тут везде речь шла о статичных предметах. У котиков есть печальная особенность, которая немедленно поломает нам весь алгоритм — они двигаются и могут изменять форму. Тут нужно будет составлять не просто модель, а какой-то анимированый скелет, находя на видео составные сегменты котика — голова, сочленения лап и т.д.) В общем, квест намного усложняется.
Мне очень понравилась идея использования синтезировать идеальную картинку с помощью компьютерной игры для проверки системы компьютерного зрения. Точно известно что на ней. Можно обучать систему в автоматическом режиме.
… а главное, можно ожесточенно рубиться на работе в Портал, и никто слова не скажет!
Мне кажется это как раз не самая лучшая идея. Потому что на настоящих снимках нет идеально ровных границ и идеально однородных поверхностей, а значит алгоритму (типа оптического потока) будет гораздо больше за что зацепиться.
Так это же наоборот хорошо — ошибки надо выявлять сразу же, а не маскировать.
Но может получиться так, что метод, оптимальный на синтетическом изображении, будет неоптимальным на реальном.
Справедливости ради, в современных-то игрушках их тоже не то чтобы очень есть. Видели подборки картинок в духе «определите, где реаллайф, а где GTA V»?)
Справедливости ради, конкретно в Portal таких однородных поверхностей — куча, просто потому что это головоломка вовсе не на поиск предметов :)
Какие-то у вас неправильные рельсы,
вот настоящие рельсы

Захватывающе!

А вы пробовали использовать не движение камеры, а перемещение объекта? Ведь в реальности оба движения происходят одновременно.
Я представляю, что в таком случае смещение будет ещё нагляднее: неподвижный «плоский» фон без движения и «выпуклый» объект. Тут же бонусом и отделение объекта от фона получится.

Насколько гласит легенда, некоторые хищники именно так и видят: им тяжело классифицировать неподвижные предметы.

Вашу систему уравнений, мне кажется, можно расширить, для каждого кадра видео:

новая точка i (t+1) = (старая точка i (t) + движение точки i (t) ) * движение камеры (t)

не уверен что за операция там вместо звёздочки — умножение или сложение.
Добавим ограничения из физического мира:
— движение точки равномерно
— движение камеры равномерно (и есть априорная оценка)
— движение точки совпадает с движением её «группы» (принадлежность точки группе получаются кластеризацией точек по вектору движения)

В общем случае движение камеры это все 6 степеней свободы, а для точек достаточно 3.

И будет полноценный решатель: видео -> трёхмерная модель пространства и камеры :-)
Затягивал с комментом, потому что у движения объекта есть свои сложности. Вот такие:

— во-первых, статическая сцена (где ничего не двигается) удобнее нам потому, что мы ее полностью контролируем. Пока мы не шагнем, все остается на месте.
— во-вторых, остается вопрос определения движения. Для камеры мы можем получать ее двумя способами: прямо от моторных механизмов, которые ее двигают (от своих ног, грубо говоря), или анализировать общее смещение потока в кадре (я очень хотел добавить это в пост, но места уже явно не хватало). Как говорил Дуглас Хофштадтер, мы обычно различаем на картинке «рисунок» и «фон» — изображенный предмет и все, что просто занимает место на обоях. Вот по сдвигу фона можно довольно точно определить, куда мы двигаемся. А если фон стоит на месте, и двигается объект — тут остаются варианты.
Спасибо за интересную статью. Весьма познавательно и хоть как то упорядачивает информацию в голове дилетанта в этой области.
Вам спасибо, что прочитали. Если интересуетесь темой дальше — есть несколько очень простых и увлекательных книг, рассказывающих про все это на популярном уровне. Уже упоминавшийся Марк Чангизи, «Революция в зрении» (там, правда, много оригинального контента, который еще не защищен временем), и более классический Дэвид Хьюбел «Мозг, глаз, зрение» — отец нейросайнса и вообще столп-основатель. Ну и Курсера в последнее время отметилось парой отличных курсов)
Ваши наработки можно как-то применить к получению габаритных точек с видео или фото объектов, которые невозможно (или затруднительно) измерить одному человеку. Грубо говоря: взял камеру, поснимал вокруг памятника архитектуры, прогнал через программу и получил грубую форму, по кототорой потом смоделлил.
Это гораздо круче делает Bundler. Смотрите, какие штуки получаются:
pic
image


Статья шикарна! Жаль, что в очередной раз забыли цитаты великих: «Ничто в биологии не имеет смысла кроме как в свете эволюции» (с) Ф. Г. Добржанский. The American Biology Teacher.
В случае нейронаук можно так перефразировать, что очень многое имеет смысл только в свете того как происходит развитие системы. Сдаётся мне, что если бы вы с самого рождения ходили по комнате с одним глазом развить все описанные способности мозгу было бы конкретно сложнее. Причём таких взаимосвязей, которые нужны только на этапе обучения, в мозге полно, например дети глухие от рождения имеют проблемы с формированием представления о пространстве в котором находятся, хотя зрение у них присутствует в полном объёме.

По поводу ваших алгоритмов. Буквально пару недель назад на Конференции «Нейроинформатика 2015» видел группу, которая занимается схожей темой, только у них обратная постановка задачи. Имея два кадра с камеры определить изменение координат бота. Они с задачей более или менее справляются. Пока, правда, слишком долго. Но я думаю от вашего сотрудничества может родиться что-нибудь страшно интересное. А кроме того у них на это всё есть заказчик, так что работа пойдёт не только в хабр, но и в реальный мир:

neuroinfo.ru/index.php/ru/schedule/sections?year=2015#Section5
46. ИВАШИНА Е. А., КОРЛЯКОВА М. О., ПРОКОПОВ Е. Ю.
Калужский филиал МГТУ им. Н.Э. Баумана
Формирование ассоциации нейронных сетей для решения задачи стереореконструкции в бортовой системе технического зрения
Предложено решение задачи стереореконструкции координат объек-тов сцены на основе анализа стереопары их проекций. Моделирование процедуры стереореконструкции проведено в условиях виртуальной сце-ны с учетом ошибок определения координат проекций, полученных при калибровке реальной стереопары камер. Рассмотрены результаты формирования решателя на основе бустинга и модели анализа неоднородности ошибок нейростей.
mkorlyakova@yandex.ru
О, это как раз очень любопытно, да. Я, к сожалению, не квалифицирован, чтобы рассуждать на биологические темы, но, например, Хьюбел пишет о таких штуках в «Глаз, мозг, зрение». Описание опыта: «возьмем новорожденного котенка, зашьем ему глаз. Подождем пять лет» уже звучит как-то очень захватывающе)

Спасибо за ссылку, обязательно поинтересуюсь.
Художники подметили эти свойства человеческого зрения ещё в начале XX века.
Я ожидал больше Эшера в комментах) Кстати, не очень понял, что конкретно на вашей картинке играет с перспективой, поясните?

А еще в копилку к художникам, например, Магритт и издевательства над окклюзией:
image
ваши глаза сейчас постоянно совершают мелкие и очень быстрые движения — саккады — перескакивая между предметами в поле зрения (а в промежутках между этими движениями ваше зрение вообще не работает — именно поэтому нельзя увидеть собственные саккады, даже уставившись в зеркало в упор
А как мы их увидим-то, если для слежения за своим зрачком нужно смотреть прямо на него не отводя взгляда? Любая саккада тут же уведёт взгляд с нужной точки.
Возьмите два карандаша, закройте один глаз и попытайтесь сдвигать эти карандаши так, чтобы они соприкоснулись кончиками грифелей где-то вблизи вашего лица. Скорее всего, грифели разойдутся, причем ощутимо (если у вас получилось легко, поднесите их еще ближе к лицу)
Обижаете наш интеллект! =) Подносил карандаши так близко к глазу, что вообще не мог на них чётко сфокусироваться — произвёл наводку по угловым размерам и степени расфокусировки, коснулся с первого раза.
Ну, у вас поле зрения все-таки имеет какую-то ширину) Вы же можете наблюдать за любыми мелкими движениям, например, абстрактного прыжка кузнечика (хотя, казалось бы, первая же саккада должна увести вас от кузнечика подальше).

Интеллекту — определенно браво; я вот так не могу) Интересно, вы занимаетесь повседневно работой с мелкими предметами?
У меня тоже получилось почти без сбоев. С мелкими предметами не работаю, всё больше с мышкой и клавиатурой.
Кстати, с двумя закрытыми глазами соприкоснуть кончики карандашей удаётся с вероятностью 60%. Причём когда кончики сближаются, ощущается заметное отталкивание. Не знаю, откуда оно берётся.
Хочу обратить внимание автора также на методы используемые в PIV.

PIV (particle imaging velocimetry) — это метод физических измерений а аэро/гидродинамике, при котором в поток засеиваются частицы (обычно выглядит как дым), затем фотографируются скоростной камерой (с лазерной подсветкой). По паре снимков затем вычисляются поле скорости в потоке.

Сейчас там самый эффективный метод — это фурье корреляция FTC (также называется Phase Correlation, аналогичто вашему велосипеду, но благодаря преобразованию фурье производительность гораздо лучше и даёт субпиксельную точность смещения).
И да, забыл написать. Там пробовали и оптический поток, но он работал плохо. Оптический поток работает хорошо на изображениях с плавными градиентами, а в PIV изображения — это куча белых точек на темном фоне.
Так что от специфики изображений будет зависеть и алгоритм вычисления смещений.
Я как человек долго занимавшийся вопросами реконструкции 3D внесу диссонанс в общий хор благодарности за крутую статью :)

В плане определения облаков точек уровень статьи соответствует уровню студента-четверокурсника, недели две делавшего курсовой проект. Разреженное облако точек построить в 3D — это не проблема вообще, особенно при использовании нынешних открытых библиотек по компьютерному зрению которые львиную часть сложности прячут. Если угодно, это как написать hello world для задач CV :). Но к сожалению подобный код
а) дает паршивенькую точность
б) от него очень тяжело перейти к плотным облакам точек
в) ломается как только в него подается картинка с множеством мелких деталей и интересным освещением

Как Вы верно заметили, все это может быть совершенно неважно для Вашей задачи распознавания. Но про неё-то как раз в статье не написано практически ничего.

Интереснейшая тема, слабая реализация, будет интересно посмотреть на распознавательную часть :)

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


Известно около 15 разных признаков которые использует человек для распознавания объема :). Можно посмотреть например у Шиффмана книжку «Ощущение и восприятие». Но бинокулярное зрение, а точнее комбинация конвергенции и аккомодации является одним из основных и используется, вероятно, чаще чем любой из других признаков.

уже в пункте 1 от нас требуют откалиброванную камеру… В предыдущих попытках мы, по сути, пытались определить реальное положение трехмерных точек — отсюда необходимость знать параметры камеры, матрицы, ректифицировать кадры и так далее.


Там не в триангуляции дело (ну то есть триангуляция тоже важна конечно, но это не основное). Дело в том что если мы берем точку на одном изображении, то на изображении той же сцены сделанном другой камерой с другого положения эта точка не может располагаться где угодно. Она обязательно будет лежать на одной линии. Знание фундаментальных матриц камер позволяет эту линию вычислить и, соответственно, радикально упрощает задачу поиска соответствия объекта с одного изображения на другом — достаточно просматривать не все изображение, а лишь малую его часть расположенную вдоль строго определенной линии. Попутно на этапе ректификации убирают оптические искажения геометрии, неизбежные для реальных камер — это нужно чтобы указанные линии соответствия были прямыми (а не кривыми) и опять же помогает улучшить процесс поиска соответствий.

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

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


А вы все-таки пробовали закрыть один глаз?) Или посмотреть на плоскую распечатанную картинку, где конвергенция совершенно точно никак не работает, потому что не на чем ей?

Разреженное облако точек построить в 3D — это не проблема вообще


Совершенно не сомневаюсь, учитывая мои собственные более чем дилетантские знания в 3d-реконструкции… но все-таки, поделитесь способом, который:
— не требует двух камер и пространства (работает на отснятом заранее видео)
— не требует параметров камеры и калибровки.

Ноль сарказма, кстати, мне действительно очень интересно.

Про объяснение работы фундаментальной матрицы отдельное спасибо, в этом поле я совершенно плаваю)

А вы все-таки пробовали закрыть один глаз?) Или посмотреть на плоскую распечатанную картинку, где конвергенция совершенно точно никак не работает, потому что не на чем ей?


Я же пишу — там около 15 признаков. Уберите два связанные с бинокулярным зрением — останутся еще 13 и объем полностью не исчезнет. Но это совершенно не означает что убранные 2 не важны или, тем более, не используются вообще. Восприятие объема от одного глаза будет хуже и «ломаться» будет гораздо чаще.

Совершенно не сомневаюсь, учитывая мои собственные более чем дилетантские знания в 3d-реконструкции… но все-таки, поделитесь способом, который:


Их много разных и сдается мне что все наиболее интересное имеет очень сложную реализацию и закрыто как коммерческая тайна, а не доступно в виде библиотечки :). В основном используется как я понимаю для задач видеомонтажа когда в отснятое видео хочется добавить 3D-объект который будет казаться частью отснятой сцены. Я лет шесть уже этим не занимаюсь, так что мне сложно сходу посоветовать хороший вариант. Но в OpenCV все нужное вроде есть, общий принцип для простенькой реализации примерно следующий — SIFT-ом ищем соответствующие точки на изображениях, затем определяем по построенным соответствиям параметры камер с одновременной фильтрацией неверных соответствий чем-то типа RANSAC, затем по построенной калибровке ищем более плотное облако соответствий и наконец проецируем его в 3D. Для всего этого вроде в CV есть готовые ф-и, но по названиям я их Вам сейчас не подскажу :)

Попробуйте так же посмотреть литературу по camera self-calibration (automatic calibration, calibration from video)
А, по поводу 15 признаков — смотрите, я косвенно затрагивал их в самом начале. Само собой, у нас есть binocular и monocular depth clues, есть атмосферная перспектива, окклюзия, шейдинг и так далее, и все это очень хорошо — но часть этих вещей (достаточно большая) работает только если у нас уже есть какой-то опыт и знание об окружающем мире. Освещенный кубик на примере с зелеными точками, например, кажется нам скорее выпуклым, чем вдавленным, потому что мы привыкли, что свет падает сверху, а не снизу. До тех пор, пока у нас нет никаких априорных знаний, мы не можем даже отличить этот шейдинг от раскраски, нанесенной на поверхность предмета.

Насколько я знаю, все текущие попытки восстанавливать 3d по одиночной картинке оказывались безуспешными — самая, громкая, кажется, вот эта Стэнфордская статья, комментарии к демо-ролику на ютубе которой полны печальных комментариев о том, что оно не работает) С движением же ситуация, похоже, ситуация другая — оно начинает работать с момента формирования и развития зрительной системы, ему не нужны никаких предыдущие подсказки (и не нужен второй глаз — его можно с рождения зашить, и животное по-прежнему сможет отлично ориентироваться).

Ваш пример с SIFT+RANSAC упоминался в посте как «пробовал, но что-то не получилось» (это тот, который с помощью stereoRectifyUncalibrated), так что вполне возможно, конечно, что это мне просто не хватило скилла.
но часть этих вещей (достаточно большая) работает только если у нас уже есть какой-то опыт и знание об окружающем мире


Все верно, но так и дальше что из этого следует? Вы свой эксперимент предлагаете ставить-то на людях имеющих такой опыт. Хотите сказать что «глубина из движения» является признаком который не требует обучения и его одного достаточно для опознавания объема? Это возможно верно (я совершенно не уверен что этот признак относится к генетическим), но так бинокулярное зрение тоже соответствует этим условиям (и это вроде бы установлено точно). Чем для людей глубина-из-движения-то лучше глубины-из-стерео?

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

Ваш пример с SIFT+RANSAC упоминался в посте как «пробовал, но что-то не получилось» (это тот, который с помощью stereoRectifyUncalibrated), так что вполне возможно, конечно, что это мне просто не хватило скилла


По картинке похоже что неверно позвали stereoBM, плюс на выходе имеем более плотное облако точек — если его профильтровать оставив только «хорошо заметные» точки, то должно получиться нормально :)

Вопрос про «матрицу Q» думаю Вам должен был быть очевиден потому как Вы там дальше сами же утыкаетесь в необходимость определить фокусное расстояние камеры, причем если я правильно понял, то для ее решения вводите свою собственную процедуру «калибровки» основанную если я Вас верно понял на движении камеры строго по кругу вокруг определенной точки :).
А вы все-таки пробовали закрыть один глаз?) Или посмотреть на плоскую распечатанную картинку, где конвергенция совершенно точно никак не работает, потому что не на чем ей?


Мне кажется, когда мозг уже имеет представление об окружающем мире — он может сделать выводы и при неполной информации (т.е. с закрытым глазом или плоской картинкой). Недостающую информацию он «достраивает», опираясь на предыдущий опыт: знакомые очертания предметов, имеющуюся информацию об их приблизительных размерах и т.п. Ну и плюс убрав один-два из 15 инструментов, мы все еще имеем остальные в нашем распоряжении (пускай и не настолько мощные), которые тоже, кстати сказать, «обучались» в течение жизни при участии все той же конвергенции и аккомодации, в одном комплексе.

Для более ощутимого эффекта важности бинокулярного зрения можно попробовать не закрыть один глаз при разглядывании известного окружения, а завязать один глаз черной повязкой на денек и ощутить, насколько труднее станет ориентироваться, передвигаться и взаимодействовать с пространством, при этом, желательно, ранее незнакомым. Мне, например, с одним закрытым глазом с первой попытки с трудом удалось правильно оценить расстояние и взять рукой кружку, стоящую передо мной на столе.
UFO just landed and posted this here
Эм… как бы так выразиться-то — да, пожалуй, мне бы хотелось сделать такую штуку, чтобы распознавала все на свете) Совершенно не вижу, кстати, зачем здесь моделировать человеческий мозг насколько правдоподобно, насколько возможно — с чего такие выводы?

А ваше предложение немедленно потребует отдельной нейронки для лица, вид сзади, отдельной нейронки для лица в три четверти, а желательно вообще 360 отдельных нейронок для каждого угла зрения. И кстати, как собираетесь узнавать, какой нейронкой пользоваться? Перепробовать все по очереди? К слову о процессорном времени, пожалуй.
Конечно же, параллакс — ключ к распознаванию трехмерной сцены.

Вот есть интересное видео, где человек создает дисплей-«окно», за счет использования системы Head Tracking.

Интересно, почему бы такое не сделать на основе простейшего алгоритма распознавания лиц в видеопотоке. Таких алгоритмов же пруд пруди. Был бы просто монитор с двумя вебками.
Несколько лет назад светилось такое чудо на выставках. Только вот ничего «простейшего» в нем нет, это очень сложные алгоритмы и там есть проблемы с точностью которые воспринимаются как искажение визуализируемого пространства.

Но такие системы не очень интересны, поскольку эффект глубины исчезает в статике. Такие штуки интересно совмещать с обычным стерео. Но если стерео реализовывать через очки, то нет проблем прикрепить к очкам маркеры и некоторые так, собственно, и делают, причем я видел и ребят у нас в России с такой разработкой

Есть и гораздо более интересный вариант — стерео без очков. Сравнительно легко можно сделать специальный дисплей который проецирует под разными углами два разных изображения, причем с некоторыми ухищрениями эти углы можно регулировать в реальном времени и подстраивать их так чтобы разные глаза (которые всегда видят экран со слегка разных углов) видели разные изображения. Head-tracking здесь убивает двух зайцев — и ракурс подстраивает, и стерео дает без очков. Пару подобных систем возили несколько лет назад по выставкам и это действительно очень крутой вариант. Но вот не взлетело пока почему-то.

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

В итоге серебряной пули не получается, все равно остается масса малорешаемых проблем, и преимущества перед обычным стерео оказываются сравнительно небольшими и проявляющимися только что в мониторах для 3d моделирования и игр. А вот денег технология стоит куда больших чем простое стерео (себестоимость у которого — копейки, вот и производители, видимо, и не хотят в это дело вкладываться.
Говоря, что этот алгоритм простейшия я конечно не имел в виду, что его каждый школьник пишет. Но эта тематика очень хорошо разработана в фотокамерах, существует прорва готовых библиотек, в том числе портированных на всё что угодно. Я с такой готовой библиотекой игрался дажэ на Flash и всё отлично работало. Если бы эта тема была мне интереснее — думаю демку можно было бы накатать за день-два.

Телевизоры, которые под разными углами отдают разную картинку бывают. Используются в рекламе для Вау-эффекта, я такие видел, но по границам между разными зонами артефакты так сильно бъют в глаз, что использовать это для рабочего монитора вообще не вариант.

>> преимущества перед обычным стерео
Как человек, у которого дома стоит монитор с Nvidia 3DVision, и являющийся любителем этого дела, могу ответственно заявить, что любая технология с элементами 3D, которая позволит смотреть в монитор 5-6 часов подряд уже будет иметь как минимум одни преимущество перед обычным стерео.

>> а) не хватает контента который можно смотреть подобным образом
Сущетвуют алгоритмы, преобразующие 2d с подвижной картинков в псевдо-3d. они есть в большинстве современных 3D телевизоров и они реально крутые. Плюс в большинстве игр 3d встроенное, если конечно не вспоминать, что в большинстве игр крестик прицела сделан в плоскости экрана. На та же 3dVision эту проблему успешно решает.

>> б) в телевизор подобную штуку не поставишь — зритель может быть только один
Зато в игровой монитор — только в путь. Можно будет выглядывать из-за угла.

Так много компаний, типа той же NVidia пропихивают стандарт 3d в свои продукты с доисторических времён, как говорится, первого мехвариора, поддерживавшего шлемы VR. Причём пропихивают они всё это вопреки упорному нежеланию клиента за эти все навороты доплачивать. Анаглиф есть у любой нормальной их карточки. Могли бы и такую опцию освоить попробовать.
Телевизоры, которые под разными углами отдают разную картинку бывают. Используются в рекламе для Вау-эффекта, я такие видел, но по границам между разными зонами артефакты так сильно бъют в глаз, что использовать это для рабочего монитора вообще не вариант.


Это варианты с фиксированными зонами, а я про дисплей где зоны движутся и на лету подстраиваются под положение зрителя

Как человек, у которого дома стоит монитор с Nvidia 3DVision, и являющийся любителем этого дела, могу ответственно заявить, что любая технология с элементами 3D, которая позволит смотреть в монитор 5-6 часов подряд уже будет иметь как минимум одни преимущество перед обычным стерео.


Проблемы с усталостью от просмотра стерео эта технология как раз не снимает

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


Анаглиф как и другие софтверные решения не стоит производителю практически ничего

Могли бы и такую опцию освоить попробовать.


Там в играх тоже нужна поддержка, иначе полезет много артефактов. Даже с обычным стерео проблем с совместимостью много.
>> я про дисплей где зоны движутся и на лету подстраиваются под положение зрителя
Они что и матрицу налету механически перестраивают? Ну подождём, конечно, посмотрим.

>> Проблемы с усталостью от просмотра стерео эта технология как раз не снимает
Эта технология имитирует всего один аспект стерео. Картинка физически одна в оба глаза и фокусироваться нужно именно на том расстоянии на котором сходится паралакс. А значит непосредственной усталости глаз не будет.

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

>> Анаглиф как и другие софтверные решения не стоит производителю практически ничего
Анаглиф то да, но люба 3dVision карточка умеет отдавать два стереокадра по шнуру D-HDMA, на частотах кадров больше 100Гц. Реализовывать такую поддержку во всех картах на уровне железа во всех картах фирмы это явный перерасход усилий при том на сколько мало народу этим на самом деле пользуется.
Они что и матрицу налету механически перестраивают? Ну подождём, конечно, посмотрим.


Один из вариантов вроде да, механически двигал, но могу ошибаться, давно дело был :). Но это вообще говоря совершенно не обязательно. Подобные мониторы строятся из двух элементов — условно говоря обычного дисплея и маски/линзового растра. Для смещения ракурсов нужно сдвинуть один из этих элементов относительно другого, а это можно реализовывать и простым движением картинки на дисплее влево-вправо. Там только что с разрешением матриц проблемы, движение-то дискретно по пикселям (соседние пиксели относятся к разным кадрам, так что интерполяция не прокатит). Их раньше и обходили двигая маски/линзы (т.к. там движение может быть сколь угодно плавным). Сейчас к счастью пошла волна мониторов со сверхвысоким разрешением, думаю что она даст очень большой толчок вперед подобным системам.

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


Интересный довод, возможно. Но тогда и ощущения глубины не будет. Я не уверен что если человек будет ощущать глубину, то он не будет пытаться сфокусироваться на «ожидаемом» положении этой глубины или не испытывать конфликта между двумя разными ощущениями глубины (из движения глубина одна, из бинокулярного зрения — другая). Но конфликт здесь менее физиологичен чем с аккомодацией, так что возможно действительно напрягать он будет значительно меньше.
На хабре была статья, где похожим образом рисовали чайник, выглядящий находящимся частично с этой стороны экрана.
Пару замечаний по физиологии для уточнения по поводу бинокулярного зрения.

У Дэвида Хьюбела «Мозг, глаз, зрение» обратите внимание на такую информацию:
«В поле 17 примерно половину нейронов составляют бинокулярные клетки»
Именно те клетки, которые лучше всего реагируют на сигналы от обоих глаз.
( для тех, кто не читал подобного рода литературу, был такой исследователь Бродман, поделил кору на поля — картировал,
для зрительного восприятия выявил свои области — поля)

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

То есть в этом случае бинокулярные нейроны коры будут продолжать свою полноценную активность, а вот уже система анализа и сопоставления сигналов зрительного восприятия с остальными сенсорными системами будет получать противоречивые или не совсем точные данные в её связи с библиотекой 3D образов. Текущее окружающее пространство будет выглядеть примерно так, как если вы сделали фото и рассматриваете его ( при чем все время меняющееся фото). Это будет накладываться на остальные критерии оценки глубины пространства, угнетая их.

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

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

Поэтому это не может считаться доказательством. Вот если бы был пример человека, который с детства имел только один глаз, и он видел всё плоско — это уже было бы ближе (хотя и в этом случае мозг мог адаптироваться именно с помощью алгоритмов, основанных на параллаксе. Но возможно, это именно вспомогательный алгоритм, когда основной — бинокулярный — дает сбой). 100% проверить можно было бы с помощью приборов, которые возвращают зрение слепым. То есть если человек никогда ничего не видел, а потом ему дать возможность видеть (через одну камеру) — то будет возможность точно узнать, достаточно ли этого для восприятия объема.
Очень много комментариев на эту тему, в том числе и мимо хабра, поэтому придется написать куда-то в одно место. Выбор пал на вас)

— вы правы в том, что это не строгое доказательство, в том случае, если мы допускаем, что есть несколько алгоритмов восприятия глубины, и какие-то из них просто «набивают библиотеку» опытом, а когда библиотека уже есть, могут спокойно отключиться и никто не заметит потери. Причем «не заметит» сказано еще и очень мягко. Когда мы смотрим на экран в кинотеатре, наше бинокулярное зрение вообще никак нам не помогает (весь экшн происходит на плоскости экрана), и мы не чувствуем никакого дискомфорта, никакой необходимости перестраиваться, мы вообще не замечаем каких-то отличий — вплоть до того, что как в пелевинской метафоре про телевизор, не всегда можем понять, сами ли мы двигаемся по миру, или уставились лицом в экран, показывающий нам всю картинку. Опять же, не строгое доказательство, но заставляет слегка задуматься на тему того, почему такой важный элемент восприятия, как вы утверждаете, так легко выключается?
— у большого количества животных глаза смотрят по обе стороны головы. Мы ведь не считаем, что они все не осознают, что находятся в трехмерном мире, и ходят по плоскому миру мультиков? Опять же, вы можете сказать, что эти животные пользуются другим методом — параллакса или еще каким. Но зачем тогда нам смотрящие вперед глаза? Если они не дают никакого ощутимого профита по сравнению со, скажем, зрением птиц, то почему они закрепились в ходе эволюции? А если дают — почему они появились только у части животных? Общераспространенное мнение (по крайней мере, в моем учебнике биологии) говорило, что вперед смотрящие глаза нужны хищникам, чтобы лучше ориентироваться и хватать добычу — и это, как несложно заметить, не очень согласуется с тем что существует куча хищников, обладающих глазами по бокам головы, и им норм.
— что-то уже больше похожее на доказательство — что будет, если залепить глаз новорожденному котенку? А ничего не будет. Через непродолжительный период он сможет восстановить нормальное поведение, не будет врезаться в стены и в целом будет таким же котом, как и остальные.
что будет, если залепить глаз новорожденному котенку? А ничего не будет. Через непродолжительный период он сможет восстановить нормальное поведение, не будет врезаться в стены и в целом будет таким же котом, как и остальные.


В цитируемой статье вообще-то написано

The behavioural effects of an early period of monocular deprivation can be extremely profound. However, it is possible to achieve a high degree of recovery, even to normal levels of visual acuity, by prompt imposition of certain regimes of part-time reverse occlusion where the initially non-deprived eye is occluded for only part of each day in order to allow a daily period of binocular visual exposure

Т.е. с одним глазом от рождения получаем явно ненормального кота с «экстремально большими» изменениями в поведении
Но если дать ему смотреть двумя глазами какое-то время, даже непродолжительное, то кот может вернуть поведение намного ближе к норме. Дальше однако уточняется что полноценное стереовосприятие при этом похоже все равно не восстанавливается
Упс. My bad, что-то я правда невнимательно читал аннотацию. Временно откатываю этот довод, пока не соберу больше источников) Два предыдущих остаются, кстати.
Опять же, не строгое доказательство, но заставляет слегка задуматься на тему того, почему такой важный элемент восприятия, как вы утверждаете, так легко выключается?

Пример с котенком это и есть это утверждение, так что остается только одно — что они находятся по разные стороны. Но это тоже не аргумент. Возможно, что два глаза просто упрощают восприятие — известно же, что ящерицы видят в 2д, а третье измерение «достраивают» у себя в мозгу. То есть для них 3д — это умозрительная вещь (как для нас — 4д пространство). А у нас два глаза позволяют разгрузить мозг.

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

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

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

*печально* Вопросы громкие и назойливые, но вообще, если быть отвратительно честным, у меня нет здесь доказательств, пока я не вырастил ребенка (или кота) с телевизором, привязанным к голове. Наверное, наиболее убедительным мне все-таки кажется довод про животный мир — почему ящерица не сдвинула себе два глаза вперед, если это облегчает расчеты и позволяет облегчить мозг? Не то чтобы это было офигеть какое преобразование. Не говоря уже о том, что наверное, можно будет выкинуть неслабую часть мозга (занятую расчетами), которой у ящерицы и так не очень-то…
Значит 360 градусов обзора ящерице нужнее. А насчет телевизора скажу просто — адаптация. Вспомните эксперимент того ученого, который сделал очки, которые переворачивали изображение — вы же помните, что мы видим мир «перевернутым».
Не могу похвастаться, что все понял, но читать было интересно. Хабр — торт.
Статья интересная, с точки зрения «как своими руками собрать 3д треккер».

У меня есть несколько сомнений/вопросов:
1) Я не смог распознать машинку на втором облаке точек. «Продолговатый предмет» — да, но машина как-то не распознается.
Вы попробуйте отмешить эти «малоплотные» поинтклауды — без текстур очень затруднительно даже человеку понять «что это такое».
С текстурами конечно уже будет гораздо веселей — подозреваю, что это следующий этап вашего плана.

2) Насчет мозгов и прочего — человек просто невероятно неточен. Закрой глаза на миг — и ты уже не сможешь воспроизвести только что увиденный предмет в объеме — ошибешься и с размерами, и с пропорциями, и даже с формой (если это не что-то, с чем ты имеешь дело каждый день).
А тут компьютер с его точной кординатой точной точки. Мне кажется нужны какие-то вольности. Не точки, а области, с каким-то допуском, и т.п.

Можно провести эксперимент — загнать одноглазого в раскрашенную графитти пещеру, с очень сильным рельефом и равномерным освещением. Она даже может быть раскрашена в клеточку. Даже с двумя глазами, думаю, будет не просто определить форму, объем, расстояние, и т.п. А с одним — так вообще.
Эксперимент можно провести на экране — сгенерировав глубину по нойзу, и наложив поверх любую замысловатую текстуру, а потом проехавшись поездом-камерой по рельсам вдоль — и посмотреть что одним глазом удастся воссоздать (в отличие от знакомых нам зеленых полей с облаками и деревьями).

В целом интересно — продолжайте.

По софту:
Agisoft Photoscan (там фотограмметрия в чистом виде, для фото, но можно и кадры из видео подсунуть).
какойнибудь 3d camera tracker — из последнего After Effects или лучше Nuke — там можно не знать никаких параметров камеры, автоматом по видео определяются, строятся точки, плотный поинтклауд потом и мешинг с текстурингом.
Единственное, что рекомендую — предварительно денойзить видео от шума и зерна, и брать оригиналы без сжатия. И самое главное — не забывать про Lens Distortion, иначе будет сильный расколбас в поинтклаудах.
— и это, как несложно заметить, не очень согласуется с тем что существует куча хищников, обладающих глазами по бокам головы, и им норм.

Даже у этих хищников всегда есть довольно обширное перекрытие полей зрения для точной оценки расстояния до объекта.
А если этого нет, то значит точное расстояние до объекта определяется преимущественно не зрением.
К слову, у многих травоядных почти нет перекрытия полей зрения или оно незначительно.
Зато панорамности достаточно, чтобы к ним трудно было подобраться незамеченным.
У вас начало про одно, конец про другое.

Навскидку такую задачу можно решить двумя путями:
1. Построить point cloud и потом либо пройтись скользящим окном, либо матчить 3D дескрипторы, либо использовать ICP.
2. Multi-view object detection\recognition.

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

И как говорят в этом видео видят не глаза, видит мозг.
А про 3D дескрипторы можете что-нибудь рассказать или дать ссылки? Очень надо!
> Главная проблема, о которую мы немедленно споткнулись — там, например, пересекаются параллельные прямые.

Финиш. Прямые параллельны в ПРОСТРАНСТВЕ, а пересекаются их ПРОЕКЦИИ на фото.
Помню примерно 10 лет назад работал я в геймдеве, и работал я над квестом по визуалу чем-то похожем на Сибирь. Стояла задача перемещения 3Д обьекта по высокодетализованной, но статичной 3Д сцене.
Решение было найдено через проекции картинки на 3д «сетку карты глубины». Один в один как у вас с кубиками на первой гифке.
В итоге начал играться с построениями таких сеток, в том числе через паралакс.
При высокой плотности кадров — почти никаких проблем, до тех пор пока сетка не начинает разбиваться на отдельные 3д обьекты.

А вообще алгоритм можно применить немного по другому — снимать с неподвижной точки например дорогу, или небо. А потом «игнорировать» все обьекты(пиксели) что задетектили смещение.
И можно за минуту получить чистое небо и пустые улицы. Без перекрытий центра города и силуэтов длинной выдержки.
А вообще алгоритм можно применить немного по другому — снимать с неподвижной точки например дорогу, или небо. А потом «игнорировать» все обьекты(пиксели) что задетектили смещение.
И можно за минуту получить чистое небо и пустые улицы. Без перекрытий центра города и силуэтов длинной выдержки.
В Фотошопе: File -> Scripts -> Statistics -> Median
Дизайнеры по коридору направо.
Если секс, то только стоя, в гамаке и на лыжах?
Ответ пытается донести мысль, что для перечисленных задач уже существуют готовые инструменты, позволяющие получить быстро прототип решения и поиграться. Я только обозначил наличие таких инструментов в одном популярном софте. А с какой целью Вы настойчиво предлагаете изобретать велосипед?
В той статье автор не догадался использовать медианный фильтр…
Ему об этом в комментариях подсказали.
Зато автор примерно обьяснил и показал на примере как работают математики такого рода.
Вон оно отличие дизайнеров, системных интегратов и аутоматоров от классических программистов — желание понимать суть происходящего, копаться и велисапедить.
Вы же понимаете как работает медианный фильтр?
Молча складывает? Откидывает что-то по квантилям? Добавляет другой магии? Сколько вариантов магии?
Для того, чтобы понимать, как работает медианный фильтр, не обязательно учить язык программирования.
Но для того, чтобы увидеть, как работают его разные варианты, и понять, почему они работают именно так, неплохо бы его изучить, чтобы иметь возможность экспериментировать. Особенно если не все интересующие варианты реализованы во всяких фотошопах.
Зато автор примерно обьяснил и показал на примере как работают математики такого рода.
Не выдавайте желаемое за действительное. Автор той статьи ставил перед собой другую, сугубо утилитарную цель: "В конечном итоге ничего подходящего я так и не нашел, и в итоге решил написать такое ПО самому, благо что все выглядело весьма легко."
В результате он потратил время на создание своего велосипеда и сделал его не совсем правильно, а ведь достаточно было просто подсказать ему про фотошоп.
Ок, но фотошоп не может являться допустимым решением, так как привязан к некой платформе, лицензии, не имеет АПИ и не запускается с консоли.
А вот решение на ImageMagic/OpenCV/Perl/Python/и.т.д — может.
фотошоп не может являться допустимым решением, так как привязан к некой платформе, лицензии, не имеет АПИ и не запускается с консоли.
Вполне может являться решением в рамках задачи, допускающей такие ограничения.

решение на ImageMagic/OpenCV/Perl/Python/и.т.д — может.
Да, это более гибкий, но и трудоемкий в адаптации к нужному решению инструментарий. Странно сразу за него хвататься, когда задачу можно решить более простыми средствами. Более простые средства, это необязательно фотошоп, но тот же ImageMagic против OpenCV или OpenCV против голого C++ или C++ против ассемблера, например. Простыми эти средства стали за счет специализаций под наиболее распространенные задачи. Поэтому, разумно при решении задачи поинтересоваться, насколько она уникальна и есть ли для нее приемлемые готовые решения. Вроде, очевидные вещи.
Что касается первого фото и рассуждений об эффектах перспективы: двояковыпуклая линза (хрусталик) в фокус проецирует то, что максимально удалено, по мере приближения проекция отступает от фокуса (конечно, если не рассматривать центральную ось). На мой взгляд, нет более простого варианта оптического прибора и более простого критерия удаленности (и в т.ч. снижения важности для жизнедеятельности), поэтому он и выбран в процессе отбора. А искажения граней куба просто признаются несущественными на фоне решения этой задачи. Предметы, расположенные вблизи и на оси зрения, практически не искажаются и не напрягают мозг.
Получив 3д модель, и фото в профиль так и не появится второй глаз, так что проблемы у алгоритма распознования будут все еще довольно большие. Разве что сможет догадаться, что возможно видит часть лица…
Присоединюсь, шикарная статья!
Это же почти готовый алгоритм для системы наведения.
Представьте, что вы — нейронная сеть. Это не должно быть очень сложно — в конце концов, как-то так оно и есть на самом деле.

Узнаю стиль Питера Уоттса :)
Спасибо за хорошую статью и ваш труд!

Вместо того, чтобы копировать увиденное, мы хотим найти принцип и повторить его своими силами (может быть, сделав это проще/эффективней).


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

Банально, без зеркала нельзя рассмотреть свои зубы, но в мозгу есть их трёхмерная модель, созданная с помощью осязания. Мы знаем особенности и положение каждого зуба. Примечательно и то, что эта модель даже слегка может отличаться от визуальной (бывает, в зеркале зубы кажуться не совсем такими, какими их чувствует язык).

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

Что касается зрения, сначала анализируются примитивы: линии, области света и тени, цвета, после чего распознаются фигуры и контуры. Затем это всё кластеризуется в более сложные образы знакомых нам предметов. На основании привычных нам размеров и теней выводится их относительное местоположение друг к другу, а после этого приближённая трёхмерная модель. Ведь мы можем построить её даже по детскому рисунку из статьи!

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

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

Буду рад услышать и другие рассуждения по этому поводу!
Sign up to leave a comment.

Articles

Change theme settings