Ще стартирам проект; да реконструирам стаята си с kinect.
В какъв формат ще бъде записан 3D реконструираният изглед?
може ли да се запази или конвертира в 3dm, 3ds, max, obj и т.н.?
Благодаря!
Ще стартирам проект; да реконструирам стаята си с kinect.
В какъв формат ще бъде записан 3D реконструираният изглед?
може ли да се запази или конвертира в 3dm, 3ds, max, obj и т.н.?
Благодаря!
Можете лесно да запазите 3d координати във PLY формат. Ето основен пример за използване на ofxKinect:
void exportPlyCloud(string filename, ofMesh& cloud) {
ofFile ply;
if (ply.open(filename, ofFile::WriteOnly)) {
// write the header
ply << "ply" << endl;
ply << "format binary_little_endian 1.0" << endl;
ply << "element vertex " << cloud.getVertices().size() << endl;
ply << "property float x" << endl;
ply << "property float y" << endl;
ply << "property float z" << endl;
ply << "end_header" << endl;
// write all the vertices
vector<ofVec3f>& surface = cloud.getVertices();
for(int i = 0; i < surface.size(); i++) {
if (surface[i].z != 0) {
// write the raw data as if it were a stream of bytes
ply.write((char*) &surface[i], sizeof(ofVec3f));
}
}
}
}
След това можете да използвате MeshLab за обработка/сглобяване на PLY файлове и след това да ги експортирате в друг формат като OBJ. Свързани с openFrameworks, можете да намерите няколко удобни примера, включително горния PLY експорт в този работилница.
Запазването в PLY ще реши част от проблема и ще трябва да зашиете ръчно, което може да отнеме много време. Ще ви трябва нещо като SLAM (едновременна локализация и картографиране) или други алгоритми за реконструкция, които да помогнат за свързването на нещата. Можете да намерите хубава колекция от алгоритъм на OpenSLAM.
Сега в зависимост от вашето ниво на комфорт с кодирането има няколко опции, които да ви помогнат с това. Също така препоръчвам да разгледате вградения софтуер RGBDemo, който има функция за реконструкция. Това не изисква кодиране, освен ако не искате (тъй като е с отворен код).
С малко кодиране можете също да направите реконструкция с помощта на PointCloudsLibrary(PCL). Ако включва и имплементация на KinectFusion
Ако използвате Microsoft Kinect SDK, Kinect Fusion е интегриран в Kinect SDK 1.7
Може също да намерите тази публикация за интересна: Kinect Fusion в AutoCAD.
Kinect ви дава изображение с дълбочина. Това е изображение с различни нюанси на сивото, за да покаже колко далеч е нещо от сензора.
Всеки пиксел в изображението използва 16 или 13 бита за стойност на дълбочината (когато се използват само 13 бита, последните 3 бита са използва се за ID на играча).
Можете просто да запазите изображението като .bmp например... или да го конвертирате във всеки друг формат, който ви харесва повече.
Не съм напълно сигурен как искате да реконструирате стаята си.
Kinect не може да улови цялата стая наведнъж, така че ще трябва поне да завъртите kinect, за да заснемете цялата стая.
Каква реконструкция искате да постигнете? Дали това е само изображение в сива скала или искате разстояния до стени и обекти, както и техните размери?
Ако е второто, трябва да обработите изображенията.
Ако е първото, можете просто да залепите единичните снимки заедно, за да образуват или панорама, или куб, каквото искате.
Надявам се, че можете да извлечете полезна информация. Чувствайте се свободни да питате за несигурности.