Cov txheej txheem:

Basic 3D Scanner rau Digital 3D Mapping: 5 Kauj Ruam
Basic 3D Scanner rau Digital 3D Mapping: 5 Kauj Ruam

Video: Basic 3D Scanner rau Digital 3D Mapping: 5 Kauj Ruam

Video: Basic 3D Scanner rau Digital 3D Mapping: 5 Kauj Ruam
Video: Introducing Meta Quest 3 | Coming This Fall 2024, Lub rau hli ntuj
Anonim
Basic 3D Scanner rau Digital 3D Mapping
Basic 3D Scanner rau Digital 3D Mapping

Hauv txoj haujlwm no, kuv yuav piav qhia thiab piav qhia lub hauv paus pib ntawm 3D luam theej duab thiab rov tsim kho dua tshiab feem ntau yog siv los tshuaj xyuas cov khoom me me ib nrab dav hlau, thiab nws cov haujlwm ua haujlwm tuaj yeem txuas ntxiv mus rau kev tshuaj xyuas thiab rov tsim dua tshiab uas tuaj yeem teeb tsa ntawm lub dav hlau tswj chaw taws teeb kom tau txais tus qauv 3D. ntawm qhov chaw uas lub dav hlau uas coj lawv los teeb yoov

Lub tswv yim kawg yog kom tau txais 3D luam theej duab ntawm qee qhov chaw lossis thaj chaw, nws sab nrauv lossis sab hauv, siv nws ua daim duab qhia duab (zoo li hauv zaj yeeb yaj kiab Prometeus)

Kauj ruam 1:

Duab
Duab

lub tswv yim yog txhawm rau txhim kho tag nrho 3d kev tshuaj xyuas kab ke ntawm lub dav hlau tswj chaw deb, txhawm rau txhawm rau digitize daim duab qhia chaw ntawm txhua qhov chaw uas nws ya hauv 3d, tab sis rau qhov no peb tau pib los ntawm kev pib ua haujlwm ntawm laser triangulation ntawm kev luam theej duab lossis rov tsim dua 3d los ntawm laser triangulation feem ntau suav nrog hla lub laser nqaj los ntawm prism uas tsim cov kab txaij laser kom tau txais tag nrho cov kab txaij laser uas yuav npaj rau lub hom phiaj kom tau luam theej duab, thiab ib zaug qhov projection laser no tau txais ntawm Los ntawm qhov chaw mus rau luam theej duab, cov duab yuav tsum tau ntes nrog qee yam ntawm lub koob yees duab thiab nyiam dua paub lub kaum sab xis uas tau tsim los nrog kev hwm rau qhov pom lub kaum ntse ntse ntawm cov kab laser tso tawm, txij li txhua qhov ntawm cov duab no ntes cov phiaj laser. Nyob rau saum npoo ntawm qhov khoom, lawv yuav tau npaj ua ntej txhawm rau rho tawm cov yam ntxwv ntawm qhov khoom uas yuav tsum tau luam theej duab, thiab tsuas yog luam theej tawm kab txaij los ntawm kab txaij saum cov khoom kom tau txais cov ntaub ntawv ntawm nws cov nplaim hauv ntu hla ntawm cov khoom, thiab tom qab ntawd ntes qhov phiaj xwm phiaj xwm ntawm ntu ntu ntu hauv qab no ntawm cov khoom, txhawm rau ntxiv txhua qhov phiaj xwm kab txaij ua ke Ua ntej txhua ntu hla ntawm obto peb tau txais kev tshuaj xyuas peb-seem ntawm nws qhov chaw

Kauj ruam 2:

Duab
Duab

Txij li thaum peb tau txheeb xyuas peb lub hom phiaj, cov kauj ruam tom ntej paub tias yuav tshem tawm koj yuav tsum xub muaj koj txhais taw khov kho hauv av, yog li peb tau pib hauv av nrog kev sim ua qauv ntawm kab tawm 3d tshuab luam ntawv, txhawm rau txheeb xyuas qhov ua haujlwm raug ntawm qhov yooj yim 3d scannerand raws li koj tuaj yeem pom hauv daim duab saum toj no, Kuv tau siv PC, OpenCV, Glut of OpenGL, lub vev xaib, lub tshuab luam ntawv, lub tshuab hluav taws xob laser, lub tshuab hluav taws xob ua liaj ua teb (hauv qhov no dhau los ntawm daim iav tig) ib qho hluav taws xob tso tawm qhov system (ua nrog txoj kev tsheb nqaj hlau) thiab cov txheej txheem muab rho tawm los ntawm lub tshuab luam ntawv qub) los ntawm lub hauv paus uas kuv tso cov khoom kom raug luam tawm, ntoo thiab yas thiab zoo li koj tuaj yeem pom hauv daim duab, ntawm lub khoos phis tawj: Kuv tswj tau tsim thiab tso tawm nrog Glut los ntawm OpenGL peb- cov qauv tsim rov ua dua tshiab raws li cov khoom siv tiag tiag (hauv qhov no yog kab laug sab qho khoom ua si)

yog li nws muaj ntau dua li pom tau tias txoj hauv kev ua haujlwm yog ua haujlwm tau zoo, thiab nrog nws cov kev hloov pauv thiab hloov pauv mus rau lub dav hlau nws yuav tuaj yeem luam theej thiab rov tsim dua daim duab qhia chaw 3d ntawm thaj chaw uas nws ya.

Tab sis cov kab ke no tsuas yog ua haujlwm kom tau txais 3D daim duab qhia chaw ntawm sab nrauv ntawm cov chaw nws ya hla ??? …

Kauj ruam 3:

Duab
Duab

kuas sab hauv ntawm lub qhov tsua thiab cov ciav hlau (ib yam li hauv Prometeus movie) Qhov kev ntsuas 3D no tseem ua haujlwm txhawm rau txhim kho cov qauv peb-seem ntawm sab hauv ntawm cov khoom loj thiab hollow xws li qhov tsua, vaj tse, qhov av, thiab lwm yam nws txoj hauv kev ua haujlwm yog zoo tib yam nkaus li tau piav qhia thiab uas yog cov hauv qab no:

  1. ntes cov yees duab ntawm txhua qhov kev kwv yees ntawm lub laser kab txaij rau saum npoo kom tau luam theej duab
  2. lim thiab tshem xim ntawm daim duab
  3. binarize cov xim nrog qhov pib duab zoo
  4. thov siv lub tshuab ntsuas ntug kom paub txog cov ntaub ntawv khaws tseg ntawm txhua qhov kev ua haujlwm laser hla ntu
  5. thiab siv segmentation xaiv cov ciam teb uas tsim nyog rau 3d tus sawv cev ntawm ntu ntu ntawm cov khoom uas yuav tsum tau luam theej thiab rov tsim dua ntawm daim duab qhia chaw virtual 3D
  6. tom qab ntawd cov theem no tsuas yog rov ua dua tshiab rau txhua qhov yees duab coj los ua ntu ntu ntawm cov kab txaij laser txuas ntxiv ua ntu zus los ntawm txhua ntu hauv ntu ntu.
  7. txheej los ntawm txheej ntawm cov sawv cev ntawm cov ntu ntu tau ntxiv ua tiav kom txog thaum tau txais cov ntsiab lus huab tsim los ntawm ntau qhov kev sawv cev ntawm ntu ntu ntawm cov khoom uas yuav tsum tau kos

Kauj ruam 4:

Duab
Duab

Tom qab ntawd kuv dhau cov phiaj xwm rau kev ua cov duab ntawm qhov kwv yees ntawm lub ntsej muag lub ntsej muag laser. thiab ntawm kev rov tsim dua tshiab virtual 3d ntawm cov kev sawv cev sib pauv hloov pauv no hauv cov qauv qhia peb-seem seem:

duab ua:

n

#include #include "cv.h" #include "highgui.h" #include // #suav nrog #include #include #include

char f = 0; char lub npe = {"0.jpg"}; int n = 0, s, x, y; CvScalar sp; NTAWV *NuPu;

void Writepoints () {char bufferx [33], buffery [33]; nws (x, bufferx, 10); itoa (y, buffery, 10); fprintf (NuPu, tsis) fprintf (NuPu, "\ t"); fprintf (NuPu, tsis zoo); fprintf (NuPu, "\ n"); }

void noteblockInit () {NuPu = fopen ("NuPu.txt", "w"); fseek (NuPu, 0, 0); fprintf (NuPu, "NP:"); fprintf (NuPu, "\ n"); }

