PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Разработка программ (http://pccar.ru/forumdisplay.php?f=27)
-   -   программа построения 3D модели вокруг машины (http://pccar.ru/showthread.php?t=8725)

AngelOfGrief 26.05.2009 15:18

программа построения 3D модели вокруг машины
 
Приветствую.

Есть ли у кого идеи как при помощи n-ного кол-ва камер и софта построить 3D картинку объектов вокруг машины с целью облегчения парковки? Теоретически, это можно сделать даже с двумя камерами если машина какое-то время движется и накапливает информацию.

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

AndreyAv 27.05.2009 09:28

Цитата:

Сообщение от AngelOfGrief (Сообщение 99211)
Приветствую.

Есть ли у кого идеи как при помощи n-ного кол-ва камер и софта построить 3D картинку объектов вокруг машины с целью облегчения парковки? Теоретически, это можно сделать даже с двумя камерами если машина какое-то время движется и накапливает информацию.

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

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

AngelOfGrief 27.05.2009 13:27

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

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

eea_2M 27.05.2009 14:32

Я таки не понял, в чем вопрос?
Если хочется разработать самому - можно нарыть стартовые исходники например тут http://disparity.wikidot.com/ и вперед!

Если хочется поиметь это сделанным кем-то другим - огласите бюджет, мож и возьмусь :artist:

AngelOfGrief 27.05.2009 15:18

Спасибо, гляну. Вообще, наверное, я представлял это так: делается фотография двумя камерами и получается 3D модель, которую можно крутить во все стороны. Но, видимо, это сложно. Я просто уже искал подобные проекты, но ничего не находил.

eea_2M 27.05.2009 18:04

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

AngelOfGrief 27.05.2009 23:20

Стереонасадка -- это я так понимаю примочка, которая разбивает изображение на две половины со смещением позиции просмотра?

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

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

А вот нашел статью как организовать 3D изображение на любом LCD мониторе не заставляя пользователя надевать цветные или поляризационные очки:

http://individual.utoronto.ca/iizuka...cellophane.htm

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

eea_2M 28.05.2009 14:09

Цитата:

Сообщение от AngelOfGrief (Сообщение 99402)
Стереонасадка -- это я так понимаю примочка, которая разбивает изображение на две половины со смещением позиции просмотра?

Да, именно так. Насадка промышленная, расчитана на 52мм объектив. Но мне это неважно - все равно приделываю на обычную web камеру.
Купил ее на молотке (там еще такие есть), выглядит вот так:
http://s40.radikal.ru/i089/0905/d3/04664f044a25.jpg

Цитата:

Сообщение от AngelOfGrief (Сообщение 99402)
Я прочитал описание на той странице, примерно понятно. Т.е. они создали алгоритм который сопоставляет два изображения и анализируя смещение цветом обозначает расстояние до каждой точки.

Алгоритм известный, но работает уж больно долго. Я все пытаюсь его упростить удерживая качество на минимально приемлемом уровне.
Фактически прокручиваю левую половинку фотографии относительно правой. В результате строится серия слоев: первый - сдвиг на один пиксель, второй - на два и т.д.
Количество слоев пока ограничил 20-ю. Расстояние между слоями зависит фактически от объектива - установлю экспериментально :be:

Цитата:

Сообщение от AngelOfGrief (Сообщение 99402)
А результатом поделишься? Или на коммерческой основе?

У меня несколько конкурирующих проектов, в том числе восстановление BMW 635CSi (не выдержал - прихвастнул :blush:). До этого доходят руки эпизодически. Если не брошу - выложу open source.
Для изменения приоритетов мне нужна хоть какая-нибудь мотивация :pleasantry:

Цитата:

Сообщение от AngelOfGrief (Сообщение 99402)
А вот нашел статью как организовать 3D изображение на любом LCD мониторе

Это интересно, правда не знаю - как применить в авто :dntknw:. Есть правда идея как сделать "правильный" 3D night vision, но это пока в области полной теории, для оценки реализуемости нужна пара тестов :secret:

JokerJek 17.07.2009 17:21

Идея интересная. В моём понимании система должна выглядеть таким образом. Измерить остаётся только расстояние от центра картинки до точки.
http://i048.radikal.ru/0907/7f/16e96f063096.jpg
Америки не открыл, зато наглядно))

turyst 17.07.2009 19:53

