Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Определить размер объекта по фото


Автор: lepetal 25.4.2013, 14:36
Ребята, сбился с поисков, помогите!

Есть задача:
Задано изображение объекта, наблюдаемого под некоторым углом. Оцените его размер.

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

Автор: _Y_ 25.4.2013, 20:13
Если на фотографии есть какие-то предметы, которые можно использовать для оценки шкалы и угла поворота предмета, то можно. Много раз, наверное, видели, что на фотографии рядом с объектом лежит монетка или коробка спичек (стандартный предмет). Иначе размер объекта не оценить. 

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

ЗЫ Все это при условии, что можно пренебречь искажениями, вызвываемыми оптикой фотоаппарата и тому подобными вещами.

Автор: lepetal 25.4.2013, 23:53
_Y_, можете привести пример реализации такой задачи? Потому что на глаз вроде бы задача тривиальная и я видел пару-тройку приложений на iStore по camera's measurement.

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

Пока пойду на lektorium.tv, посмотрю курс Конушина, но там он рассматривал по-моему, только вариант с машинным обучением, когда картинок несколько.

Автор: mrgloom 26.4.2013, 09:02
лучше покажите картинку.


имея 2 камеры - стереопару и зная расстояние между камерами, можно построить карту глубины для изображения и для каждой точки определить расстояние вроде как.
затем надо сегментировать объект на изображении( или как то выделить) и взять по карте глубины среднее между пикселями.

Автор: lepetal 26.4.2013, 09:13
mrgloom, в условии не указаны две камеры. У нас есть только одно изображение. В качестве примера:
 http://s1.ipicture.ru/

Автор: mrgloom 26.4.2013, 10:02
тогда можно только догадаться.

гуглите что то типа depth from single image \ single view
depth estimation from single image
3d model from single image
http://www.cs.cornell.edu/~asaxena/learningdepth/


есть еще вариант, если с одной камеры, но с разных ракурсов или из видео.

Автор: lepetal 26.4.2013, 16:15
mrgloom, да, особая точность не требуется, соответственно искажения камеры можно опустить.

Автор: mrgloom 26.4.2013, 16:19
Цитата(lepetal @  26.4.2013,  16:15 Найти цитируемый пост)
да, особая точность не требуется, соответственно искажения камеры можно опустить. 


а кто говорил про искажения камеры?

Автор: lepetal 26.4.2013, 16:36
mrgloom, просто от field view камеры тоже зависят искажения на изобрежении.

Автор: lepetal 26.4.2013, 17:09
Нашёл по теме выделение объектов на фотографии:
http://vision.cs.uiuc.edu/proposals/
Насколько это может помочь моей задаче?

Автор: Pavia 26.4.2013, 19:11
У-ууу как всё запущенно. 
Деловто взять и поделить.
А если просто, то у вас постановка задач расплывчатая. Хочу то незнамо что. Возьмите книгу Multiple View Geometry in Computer vision. 

Автор: maxim1000 26.4.2013, 22:01
lepetal, на приведённом изображении настоящая машина или её уменьшенная модель?

Автор: _Y_ 26.4.2013, 22:34
1. На тему распознавания объектов я уже рекомендовал вот http://forum.vingrad.ru/index.php?showtopic=314777&view=findpost&p=2246148. Там есть хорошая глава. И написано просто. Сам язык LabVIEW Вам не нужен, то там каждая глава разделена пополам. Читайте только половину, в которой принципы без привязки к языку.

2. Если предположить, что на картинке настоящий автомобиль (в чем я сомневаюсь), то все просто. Видны два колеса, размер который легко найти в сети (зная что за автомобиль, конечно). От их размеров и отталкиваться

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

Автор: lepetal 26.4.2013, 22:40
maxim1000, вообще, в задаче не указано, какой объект, поэтому объект может быть любым, главное, чтобы алгоритм работал.
Но допустим, что машина настоящая.
Pavia, знаю, не я задание составлял, увы smile Хочется самому указывать угол и расстояние. Потому что расстояние без эталонной метки или бинокулярной камеры не определяется.

Автор: maxim1000 27.4.2013, 07:12
Цитата(lepetal @  26.4.2013,  22:40 Найти цитируемый пост)
Хочется самому указывать угол и расстояние

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

я потому и спросил "настоящая/уменьшеная", потому что при одном и том же угле может быть разный  размер

кстати, какой именно угол указывается?

Автор: lepetal 27.4.2013, 17:28
maxim1000,
Думаю, 45-55 градусов. 
В задаче не указано, поэтому это остаётся на волю разработчика.

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

P.S. Если кто готов за денежку взяться - пишите, пока соображаю сам.

Автор: ERR11 8.10.2013, 17:05
Подскажите пожалуйста!

Как посчитать размер объекта на местности(с учетом искажений,которые вносит объектив) ,зная расстояние от фотоаппарата до объекта, фокусное расстояние объектива, все про матрицу камеры?Где про это можно почитать?

Автор: ТарасАтавин 24.11.2013, 19:26
Цитата(_Y_ @  25.4.2013,  20:13 Найти цитируемый пост)
Если на фотографии есть какие-то предметы, которые можно использовать для оценки шкалы и угла поворота предмета, то можно. Много раз, наверное, видели, что на фотографии рядом с объектом лежит монетка или коробка спичек (стандартный предмет). Иначе размер объекта не оценить. 
Эталон как раз не обязателен, достаточно фокусного расстояния, формата матрицы/кадра и расстояния съёмки: по формату и фокусному расстоянию определяется угол съёмки, далее по самой фотке измеряем расстояния от центра до крайних точек изображения объекта в пикселах/миллиметрах, умножаем на тангенс угла съёмки и делим на размер фотки, получаем тангенсы угловых координат крайних точек, переводим в радианы и умножаем на расстояние съёмки, получаем линейные координаты, вычитанием координат противоположных точек получаем размеры. Если предмет повёрнут в плоскости кадра, то разности надо возвести в квадрат, квадраты сложить и из суммы извлечь квадратный корень. Если предмет составляет угол высотой пирамиды отсечения, то расстояния тоже являются координатами и берутся для каждой точки, а разности надо возвести в квадрат, квадраты сложить и из суммы извлечь квадратный корень.

Добавлено через 2 минуты и 20 секунд
Цитата(lepetal @  26.4.2013,  09:13 Найти цитируемый пост)
в условии не указаны две камеры. У нас есть только одно изображение. В качестве примера:
Без фокусного расстояния, формата кадра и расстояния съёмки это с равных успехом может быть и полноразмерный автомобиль, и модель в 36, или 45 раз меньше прототипа.

Автор: _Y_ 25.11.2013, 23:12
Цитата(ТарасАтавин @  24.11.2013,  19:26 Найти цитируемый пост)
Эталон как раз не обязателен, достаточно фокусного расстояния, формата матрицы/кадра и расстояния съёмки


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

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)