Jump to content
Compvision.ru
Sign in to follow this  
alex

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

Recommended Posts

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

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

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

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

Share this post


Link to post
Share on other sites
Здравствуйте.

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

Мне хотя бы понять, можно ли мою задачу решить средствами 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 - коэфф. дисторсии

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

Share this post


Link to post
Share on other sites

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

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

  • Like 1

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

Подключил исходники 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]

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

Здесь есть информация по 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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

  • Like 1

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×