Да... Было бы здорово иметь 3Д парктроник, На мониторе "вид сверху-сбоку".
И еще поварачивается в зависимости от направления движения.

Но явно быстрее будет научиться чувствовать габариты.

Производительность нашего "процессора" пока зачительно выше.
И программа самообучения есть. ;)

____________________________

А может просто камер понатыкать по периметру?

AngelOfGrief 18.07.2009 02:39

Jokerjek, спасибо за схему, можно только немного пояснить где на ней что? Я пока не понял ничего...

:/

Коллеги, а как насчет более простой вещи для начала... Можно ли оптически довести угол обзора камеры до 180 град? Моя камера видит макс. градусов 130... В принципе, это ведь несложно? А как практически сделать, что к ней прилепить?

Собссно, вот прообраз системы:

http://www.carmagazine.co.uk/News/Se...mera-unveiled/

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


Но ее до сих пор нет в продаже как я понял.

Еще вот:

http://techon.nikkeibp.co.jp/english...138350503&ad_q

Ну в зеркала будет мне поставить несложно: накладки съемные, а в жгуте лишние провода есть заводские... Только как настроить и скоординировать...

JokerJek 20.07.2009 10:22

Цитата:

Сообщение от AngelOfGrief (Сообщение 104352)
Jokerjek, спасибо за схему, можно только немного пояснить где на ней что? Я пока не понял ничего...

:/

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

Цитата:

Сообщение от AngelOfGrief (Сообщение 104352)

Собссно, вот прообраз системы:

http://www.carmagazine.co.uk/News/Se...mera-unveiled/

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


Но ее до сих пор нет в продаже как я понял.

Еще вот:

http://techon.nikkeibp.co.jp/english...138350503&ad_q

Ну в зеркала будет мне поставить несложно: накладки съемные, а в жгуте лишние провода есть заводские... Только как настроить и скоординировать...

Это совсем другое! Это не 3D!!! Это что-то вроде панорамы.

AngelOfGrief 20.07.2009 12:17

Расстояние до центра картинки - до какого центра какой картинки?
То что считать по теореме Пифагора (угол, синус, высота итд) это и так ясно.

Все равно ничего не понял в этой схеме...

JokerJek 20.07.2009 14:34

Цитата:

Сообщение от AngelOfGrief (Сообщение 104463)
Расстояние до центра картинки - до какого центра какой картинки?
То что считать по теореме Пифагора (угол, синус, высота итд) это и так ясно.

Все равно ничего не понял в этой схеме...

С каждой камеры будет картинка.
У этой картинки будет центр. Соединяем углы))
Потом сравниваем картинки с 2 камер находим общие(похожие) точки. И измеряем расстояние до центра.

MiD_E34 20.07.2009 14:57

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

AngelOfGrief 21.07.2009 01:06

>> Потом сравниваем картинки с 2 камер находим общие(похожие) точки.

JokerJek, вот это самая интересная фраза. :) По какому алгоритму это делать? Похожие по цвету?

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

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

eea_2M 21.07.2009 13:43

Цитата:

Сообщение от AngelOfGrief (Сообщение 104352)
Коллеги, а как насчет более простой вещи для начала... Можно ли оптически довести угол обзора камеры до 180 град? Моя камера видит макс. градусов 130... В принципе, это ведь несложно? А как практически сделать, что к ней прилепить?

Я понимаю - только заменой объектива, что для наружных влагозащищенных камер практически нереально. Проще купить готовую - типа этой http://************/product_info.php/...oducts_id/1079

Цитата:

Сообщение от MiD_E34 (Сообщение 104491)
наверное широкоугольные камеры не очень катят - придется делать сложный алгоритм пересчета и все равно искажение будет значительное

Это как раз не проблема, просто собранную систему надо будет юстировать на стендовых испытаниях - дать ей "осмотреть" объекты типа стена, конус на заранее известных расстояниях.

Цитата:

Сообщение от JokerJek (Сообщение 104487)
Потом сравниваем картинки с 2 камер находим общие(похожие) точки. И измеряем расстояние до центра.

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

Плюс к этому, стереонасадка, рекламируемая мною на предыдущей странице, была признана профнепрегодной - получились очень малые углы обзора при существенном наложении полукадров (снято с водительского места):
http://s16.radikal.ru/i191/0907/8b/4a4cf101cae2.jpg

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

AngelOfGrief 21.07.2009 13:54

Я думаю, что они врут насчет 180 град. Моя камера стоит денег примерно столько же и по чувствительности такая же -- ночью без ИК подсветки все видно отлично. А при покупке продавец (Горбушка) тоже говорил про 180. Подключили, я встал сбоку и говорю: и где я на мониторе? :)

eea_2m: нормализация кадров это что? Типа у них рассинхронизация по частоте кадров? Но мы вроде про вебкамеры говорим?

eea_2M 22.07.2009 13:42

Цитата:

Сообщение от AngelOfGrief (Сообщение 104583)
Я думаю, что они врут насчет 180 град. Моя камера стоит денег примерно столько же и по чувствительности такая же

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

Цитата:

Сообщение от AngelOfGrief (Сообщение 104583)
eea_2m: нормализация кадров это что? Типа у них рассинхронизация по частоте кадров? Но мы вроде про вебкамеры говорим?

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

JokerJek 22.07.2009 14:08

Цитата:

Сообщение от AngelOfGrief (Сообщение 104543)
>> Потом сравниваем картинки с 2 камер находим общие(похожие) точки.

JokerJek, вот это самая интересная фраза. :) По какому алгоритму это делать? Похожие по цвету?

Например
Я бы матрицы сравнивал. Углы устаноки камер известны. Значит можно просто наложить одну на другую в определённой области. И сравнивать с определённой задержкой, 0,1 секунды будет достаточно.
Цитата:

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

И где там такой алгоритм? Я увидел только картинку, где по центру машина и вокруг неё "панарама". Где там расстояния? Можт я не туда смотрел?
По поводу "уже есть"! Я и не говорил, что открытие сделал имхо в природе давно уже так всё и считается))
Цитата:

Сообщение от AngelOfGrief (Сообщение 104543)
На самом деле при парковке машины гораздо бОльшая проблема -- мертвые зоны обзора. Т.е. нужно грамотно организовать камеры.

Имхо тема была про 3D, в моём понимании, это http://ru.wikipedia.org/wiki/3D. Потом выяснилось, что нужно сделать панораму вокруг машины. Надо бы по терминам договориться!

eea_2M 22.07.2009 14:51

Цитата:

Сообщение от JokerJek (Сообщение 104728)
И где там такой алгоритм? Я увидел только картинку, где по центру машина и вокруг неё "панарама". Где там расстояния? Можт я не туда смотрел?

Алгоритмы тут http://disparity.wikidot.com/, были приведены в посте http://www.pccar.ru/showpost.php?p=99334&postcount=4 данной ветви.
Просто не надо лениться просматривать всю тему :yes4:

Цитата:

Сообщение от JokerJek (Сообщение 104728)
Имхо тема была про 3D, в моём понимании, это http://ru.wikipedia.org/wiki/3D. Потом выяснилось, что нужно сделать панораму вокруг машины. Надо бы по терминам договориться!

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

Сделать это одной камерой на каждой стороне а/м (как делают сейчас в Лексусе) можно лишь с погрешностью (недаром в рекламе показывают парковку на пустой площадке - при наличии препятствий адекватность картинки может существенно пострадать).

JokerJek 22.07.2009 15:20

Цитата:

Сообщение от eea_2M (Сообщение 104734)
Алгоритмы тут http://disparity.wikidot.com/, были приведены в посте http://www.pccar.ru/showpost.php?p=99334&postcount=4 данной ветви.
Просто не надо лениться просматривать всю тему :yes4:

Просмотрел:blush:
Впринщипе, такую же картинку и нарисовал...:rofl: Зато сам придумал:blush:


Цитата:

Сообщение от eea_2M (Сообщение 104734)
Ключевое здесь - построение 3-х мерной модели на основании стереоизображения. Использовать полученный результат можно разными способами - и для построения реального панорамного обзора, и для определения взаимного расположения и относительных скоростей а/м на дороге.

Сделать это одной камерой на каждой стороне а/м (как делают сейчас в Лексусе) можно лишь с погрешностью (недаром в рекламе показывают парковку на пустой площадке - при наличии препятствий адекватность картинки может существенно пострадать).

Очень не люблю вопросы "Зачем". Раз человек спрашивает, значит надо! И при этом, спрошу, а зачем это надо? Мне будет более чем достаточно видео со всех сторон. Расстояние мозг определит, для этого я его и кормлю:rofl:

eea_2M 22.07.2009 17:42

Цитата:

Сообщение от JokerJek (Сообщение 104742)
Очень не люблю вопросы "Зачем". Раз человек спрашивает, значит надо!

Я разве спрашивал?
Цитата:

Сообщение от JokerJek (Сообщение 104742)
Мне будет более чем достаточно видео со всех сторон. Расстояние мозг определит, для этого я его и кормлю:rofl:

Значит тебе данная разработка не нужна.

AngelOfGrief 23.07.2009 01:40

eea_2M, теперь понял про нормализацию. А разве авто баланс белого -- не софтовая функция? У меня сейчас в машине веб-камера стоит, так вот в вьюере по умолчанию (amcap.exe) эти функции включаются и выключаются. А дневное засвечивание и ночной недостаток чувствительности они просто регулируют экспозицией (т.е. суммируют соседние кадры).

eea_2M 23.07.2009 14:00

Цитата:

Сообщение от AngelOfGrief (Сообщение 104809)
А разве авто баланс белого -- не софтовая функция?

Понятия не имею :no: я до этого еще не добрался - бьюсь над парами тестовых кадров. Для обработки двух стандартных потоков 640х480 30fps, да так, чтобы проца хватало на отрисовку результирующей картинки и оставляло немного места для других процессов - обсчет одной пары кадров должна занимать не более 10-ти миллисекунд. Не получается пока :read:
Бродит даже крамольная мысль съехать на однокристалку :sm550:

JokerJek 27.07.2009 14:39

Цитата:

Сообщение от eea_2M (Сообщение 104776)
Я разве спрашивал?

Нет!
Удивительно, и я тоже не спрашивал, и много кто НЕ спрашивал. Спросил только создатель темы, ему я и ответил))
Цитата:

Сообщение от eea_2M (Сообщение 104776)
Значит тебе данная разработка не нужна.

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

eea_2M 30.07.2009 17:13

Результаты на текущий момент
 
По тестовой паре кадров:

http://s47.radikal.ru/i115/0907/bb/9a5985fd2802.jpg

построена адекватная разностная матрица:

http://s46.radikal.ru/i114/0907/80/186eb0824d98.jpg

Обработка одной пары на Intel DualCore 1,8 занимает чуть более 50 миллисекунд без учета времени на вывод изображения.

Задачи на текущий момент:
1) Определиться с форматом отображения трехмерной модели :sm467:
2) Увеличение производительности, хотя путей осталось немного :dntknw:
3) Обкатка модели на "уличных" кадрах.

AngelOfGrief 01.08.2009 11:56

Я думаю, нужно попробовать результирующий кадр отобразить не цветами на плоскости, а в виде "расстояний", т.е. смотреть как бы сверху. Т.е., более светлые точки будут ближе к низу, а светлые -- дальше. Думаю, это будет очень наглядно.
А если имеется 3D массив, наверное, можно использовать Direct3D для отображения картинки средствами видеокарты.

50 ms -- как раз 20 кадров/сек -- вполне достаточно.

eea_2M 03.08.2009 16:11

Цитата:

Сообщение от AngelOfGrief (Сообщение 105905)
Я думаю, нужно попробовать результирующий кадр отобразить не цветами на плоскости, а в виде "расстояний", т.е. смотреть как бы сверху. Т.е., более светлые точки будут ближе к низу, а светлые -- дальше.

Я склоняюсь к мысли сделать вид не сверху, а под углами 30 - 60 градусов. Тогда можно будет изображения объектов распределить по соответствующим им слоям. Поколдую над прототипом - выложу пример.

Цитата:

Сообщение от AngelOfGrief (Сообщение 105905)
А если имеется 3D массив, наверное, можно использовать Direct3D для отображения картинки средствами видеокарты.

DirectX - вещь универсальная и очень полезна, когда лень самому высчитывать поверхности. В нашем случае, результатом является готовый трехмерный массив цветовых точек. Спорю, что я его своим узкоспециализированным алгоритмом спроецирую его на плоскость быстрее, чем полнофункциональный алгоритмом библиотеки. :wine:

Цитата:

Сообщение от AngelOfGrief (Сообщение 105905)
50 ms -- как раз 20 кадров/сек -- вполне достаточно.

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


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


Часовой пояс GMT +4, время: 18:08.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot