ዝርዝር ሁኔታ:

ለዲጂታል 3 ዲ ካርታ መሰረታዊ 3 ዲ ስካነር 5 ደረጃዎች
ለዲጂታል 3 ዲ ካርታ መሰረታዊ 3 ዲ ስካነር 5 ደረጃዎች

ቪዲዮ: ለዲጂታል 3 ዲ ካርታ መሰረታዊ 3 ዲ ስካነር 5 ደረጃዎች

ቪዲዮ: ለዲጂታል 3 ዲ ካርታ መሰረታዊ 3 ዲ ስካነር 5 ደረጃዎች
ቪዲዮ: የ 3 የ 6 የ 9 የዩኒቨርስ ቁልፍ ምስጢራዊ የቴስላ ኮድና ኢትዮጵያ 2024, መስከረም
Anonim
ለዲጂታል 3 ዲ ካርታ መሰረታዊ 3 ዲ ስካነር
ለዲጂታል 3 ዲ ካርታ መሰረታዊ 3 ዲ ስካነር

በዚህ ፕሮጀክት ውስጥ የ 3 ዲ ፍተሻ እና የመልሶ ግንባታ መሰረታዊ መሠረቶችን በአነስተኛ ከፊል አውሮፕላኖች ቅኝት ላይ የተተገበረውን እና የርቀት መቆጣጠሪያ አውሮፕላኖችን ለማግኘት ወደ መቃኘት እና የመልሶ ግንባታ ስርዓቶች ሊዘረጋ የሚችልበትን እና የሠራተኛውን መሰረታዊ መሠረት እገልጻለሁ እና እገልጻለሁ። 3 ዲ አምሳያ። የሚወስዳቸው አውሮፕላን የሚበርባቸው ቦታዎች

የመጨረሻው ሀሳብ እንደ አንድ ዲጂታል ካርታ (እንደ ፕሮቴተየስ ፊልም) እንደ አንድ ዲጂታል ካርታ ለመጠቀም የአንዳንድ ቦታ ወይም አካባቢ ፣ ውጫዊም ሆነ ውስጣዊ የ 3 ዲ ቅኝት ማግኘት ነው።

ደረጃ 1

ምስል
ምስል

ሀሳቡ በ 3 ዲ ውስጥ የሚበርበትን የትኛውም ቦታ ምናባዊ ካርታ ዲጂታል ለማድረግ መላውን የ 3 ዲ ፍተሻ ስርዓት በርቀት ቁጥጥር በሚደረግ አውሮፕላን ላይ መጫን ነው ፣ ግን ለዚህ እኛ የጨረር ሶስት አቅጣጫዊ አሠራሩ ሥራ ከመጀመር ጀምሮ ጀምረናል። በጨረር (triangulation) መቃኘት ወይም 3 ዲ መልሶ ማቋቋም በመሠረቱ አንድ ነገር ሊቃኝ በሚችል ነገር ላይ የታቀደውን ሙሉውን የሌዘር ጭረት ለማግኘት የጨረር ጨረር በሚያመነጭ የፕሪዝም ውስጥ የሌዘር ጨረርን ማለፍን ያጠቃልላል ፣ እና ይህ የጨረር ትንበያ ከተገኘ በኋላ የወለል ንጣፍ ከቦታው ለመቃኘት ሥዕሉ በአንዳንድ የካሜራ ዓይነቶች ተይዞ ከተለቀቀው የሌዘር ጭረት ትንበያ ማእዘን አንፃር የተሠራውን አንግል ማወቅ ቢቻል ፣ ምክንያቱም እነዚህ ምስሎች እያንዳንዳቸው የታቀዱትን የሌዘር ጭረቶች ይይዛሉ። በእቃው ገጽ ላይ ፣ የሚቃኘውን የነገር ልኬት ባህሪያትን ለማውጣት ቀድመው ይዘጋጃሉ ፣ እና በእቃው ተሻጋሪው ክፍል ውስጥ የወለልውን መገለጫ ለማግኘት ከእቃው በላይ ያለውን ንጣፍ በቀላሉ በመቃኘት እና በመቀጠል ይያዙ የነገሩን ቀጣይ መስቀለኛ ክፍል የታቀደውን ንጣፍ ፣ ሁሉንም የታቀዱትን ጭረቶች አንድ ላይ ለማከል ፣ ከኦቶ ሁሉም መስቀለኛ ክፍሎች በፊት የፊቱ ገጽታ ባለ ሶስት አቅጣጫዊ ቅኝት እናገኛለን

