HiWiFeng

Chair for Computer Aided Medical Procedures & Augmented Reality
Lehrstuhl für Informatikanwendungen in der Medizin & Augmented Reality

THIS WEBPAGE IS DEPRECATED - please visit our new website

HiWiFeng

Marker-Target Evaluation Tool

wip.gif download: Viewer_exe_Win32.zip UPDATED (2006-08-09)!

  Deadline Issue Comment
GO 2006-05-19 Hintergrundfarbe konfigurierbar machen  
GO updated Current Binary für Windows/Linux zum download TIP Hinweise um die statisch gelinkte Programmdatei kleiner zu kriegen evtl hier.
GO 2006-08-08 Visualisierung: Achse für Rotationsfehler von Zentrum weg orientieren TIP erste Achse zeigt von Centroid zum Point of Interest (tip). Done!
GO 2006-08-09 Visualisierung: andere 2 Achsen für Rotationsfehler von Zentrum weg orientieren 2 cones can be shown, but they swap sometimes. TODO: fix it, or find another way to visualize the 2 cones.
HOLD - "online"-modus  
HOLD - beliebiges bild (jpeg) als hintergrund laden um die fehlervisualisierung als (manuellen) overlay über den marker zeigen zu können load: done! TODO: image stays still in background
GO 2006-05-28 Bug: Absturz beim Laden eines neuen Targets Fixed!
GO 2006-05-24 Option "Show/Hide Coordinate System" einfügen Done!

Augmented Reality Accuracy Visualization

  Deadline Issue Comment
GO - !!OpenGL Fenster mit Kamerabild im Hintergrund  
GO - Online-Anzeige des Markertargets + Kovarianzen  
GO - Kalibrierung Kamerabild  
GO - Berechnung der 3D Kovarianzen ALERT! hier aufpassen dass die berechnung der kovarianzen und die visualisierung in unterschiedlichen klassen geschieht, weil der berechnungsteil auch in anderen projekten wiederverwendet werden soll

Code

OpenGL mit kamera im Hintergrund

Anfang der weitergeleiteten E-Mail:

Von: "Daniel Pustka" 
Datum: 18. Mai 2006 11:26:33 MESZ
An: "'Martin Bauer'" 
Betreff: GL-Code

Hier der OpenGL-Code, um ein OpenCV-Bild anzuzeigen:

MT_Err MTMarkerTracker::DrawImageGL(const IplImage *pImage)
{
   MT_CHECK_INITIALIZED(DrawImageGL);

   if (pImage == NULL){
      SetLastError("NULL pImage pointer passed as argument");
      return MT_Fail;
   }
   if (pImage->imageData == NULL){
      SetLastError("Image with invalid data passed as argument");
      return MT_Fail;
   }

   // get image size
   CvSize size = cvGetSize(pImage);
   
   // get viewport size
   GLint nViewport[ 4 ];
   glGetIntegerv( GL_VIEWPORT, nViewport );

   glMatrixMode(GL_PROJECTION);

   glPushMatrix();
   glLoadIdentity();
   gluOrtho2D(-1, 1, -1, 1);
   glRasterPos3f(-1, -1, -0.99);
   glPixelZoom( static_cast( nViewport[ 2 ] ) / size.width,
static_cast( nViewport[ 3 ] ) / size.height );
   glDrawPixels(size.width, size.height, GL_BGR_EXT, GL_UNSIGNED_BYTE, 
      pImage->imageData);
   glPopMatrix();

   return MT_Success;
}


Von: "Martin Groher" 
Datum: 18. Mai 2006 11:07:00 MESZ
An: "'Martin Bauer'" 
Betreff: Hintergrundtextur


//initial:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glViewport(0,0,w(),h());
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0,1.0,0.0,1.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClearColor(0.0, 0.0, 0.0, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

//load image into m_buffer (unsigned char *m_buffer)
//IMPORTANT: height and width must be of power 2!!
//...

//load image into texture memory
glTexImage2D(GL_TEXTURE_2D, 
                0, 
                GL_LUMINANCE, 
                nx,
                ny, 
                0, 
                GL_LUMINANCE, 
                GL_UNSIGNED_BYTE, 
                m_buffer);

//draw texture
glEnable(GL_TEXTURE_2D);
      glBegin(GL_QUADS);
         glTexCoord2f(0.0,0.0);   //bottom left
         glVertex2f(0.0,0.0);
         glTexCoord2f(1.0,0.0);   //bottom right
         glVertex2f(1.0,0.0);
         glTexCoord2f(1.0,1.0);   //top right
         glVertex2f(1.0,1.0);
         glTexCoord2f(0.0,1.0);   //top left
         glVertex2f(0.0,1.0);
      glEnd();
glDisable(GL_TEXTURE_2D);

//now, change    GL_PROJECTION:
glMatrixMode(GL_PROJECTION);
//use for instance gluPerspective, glFrustum, etc...now
//...

//draw 3D foreground scene
//...


====================================
Martin Groher
Chair for Computer Aided Medical Procedures
fon: +49 89 289 17071
fax: +49 89 289 17059

Online-Modus: Einlesen von A.R.T. Trackingdaten

check out  svn+ssh://$USER@svnnavab.informatik.tu-muenchen.de:/svn/svn/trunk/src/CAMPAR/src/CAMPAR/Tracking/NetTrackerDevice.cpp



Edit | Attach | Refresh | Diffs | More | Revision r1.19 - 08 Oct 2006 - 18:08 - XinxingFeng