45 MTC( Cameras_AttachAvailableCameras(calibrationDir) );
46 if (Cameras_Count() < 1)
48 printf(
"No camera found!\n");
55 MTC(Cameras_HistogramEqualizeImagesSet(
true));
56 MTC( Cameras_ItemGet(0, &CurrCamera) );
60 MTC( Markers_LoadTemplates(markerDir) );
61 printf(
"Loaded %d marker templates\n",Markers_TemplatesCount());
64 for (
int i=0; i<20; i++)
66 MTC( Cameras_GrabFrame(0) );
67 MTC( Markers_ProcessFrame(0) );
71 IdentifiedMarkers = Collection_New();
72 PoseXf = Xform3D_New();
87 printf(
" Error while connecting MicronTracker!\n -------------------------------");
119 std::vector<claronToolHandle> returnValue;
125 MTC( Markers_IdentifiedMarkersGet(0, IdentifiedMarkers) );
128 for (
int j=1; j<=Collection_Count(IdentifiedMarkers); j++)
132 mtHandle Marker = Collection_Int(IdentifiedMarkers, j);
133 returnValue.push_back(Marker);
146 std::vector<double> returnValue;
153 MTC( Marker_Marker2CameraXfGet (c, CurrCamera, m2c, &IdentifyingCamera) );
155 MTC( Marker_Tooltip2MarkerXfGet (c, t2m ));
157 MTC(Xform3D_Concatenate(t2m,m2c,t2c));
160 MTC( Xform3D_ShiftGet(t2c, Position) );
164 returnValue.push_back(-Position[0]);
165 returnValue.push_back(-Position[1]);
166 returnValue.push_back(Position[2]);
173 std::vector<double> returnValue;
175 MTC( Marker_Marker2CameraXfGet (c, CurrCamera, PoseXf, &IdentifyingCamera) );
176 MTC( Xform3D_ShiftGet(PoseXf, Position) );
180 returnValue.push_back(-Position[0]);
181 returnValue.push_back(-Position[1]);
182 returnValue.push_back(Position[2]);
190 std::vector<double> returnValue;
197 MTC( Marker_Marker2CameraXfGet (c, CurrCamera, m2c, &IdentifyingCamera) );
199 MTC( Marker_Tooltip2MarkerXfGet (c, t2m ));
201 MTC(Xform3D_Concatenate(t2m,m2c,t2c));
204 double Quarternions[4];
205 MTC( Xform3D_RotQuaternionsGet(t2c, Quarternions) );
206 mitk::Quaternion claronQuaternion;
209 claronQuaternion[3] = Quarternions[0];
210 claronQuaternion[0] = Quarternions[1];
211 claronQuaternion[1] = Quarternions[2];
212 claronQuaternion[2] = Quarternions[3];
216 mitk::Quaternion minusNinetyDegreeY;
217 minusNinetyDegreeY[3] = sqrt(2.0)/2.0;
218 minusNinetyDegreeY[0] = 0;
219 minusNinetyDegreeY[1] = -1.0/(sqrt(2.0));
220 minusNinetyDegreeY[2] = 0;
223 mitk::Quaternion erg = (minusNinetyDegreeY*claronQuaternion);
225 returnValue.push_back(erg[3]);
226 returnValue.push_back(erg[0]);
227 returnValue.push_back(erg[1]);
228 returnValue.push_back(erg[2]);
235 std::vector<double> returnValue;
237 double Quarternions[4];
238 MTC( Marker_Marker2CameraXfGet (c, CurrCamera, PoseXf, &IdentifyingCamera) );
239 MTC( Xform3D_RotQuaternionsGet(PoseXf, Quarternions) );
242 mitk::Quaternion claronQuaternion;
245 claronQuaternion[3] = Quarternions[0];
246 claronQuaternion[0] = Quarternions[1];
247 claronQuaternion[1] = Quarternions[2];
248 claronQuaternion[2] = Quarternions[3];
252 mitk::Quaternion minusNinetyDegreeY;
253 minusNinetyDegreeY[3] = sqrt(2.0)/2.0;
254 minusNinetyDegreeY[0] = 0;
255 minusNinetyDegreeY[1] = -1.0/(sqrt(2.0));
256 minusNinetyDegreeY[2] = 0;
259 mitk::Quaternion erg = (minusNinetyDegreeY*claronQuaternion);
261 returnValue.push_back(erg[3]);
262 returnValue.push_back(erg[0]);
263 returnValue.push_back(erg[1]);
264 returnValue.push_back(erg[2]);