ደረጃ 2

ምስል
ምስል

እኛ ዓላማችንን ስላወቅን ፣ ለመነሳት ቀጣዩ ደረጃ መጀመሪያ እግሮችዎን መሬት ላይ አጥብቀው መያዝ አለብዎት ፣ ስለሆነም የመሠረታዊውን ትክክለኛ አሠራር ለማረጋገጥ በመስመር 3 ዲ ስካነር የሙከራ ፕሮቶኮል መሬት ላይ ጀመርን። ከላይ በምስሉ ላይ እንደሚመለከቱት የ 3 ዲ ቅኝት ፣ እኔ ፒሲ ፣ OpenCV ፣ Glut of OpenGL ፣ የድር ካሜራ ፣ ሌዘር ፣ የሌዘር እርሻ ጀነሬተር (በዚህ ሁኔታ በማዞሪያ መስታወት በኩል) የኤሌክትሮኒክ መስመራዊ የመፈናቀል ስርዓት (በባቡር የተሠራ) እና ከአሮጌ አታሚ የተወሰደ ስርዓት) ዕቃዎቹ እንዲቃኙ ፣ ከእንጨት እና ከፕላስቲን እና በፎቶው ላይ እንደሚመለከቱት በኮምፒዩተር ላይ ካስቀመጥኩበት መሠረት ላይ- እኔ ከ OpenGL ሶስት ላይ ከግሉት ለማመንጨት እና ለማሳየት ችዬ ነበር- በተቃኘው እውነተኛ ነገር ላይ በመመስረት የመጠን ልኬት (በዚህ ሁኔታ አሻንጉሊት ሸረሪት)

ስለዚህ የአሠራር መርሆው ተግባራዊ መሆኑን እና ከበረራ ስርዓቱ ጋር በሚስማሙበት እና በሚላመድበት ጊዜ የሚበርበትን አካባቢ 3 ዲ ካርታ መቃኘት እና ማባዛት የበለጠ ግልፅ ነው።

ግን ይህ ስርዓት የሚበርሩባቸውን ቦታዎች ውጫዊ ገጽታን 3 ዲ ካርታዎችን ለማግኘት ብቻ ያገለግላል ???…

ደረጃ 3

ምስል
ምስል

የዋሻዎችን እና የቧንቧዎችን ውስጣዊ ገጽታ (ልክ እንደ ፕሮቴስየስ ፊልም ውስጥ) ይህ 3-ልኬት አሰሳ ስርዓት እንዲሁ እንደ ዋሻዎች ፣ ህንፃዎች ፣ ዋሻዎች ፣ ወዘተ ያሉ ትላልቅ እና ክፍት ያልሆኑ ነገሮች የውስጥ ገጽታ ባለ ሶስት አቅጣጫዊ ሞዴሎችን እንደገና ለመገንባት ያገለግላል። በትክክል ከተገለፀው እና በመሠረቱ የሚከተሉትን ያጠቃልላል

  1. ለመቃኘት በላዩ ላይ ያለውን የሌዘር ጭረት የእያንዳንዱን ትንበያ ፎቶ ያንሱ
  2. ከምስል ያጣሩ እና ያስወግዱ
  3. ከተለዋዋጭ የምስል ደፍ ጋር ቀለሙን ሁለትዮሽ ያድርጉት
  4. የእያንዳንዱን የሌዘር ትንበያ መስቀለኛ ክፍል የተያዘውን መገለጫ ለመለየት የጠርዝ መመርመሪያን ይተግብሩ
  5. እና ምናባዊ 3 ዲ ካርታ ላይ እንዲቃኝ እና እንደገና እንዲገነባ የእቃው መስቀለኛ ክፍል 3 ዲ ውክልና ተገቢውን ድንበር ይምረጡ።
  6. ከዚያ እነዚህ እርምጃዎች በእያንዳንዱ ንዑስ ክፍል ያለማቋረጥ በሚገመቱት በሌዘር ጭረቶች ንዑስ መንገድ ለተነሱት እያንዳንዱ ፎቶ በቀላሉ ይደጋገማሉ።
  7. በካርታው ላይ ባለው ብዙ የመስቀለኛ ክፍል ተወካዮች የተቋቋመ የነጥብ ደመና እስኪያገኝ ድረስ በመስቀል ክፍሎች ውክልና ንብርብር በተከታታይ ይታከላል።

ደረጃ 4

ምስል
ምስል

ከዚያ ላዩን የሌዘር ቁርጥራጮችን ግምቶች ለምስል ማቀነባበሪያ ፕሮግራሞችን አቀርባለሁ። እና በተንሰራፋው ባለ ሶስት አቅጣጫዊ የካርታ አምሳያ ውስጥ የእነዚህ አነቃቂ ተሻጋሪ ውክልናዎች ምናባዊ 3 ዲ መልሶ ግንባታ

የምስል ሂደት;

n

#አካትት #አካትት "cv.h" #አካትት "highgui.h" #አካታች // #ያካትታሉ #አካትት #አካትት

ቻር f = 0; የቻር ስም = {"0.jpg"}; int n = 0 ፣ s ፣ x ፣ y; CvScalar sp; FILE *NuPu;

ባዶ የጽሑፍ ነጥቦች () {ቻር ቡፌክስ [33] ፣ ቋት [33] ፤ ኢዮዋ (x ፣ bufferx ፣ 10); ኢዮዋ (y ፣ buffery ፣ 10); fprintf (NuPu ፣ bufferx); fprintf (NuPu ፣ “\ t”); fprintf (NuPu ፣ buffery); fprintf (NuPu ፣ “\ n”) ፤ }

ባዶ ማስታወሻ ደብተር () {NuPu = fopen («NuPu.txt» ፣ «w»)) fseek (ኑP ፣ 0 ፣ 0); fprintf (NuPu ፣ “NP:”) ፤ fprintf (NuPu ፣ “\ n”) ፤ }

int main () {char argstr [128]; noteblockInit (); cout << "ተክለያ!…:" f; ስም [0] = ረ; ኩት <

IplImage* img0 = cvLoadImage ("00.jpg", 0); (f == '0') {ለ (y = 1; yheight-2; y ++) {ለ (x = 1; xwidth-2; x ++) {sp = cvGet2D (img0, y, x); ከሆነ (sp.val [0]> 50) {Writepoints () ፤ n ++;}}}} ሌላ {ለ (y = 1; yheight-2; y ++) {ለ (x = 1 ፣ xwidth-2 ፣ x ++) { sp = cvGet2D (img1 ፣ y ፣ x); ከሆነ (sp.val [0]> 50) {Writepoints () ፤ n ++;}}}} ቻር ቋት [33]; ኢዮዋ (n ፣ ቋት ፣ 10); fprintf (NuPu ፣ “Fin:”); fprintf (NuPu ፣ ቋት); fprintf (NuPu ፣ “\ n”) ፤ fclose (NuPu);

cvWaitKey (0); //_execlp ("calc.exe "," calc.exe ", argstr, NULL); cvDestroyAllWindows (); cvReleaseImage (& ምስል); cvReleaseImage (& img); cvReleaseImage (& img0); cvReleaseImage (& img1); cvReleaseImage (& img2); መመለስ 0; }

3 ዲ መልሶ ግንባታ;

#አካት //////////////////////// #ifdef _APPLE_ #ይካተቱ #ሌላ #ይካተቱ

#define violeta glColor3f (1, 0, 1) #defiine 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) የስም ቦታ STD ን በመጠቀም ፤ int s ፣ Boton = 1 ፣ Pulbut = 1; ተንሳፋፊ mx = 0 ፣ የእኔ = 0 ፣ mtx = 0 ፣ mty = 0 ፣ mtz = -5.0; const int Avance = 1; ሕብረቁምፊ መስመር ፣ ኦክስ; ቻር ካራክተር = 'ኤች'; FILE *NuPu; int NP ፣ h ፣ w; ተንሳፋፊ G = 0 ፣ n = 0 ፣ cx [5000] ፣ cy [5000] ፣ x ፣ y ፣ ax ፣ ay ፣ az; int ቅርጸ -ቁምፊ = (int) GLUT_BITMAP_8_BY_13; የማይንቀሳቀስ ቻር መለያ [100]; የቻር ቋት [3]; GLfloat anguloCuboX = 0.0f; GLfloat anguloCuboY = 0.0f; GLfloat anguloEsfera = 0.0f; GLint ancho = 500; GLint alto = 500; int hazPerspectiva = 0; ባዶነት ቅርፅ (int ስፋት ፣ int ቁመት) {glViewport (0 ፣ 0 ፣ ስፋት ፣ ቁመት); glMatrixMode (GL_PROJECTION); glLoadIdentity (); (hazPerspectiva) gluPerspective (23.0f ፣ (GLfloat) ስፋት/(GLfloat) ቁመት ፣ 1.0f ፣ 20.0f) ከሆነ። ሌላ glOrtho (-1 ፣ 1 ፣ -1 ፣ 1 ፣ -10 ፣ 10); glMatrixMode (GL_MODELVIEW); መልህቅ = ስፋት; አልቶ = ቁመት; } ባዶነት Kolorear (int K) {ሂፕ ተንሳፈፈ; x = (cx [s] -320)/480; y = (cy [s] -240)/640; ሂፕ = ስኩዌር (ዱቄት (x ፣ 2)+ዱቄት (y ፣ 2)); ከሆነ ((ሂፕ> = 0) && (ሂፕ =.07) && (ሂፕ =.14) && (ሂፕ =.21) && (ሂፕ =.28) && (ሂፕ =.35) && (ሂፕ =.42) && (ሂፕ <=. 49)) {violeta;}} ባዶ DraNuPu (ባዶ) {glColor3f (1, 1, 1); glBegin (GL_LINES); glVertex3f (.2, 0, 0); glVertex3f (-. 2, 0, 0); glVertex3f (0,.2, 0); glVertex3f (0 ፣ -2 ፣ 0); glEnd (); ሮጆ; glBegin (GL_POINTS); ለ (n = 0; n <10; n ++) {ለ (s = 0; s ባዶ setOrthographicProjection () {glMatrixMode (GL_PROJECTION); glPushMatrix (); glLoadIdentity (); gluOrtho2D (0, w, 0, h); glScalef (1 ፣ -1 ፣ 1) ፤ glTranslatef (0 ፣ -h ፣ 0) ፤ glMatrixMode (GL_MODELVIEW) ፤} ባዶ መስጠት ቢትማፕ ስትሪንግ (ተንሳፋፊ x ፣ ተንሳፋፊ y ፣ ባዶ *ቅርጸ -ቁምፊ ፣ ቻር *ሕብረቁምፊ) {char *c; glRasterPos2f (x ፣ y) ፤ ለ (c = string; *c! = '\ 0'; c ++) {glutBitmapCharacter (font, *c);}} ባዶ ማሳያ () {// mx = 468; itoa (mx, buffer, 10);; s <3; s ++) {glutBitmapCharacter (GLUT_BITMAP_TIMES_ROMAN_24 ፣ ቋት [ዎች]);} glTranslatef (mty, -mtx, mtz); glRotatef (mx, 1.0f, 0.0f, 0.0f); glRotatef (የእኔ ፣ 0.0f ፣ 1.0f, 0.0f); drawNuPu (); /*glColor3f(1.0, 1.0, 1.0); glRasterPos2f (.5,.5); // glutBitmapString (GLUT_BITMAP_TIMES_ROMAN_24 ፣ “ጤና ይስጥልኝ ጽሑፍ”); glutBitmapCharacter (GLU_B);* / /*glColor3f (1. 0f ፣ 1.0f ፣ 1.0f); setOrthographicProjection (); glPushMatrix (); glLoadIdentity (); የ BitmapString (30 ፣ 15 ፣ (ባዶ *) ቅርጸ-ቁምፊ ፣ “GLUT አጋዥ --- ---_ ------ _@ 3D ቴክ”); */ glFlush (); glutSwapBuffers (); anguloCuboX+= 0.1f; anguloCuboY+= 0.1f; anguloEsfera+= 0.2f; } ባዶ ባዶ () {glClearColor (0, 0, 0, 0); glEnable (GL_DEPTH_TEST) ፤ መልህቅ = 500; አልቶ = 500; } ባዶነት 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")); ከሆነ (myfile.is_open ()) {s = 0; ሳለ (getline (myfile ፣ line)) {if ((line [0]! = 'N') && (line [0]! = 'F'))) {Aux = line; መስመር [0] = 48; መስመር [1] = 48; መስመር [2] = 48; መስመር [3] = 48; cy [s] = atoi (line.c_str ()); ኦክስ [4] = 48; ኦክስ [5] = 48; ኦክስ [6] = 48; // ኦክስ [7] = 48; cx [s] = atoi (Aux.c_str ()); s ++; }} myfile.close (); } ሌላ cout <1780) NP = 1700; ኮት <ባዶ ባዶ ፈት () {ማሳያ (); } ባዶ ቁልፍ ሰሌዳ (ያልተፈረመ ቻር ቁልፍ ፣ int x ፣ int y) {ማብሪያ (ቁልፍ) {case 'p': case 'P': hazPerspectiva = 1; ዳግም ቅርፅ (መልህቅ ፣ አልቶ); ሰበር; case 'o': case 'O': hazPerspectiva = 0; ዳግም ቅርፅ (መልህቅ ፣ አልቶ); ሰበር; ጉዳይ 27: // ማምለጫ መውጫ (0); ሰበር; }} ባዶ ባዶ ራቶን (int አዝራር ፣ int state ፣ int x ፣ int y) { / * GLUT_LEFT_BUTTON 0 GLUT_MIDDLE_BUTTON 1 GLUT_RIGHT_BUTTON 2 GLUT_DOWN 0 GLUT_UP 1 * / Boton = button; Ulልቡት = ግዛት; // mx = y; ማሳያ (); } ባዶ ባዶ ራትሞቭ (int x ፣ int y) {if ((Boton == 0) & (Pulbut == 0)) {mx = y; የእኔ = x; } ከሆነ ((Boton == 2) & (Pulbut == 0)) {mtx = (y/200) -1; mty = (x/200) -1; } ከሆነ ((Boton == 1) & (Pulbut == 0)) {mtz =-(y/40) -5; } ማሳያ (); } int main (int argc ፣ char ** argv) { /*glutAddMenuEntry () glutAddSubMenu () glutAttachMenu () glutCreateMenu () glutSetMenu () glutStrokeCharacter () glutStrokeLength ()* / /*glReadPixels () አንድ የፒክሴሎች እገዳ ያንብቡ። የክፈፍ ቋት glGetPixelMapfv () የተገለጸውን የፒክሰል ካርታ መመለስ glGetPixelMapuiv () የተገለጸውን የፒክሰል ካርታ glGetPointerv () የተገለጸውን ጠቋሚ አድራሻ ይመልሳል።*/ Init (); leer (); glutInit (& argc ፣ argv); glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB); glutInitWindowPosition (50 ፣ 50); glutInitWindowSize (መልህቅ ፣ አልቶ); glutCreateWindow ("ኩቦ 1"); በ ዉስጥ(); glutDisplayFunc (ማሳያ); glutReshapeFunc (ዳግም ቅርፅ); glutIdleFunc (ስራ ፈት); glutMouseFunc (raton); glutMotionFunc (ratmov); glutKeyboardFunc (የቁልፍ ሰሌዳ); glutMainLoop (); መመለስ 0; }

ደረጃ 5

ምስል
ምስል

ለጊዜው ማቆም አለብኝ! … ግን በሚቀጥለው ምዕራፍ ውስጥ ቀድሞውኑ በአንዳንድ የርቀት መቆጣጠሪያ አውሮፕላን ላይ በተጫነ ወይም በአንዳንድ የሸረሪት ሮቦቶች ላይ የዋሻዎችን የውስጥ ክፍል ለመቃኘት በራሴ እንጆሪ ፓይ 3 ወይም በጄትሰን ናኖቦርድ ላይ እንደምተገብረው ቃል እገባለሁ።

የሚመከር: