Перейти к содержимому
Compvision.ru
alex

3D реконструкция

Recommended Posts

Здравствуйте.

Возможно вопрос покажется простым, но я только начинаю осваивать OpenCV.

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

Т.е. нужно что-то вроде ProjectPoints2, только с прямо противоположным преобразованием.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Здравствуйте.

Возможно вопрос покажется простым, но я только начинаю осваивать OpenCV.

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

Т.е. нужно что-то вроде ProjectPoints2, только с прямо противоположным преобразованием.

Вот тема с аналогичным вопросом: http://www.compvision.ru/forum/index.php?showtopic=198

там есть ссылки на примеры, и статьи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо, но это не совсем то что нужно. Вернее совсем не то)

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

Возможно я не совсем точно сформулировал задачу - мне нужна 3D реконструкция объекта по нескольким фотографиям, т.е. то же что делает, например, PhotoModeler. Я же описал самый простой случай, когда по координатам характерной точки на двух снимках, необходимо определить ее абсолютные координаты.

Что-то вроде такого:

(X Y Z) = f( u1, v1, u2, v2, fx, fy, Cx, Cy, k1, k2, k3, p1, p2,...), где

X,Y,Z - искомые координаты точки в 3D пространстве

u1, v1, u2, v2 - координаты этой точки на снимках

fx, fy - фокусное расстояние

Cx, Cy - координаты главной точки

k1, k2, k3, p1, p2 - коэфф. дисторсии

Буду рад любым подсказкам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Подкину документ (надеюсь это по теме):Photorealistic_Scene_Reconstruction_by_Vixel_Coloring.pdf

И проект робота с определителем расстояния до объектов по стереоизображениям: RobotProjectOpenCV.pdf

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Здравствуйте! У меня вопрос - можно ли восстановить, используя OpenCV, трехмерную форму объекта, используя стереоизображения, т.е. два 2D-изображения одного объекта, сделанные под разными углами. Или лучше использовать что-то другое?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Есть проект с открытым кодом: http://phototour.cs.washington.edu/bundler/

Еще поищите книжку Multiple View Geometry in computer vision, там объясняется вся теория.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

То есть тебе надо сделать что-то подобное?

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да. Что-то такое)

Так можно подобное на OpenCV сделать ? Или для визуализации удобнее что-то другое использовать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Может кто знает, есть ли какие то готовые реализации с нормальным интерфейсом?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Люди! Всем зравствуйте! Помогите мне, пожалуйста!

Интересует реконструкция 3D сцен и объектов. В частности построение 3D модели головы человека, по 1-2 фотографиям.

Знаю, что такое реально, но никак не могу найти как решают эту задачу!

Думала может пойти от модели, ну типо болванки и ее уже как-то подгонять...

Может shape from shading использовать...

Чесно я в полном замешательстве. Думала, если, например, если 2 фотографии(фас-профиль)- можно сопоставить нос-нос, глаз-глаз и т.д. , но что дальше...

Также думала, что может как-то морфинг поможет...

В общем, надеюсь на вашу помощь, хотя и понимаю, что наверно все очень пространственно написала.

Ну может вы мне хоть что-нибудь подскажите...

P.S. Еще такой вопрос:как пользоваться aam? Скачала, но что-то не поняла, что к чему, может существует какой-нибудь help-ик на русском.

Всем заранее спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я использовал так:

Подключил исходники AAM (лежат в аттаче) к проекту, дальше добавил код:

AAM_src.rar

// Объявляем заголовочники
#include "AAM_IC.h"
#include "AAM_basic.h"
#include "AAM_MovieAVI.h"
#include "VJFaceDetect.h"

//
.....
//

void main (void)
{
//
...
//

// для тренировки (создание файла my.amf) надо сделать следующее (это было в отдельной функции)
{
//параметры AAM
int type = TYPE_AAM_BASIC;
int level = 2;

VJfacedetect facedet;
facedet.LoadCascade("haarcascade_frontalface_alt2.xml");
file_lists imgFiles = AAM_Common::ScanNSortDirectory("image//", "jpg");
file_lists ptsFiles = AAM_Common::ScanNSortDirectory("image//", "pts");

if(ptsFiles.size() != imgFiles.size()){
fprintf(stderr, "ERROE(%s, %d): #Shapes != #Images\n",
__FILE__, __LINE__);
ShowMessage("Error");
Close();
}

AAM_Pyramid model;
model.Build(ptsFiles, imgFiles, type, level);
model.BuildDetectMapping(ptsFiles, imgFiles, facedet);
model.WriteModel("my.amf");
}


// для детекта и вывода результата.
{
//создаем объекты
AAM_Pyramid model;
AAM_Shape Shape;
int view_mode=2; // маска

model.ReadModel("my.amf");
VJfacedetect facedet;
facedet.LoadCascade("haarcascade_frontalface_alt2.xml");
while(1)
{
считать кадр (преобразовать в серый)
model.Fit(frame, Shape, кол-во итераций ( штук 10-30) , false);
model.Draw(frame, Shape, view_mode - точки, сетка или маска );
нарисовать frame
cvWaitKey(10);
}
}

}[/code]

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Большое спасибо! Чуть позже обязательно попробую!

Жаль, что с реконструкцией помочь не можете,очень на вас рассчитывала..Видимо не судьба сбыться моей мечте, во всяком случае пока).

А вообще хотела сказать, что очень классный форум! Много интересного здесь нашла! Спасибо, что вы есть)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Здесь есть информация по 3D реконструкции с использованием фотометрии (уже писал в теме про распознавание лиц): http://www.cs.washington.edu/homes/kemelmi/

,правда она на английском.

А конкретно здесь: http://www.cs.washington.edu/homes/kemelmi/ProjectPages/Faces/paper.pdf

,здесь: http://www.cs.washington.edu/homes/kemelmi/ProjectPages/Mooney/paper.pdf

и здесь: http://www.wisdom.weizmann.ac.il/~vision/photostereo/Photometric%20Stereo%20with%20General%20Unknown%20Lighting%20-%20BasriJacobsKemelmacher_ijcv06.pdf

Статейки небольшие, и с картинками :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ухты! Спасибо! Надо было раньше написать)

Да картинки - это всегда плюс!) особенно в англоязычных материалах - так хоть интерес появляется их переводить!)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

+ сюда еще и Photogrammetry до кучи добавим.

а программы вроде бы даже и есть целый список Current Suite of Software.

http://en.wikipedia.org/wiki/Photogrammetry

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо:) Как будут результаты, постараюсь отписаться, но пока мешают другие дела этим вплотную заняться...все навалилось..((

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Люди добрые, помогите!Не знаю уж сюда или не сюда пишу.. не совсем по теме..

Вопрос про AAM делаю по этому руководству.

http://www.isbe.man.ac.uk/~bim/software/am_tools_doc/model_building_from_scratch.html

Собственно вопрос:

Подскажите, пож-та, кто это уже делал: обязательно ли проходить все шаги, просто у меня срок уже подходит-не успеваю!

Или может быть подскажите как для snake в OpenCV задать начальную форму-может проще в данном случае велосипед изобрести?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да... я так поняла, что видимо зря я по тому руководству делала.. Просто по аналогии с приведенным выше примером у меня не получатся!

Объясните пожалуйста поподробнее!((

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я так понял, что Вам нужна модель для AAM. Но тогда вопрос, какую библиотеку используете? Если ту, что я прикрепил сверху напишите e-mail, я отправлю модель. Не прикрепил, т.к. она большая (около 40 Мб, если память не подводит).

Если AAMlibrary (то, что я прикрепил, это часть оттуда), то с ней идет набор файлов (фотки и разметка + тулза для создания из этого модели) для формирования модели. Поэтому его там и нет.

Я бы лучше использовал ASMLibrary, по опыту работает намного лучше.

Аналогично, в архиве есть файл в моделью.

Есть еще Stasm на основе которой построена ASMlibrary, но она работает похуже. Однако на сайте есть документация с картинками по всему этому делу, правда на английском языке.

Самостоятельное обучение ASM и AAM, задача очень трудоемкая, т.к. нужно разметить несколько тысяч фотографий вручную (обычно используется от 20 до 68 точек).

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

Там много интересного можно найти.

Правда нужно сначала загрузить туда несколько своих файлов. И получите эккаунт.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Система 3D восприятия для мобильных роботов (язык C#)

http://code.google.com/p/sentience/

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Здесь близкие темы:

http://www.compvision.ru/forum/index.php?showtopic=423

http://www.compvision.ru/forum/index.php?showtopic=529

http://www.compvision.ru/forum/index.php?showtopic=325

Одна из книг, на которую почти все ссылаются когда речь идет о геометрии в машинном зрении:

Multiple View Geometry in computer vision Авторы Richard Hartley и Andrew Zisserman

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Большое спасибо за ответы. Хотела использовать библиотеку OpenCV, я так понимаю мне подходит и AAMlibrary и ASMLibrary.

Тогда по вашему совету обращусь к ASMLibrary.

Извините, что так долго не отвечала, мне прям стыдно:((

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×