int lub ntsiab () {char argstr [128]; noteblockInit (); cout << "Teklea! …:" f; npe [0] = f; coj <

IplImage* img0 = cvLoadImage ("00.jpg", 0); yog (f == '0') {rau (y = 1; yheight-2; y ++) {rau (x = 1; xwidth-2; x ++) {sp = cvGet2D (img0, y, x); yog (sp.val [0]> 50) {Cov ntawv sau (); n ++;}}}} lwm qhov {rau (y = 1; yheight-2; y ++) {rau (x = 1; xwidth-2; x ++) { sp = cvGet2D (img1, y, x); yog (sp.val [0]> 50) {Cov ntawv sau (); n ++;}}}} char tsis [33]; itoa (n, tsis, 10); fprintf (NuPu, "Fin:"); fprintf (NuPu, tsis); fprintf (NuPu, "\ n"); fclose (NuPu);

cvWaitKey (0); //_execlp("calc.exe "," calc.exe ", argstr, NULL); cvDestroyAllWindows (); cvReleaseImage (& duab); cvReleaseImage (& img); cvReleaseImage (& img0); cvReleaseImage (& img1); cvReleaseImage (& img2); rov 0; }

Kev tsim kho 3D:

#include //////////////////// #ifdef _APPLE_ #include #else #include #include #endif #include #include #include #include #include

#define violeta glColor3f (1, 0, 1) #define azul glColor3f (0, 0, 1) #define turkeza glColor3f (0, 1, 1) #define verde glColor3f (0, 1, 0) #define amarillo glColor3f (1, 1, 0) #define naranja glColor3f (1,.3, 0) #define rojo glColor3f (1, 0, 0) siv namespace std; int s, Boton = 1, Pulbut = 1; float mx = 0, my = 0, mtx = 0, mty = 0, mtz = -5.0; const int Avance = 1; hlua kab, Aux; tus cim Caracter = 'H'; NTAWV *NuPu; int NP, h, w; float G = 0, n = 0, cx [5000], cy [5000], x, y, ax, ay, az; int font = (int) GLUT_BITMAP_8_BY_13; daim ntawv lo zoo li qub [100]; char tsis [3]; GLfloat anguloCuboX = 0.0f; GLfloat anguloCuboY = 0.0f; GLfloat anguloEsfera = 0.0f; GLint ancho = 500; GLint alto = 500; int hazPerspectiva = 0; void reshape (int dav, int qhov siab) {glViewport (0, 0, dav, qhov siab); glMatrixMode (GL_PROJECTION); glLoadIdentity (); yog (hazPerspectiva) gluPerspective (23.0f, (GLfloat) dav/(GLfloat) qhov siab, 1.0f, 20.0f); lwm tus glOrtho (-1, 1, -1, 1, -10, 10); glMatrixMode (GL_MODELVIEW); ancho = dav; alto = qhov siab; } tsis muaj dab tsi Kolorear (int K) {ntab Hip; x = (cx [s] -320)/480; y = (cy [s] -240)/640; Hip = sqrt (pow (x, 2)+pow (y, 2)); yog ((Hip> = 0) && (Hip =.07) && (Hip =.14) && (Hip =.21) && (Hip =.28) && (Hip =.35) && (Hip =.42) && (Hip <=. 49)) {violeta;}} void drawNuPu (tsis muaj dab tsi) {glColor3f (1, 1, 1); glBegin (GL_LINES); glVertex3f (.2, 0, 0); glVertex3f (-. 2, 0, 0); glVertex3f (0,.2, 0); glVertex3f (0, -2, 0); glEnd (); rojo; glBegin (GL_POINTS); rau (n = 0; n <10; n ++) {rau (s = 0; s void setOrthographicProjection () {glMatrixMode (GL_PROJECTION); glPushMatrix (); glLoadIdentity (); gluOrtho2D (0, w, 0, h); glScalef (1, -1, 1); glTranslatef (0, -h, 0); glMatrixMode (GL_MODELVIEW);} void renderBitmapString (float x, float y, void *font, char *string) {char *c; glRasterPos2f (x, y); rau (c = hlua; *c! = '\ 0'; c ++) {glutBitmapCharacter (font, *c);}} void display () {// mx = 468; itoa (mx, tsis, 10); glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // glLoadIdentity (); glColor3f (1.0, 1.0, 1.0); glRasterPos2f (-1,.9); // glutBitmapString (GLUT_BITMAP_TIMES4),; s <3; s ++) {glutBitmapCharacter (GLUT_BITMAP_TIMES_ROMAN_24, tsis [s]);} glTranslatef (mty, -mtx, mtz); glRotatef (mx, 1.0f, 0.0f, 0.0f); glRotatef (kuv, 0.0f, 1.0f, 0.0f); drawNuPu (); /*glColor3f(1.0, 1.0, 1.0); glRasterPos2f (.5,.5); // glutBitmapString (GLUT_BITMAP_TIMES_ROMAN_24, "Nyob Zoo Text"); glutBitmapCharacter (GLUT_B ');* / /*glColor3f (1. 0f, 1.0f, 1.0f); setOrthographicProjection (); glPushMatrix (); glLoadIdentity (); renderBitmapString (30, 15, (void *) font, "GLUT Tutorial --- _ ------ _@ 3D Tech"); */ glFlush (); glutSwapBuffers (); anguloCuboX+= 0.1f; anguloCuboY+= 0.1f; anguloEsfera+= 0.2f; } void init () {glClearColor (0, 0, 0, 0); glEnable (GL_DEPTH_TEST); yog = 500; alto = 500; } tsis muaj dab tsi leer () {ifstream myfile ("A:/Respaldo sept 2016/D/Respaldos/Respaldo compu CICATA abril 2015/usb1/rekostruccion 3D en Especialidad CICATA/Software/Reconstruccion 3D/R3d_0 / bin/Debug/NuPu.txt"); yog (myfile.is_open ()) {s = 0; thaum (getline (myfile, kab)) {yog ((kab [0]! = 'N') && (kab [0]! = 'F')) {Aux = kab; kab [0] = 48; kab [1] = 48; kab [2] = 48; kab [3] = 48; cy [s] = atoi (line.c_str ()); Aux [4] = 48; Aux [5] = 48; Aux [6] = 48; // Aux [7] = 48; cx [s] = atoi (Aux.c_str ()); s ++; }} myfile.close (); } else cout <1780) NP = 1700; cout <tsis muaj dab tsi idle () {display (); } void keyboard (tsis tau kos npe tus yuam sij, int x, int y) {hloov (qhov tseem ceeb) {rooj plaub 'p': rooj plaub 'P': hazPerspectiva = 1; rov ua dua tshiab (ancho, alto); tawg; case 'o': case 'O': hazPerspectiva = 0; rov ua dua tshiab (ancho, alto); tawg; rooj plaub 27: // khiav tawm (0); tawg; }} void raton (int khawm, int xeev, int x, int y) { / * GLUT_LEFT_BUTTON 0 GLUT_MIDDLE_BUTTON 1 GLUT_RIGHT_BUTTON 2 GLUT_DOWN 0 GLUT_UP 1 * / Boton = khawm; Pulbut = xeev; // mx = y; zaub (); } void ratmov (int x, int y) {if ((Boton == 0) & (Pulbut == 0)) {mx = y; kuv = x; } yog ((Boton == 2) & (Pulbut == 0)) {mtx = (y/200) -1; mty = (x/200) -1; } yog ((Boton == 1) & (Pulbut == 0)) {mtz =-(y/40) -5; } tso saib (); } int main (int argc, char ** argv) { /*glutAddMenuEntry () glutAddSubMenu () glutAttachMenu () glutCreateMenu () glutSetMenu () glutStrokeCharacter () glutStrokeLength ()* / /*glReadPix thav duab tsis glGetPixelMapfv () rov qab qhia meej pixel daim duab qhia chaw glGetPixelMapuiv () rov qab qhia meej daim duab qhia chaw pixel glGetPointerv () Rov qab qhov chaw nyob ntawm tus taw qhia tshwj xeeb.*/ Init (); loj (); glutInit (& argc, argv); glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB); glutInitWindowPosition (50, 50); glutInitWindowSize (ancho, alto); glutCreateWindow ("Cubo 1"); pib (); glutDisplayFunc (zaub); glutReshapeFunc (hloov dua tshiab); glutIdleFunc (tsis ua haujlwm); glutMouseFunc (raton); glutMotionFunc (ratmov); glutKeyboardFunc (keyboard); glutMainLoop (); rov 0; }

Kauj ruam 5:

Duab
Duab

rau lub sijhawm kuv yuav tsum tsum! … tab sis hauv tshooj lus txuas ntxiv kuv cog lus rau koj tias kuv yuav siv nws ntawm kuv tus raspberry pi 3 lossis kuv lub dav hlau jetson nanoboard, twb tau teeb tsa ntawm qee lub dav hlau tswj chaw taws teeb, lossis ntawm qee tus neeg hlau kab laug sab txhawm rau tshuaj xyuas sab hauv ntawm lub qhov tsua.

Pom zoo: