00001 /* +---------------------------------------------------------------------------+ 00002 | The Mobile Robot Programming Toolkit (MRPT) C++ library | 00003 | | 00004 | http://mrpt.sourceforge.net/ | 00005 | | 00006 | Copyright (C) 2005-2010 University of Malaga | 00007 | | 00008 | This software was written by the Machine Perception and Intelligent | 00009 | Robotics Lab, University of Malaga (Spain). | 00010 | Contact: Jose-Luis Blanco <jlblanco@ctima.uma.es> | 00011 | | 00012 | This file is part of the MRPT project. | 00013 | | 00014 | MRPT is free software: you can redistribute it and/or modify | 00015 | it under the terms of the GNU General Public License as published by | 00016 | the Free Software Foundation, either version 3 of the License, or | 00017 | (at your option) any later version. | 00018 | | 00019 | MRPT is distributed in the hope that it will be useful, | 00020 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 00021 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 00022 | GNU General Public License for more details. | 00023 | | 00024 | You should have received a copy of the GNU General Public License | 00025 | along with MRPT. If not, see <http://www.gnu.org/licenses/>. | 00026 | | 00027 +---------------------------------------------------------------------------+ */ 00028 00029 #ifndef mrpt_vision_utils_H 00030 #define mrpt_vision_utils_H 00031 00032 #include <mrpt/vision/CFeature.h> 00033 #include <mrpt/utils/CImage.h> 00034 #include <mrpt/math/utils.h> 00035 #include <mrpt/utils/CLoadableOptions.h> 00036 #include <mrpt/slam/CMetricMap.h> 00037 #include <mrpt/poses/CPose3D.h> 00038 #include <mrpt/poses/CPoint2D.h> 00039 #include <mrpt/poses/CPoint3D.h> 00040 #include <mrpt/slam/CObservationStereoImages.h> 00041 00042 namespace mrpt 00043 { 00044 namespace slam 00045 { 00046 class CLandmarksMap; 00047 class CObservationVisualLandmarks; 00048 } 00049 00050 /** Classes for computer vision, detectors, features, etc. 00051 */ 00052 namespace vision 00053 { 00054 using namespace mrpt::math; 00055 using namespace mrpt::utils; 00056 00057 // Here follow utility declarations, methods, etc. (Old "VisionUtils" namespace). 00058 // Implementations are in "vision.cpp" 00059 00060 /** Landmark ID 00061 */ 00062 typedef uint64_t TLandmarkID; 00063 00064 /** Parameters associated to a stereo system 00065 */ 00066 struct MRPTDLLIMPEXP TStereoSystemParams : public mrpt::utils::CLoadableOptions 00067 { 00068 /** Initilization of default parameters 00069 */ 00070 TStereoSystemParams( ); 00071 00072 /** See utils::CLoadableOptions 00073 */ 00074 void loadFromConfigFile( 00075 const mrpt::utils::CConfigFileBase &source, 00076 const std::string §ion); 00077 00078 /** See utils::CLoadableOptions 00079 */ 00080 void dumpToTextStream(CStream &out) const; 00081 00082 /** Method for propagating the feature's image coordinate uncertainty into 3D space. Default value: Prop_Linear 00083 */ 00084 enum TUnc_Prop_Method 00085 { 00086 /** Linear propagation of the uncertainty 00087 */ 00088 Prop_Linear = -1, 00089 /** Uncertainty propagation through the Unscented Transformation 00090 */ 00091 Prop_UT, 00092 /** Uncertainty propagation through the Scaled Unscented Transformation 00093 */ 00094 Prop_SUT 00095 }; 00096 00097 TUnc_Prop_Method uncPropagation; 00098 00099 /** Intrinsic parameters 00100 */ 00101 CMatrix K; 00102 /** Baseline. Default value: baseline = 0.119f; [Bumblebee] 00103 */ 00104 float baseline; 00105 /** Standard deviation of the error in feature detection. Default value: stdPixel = 1 00106 */ 00107 float stdPixel; 00108 /** Standard deviation of the error in disparity computation. Default value: stdDisp = 1 00109 */ 00110 float stdDisp; 00111 /** Maximum allowed distance. Default value: maxZ = 20.0f 00112 */ 00113 float maxZ; 00114 /** Maximum allowed distance. Default value: minZ = 0.5f 00115 */ 00116 float minZ; 00117 /** Maximum allowed height. Default value: maxY = 3.0f 00118 */ 00119 float maxY; 00120 /** K factor for the UT. Default value: k = 1.5f 00121 */ 00122 float factor_k; 00123 /** Alpha factor for SUT. Default value: a = 1e-3 00124 */ 00125 float factor_a; 00126 /** Beta factor for the SUT. Default value: b = 2.0f 00127 */ 00128 float factor_b; 00129 00130 /** Parameters initialization 00131 */ 00132 //TStereoSystemParams(); 00133 00134 }; // End struct TStereoSystemParams 00135 00136 /** A structure for storing a 3D ROI 00137 */ 00138 struct MRPTDLLIMPEXP TROI 00139 { 00140 // Constructors 00141 TROI(); 00142 TROI(float x1, float x2, float y1, float y2, float z1, float z2); 00143 00144 // Members 00145 float xMin; 00146 float xMax; 00147 float yMin; 00148 float yMax; 00149 float zMin; 00150 float zMax; 00151 }; // end struct TROI 00152 00153 /** A structure for defining a ROI within an image 00154 */ 00155 struct MRPTDLLIMPEXP TImageROI 00156 { 00157 // Constructors 00158 TImageROI(); 00159 TImageROI( float x1, float x2, float y1, float y2 ); 00160 00161 // Members 00162 /** X coordinate limits [0,imageWidth) 00163 */ 00164 float xMin, xMax; 00165 /** Y coordinate limits [0,imageHeight) 00166 */ 00167 float yMin, yMax; 00168 }; // end struct TImageROI 00169 00170 /** A structure containing options for the matching 00171 */ 00172 struct MRPTDLLIMPEXP TMatchingOptions : public mrpt::utils::CLoadableOptions 00173 { 00174 00175 /** Method for propagating the feature's image coordinate uncertainty into 3D space. Default value: Prop_Linear 00176 */ 00177 enum TMatchingMethod 00178 { 00179 /** Matching by cross correlation of the image patches 00180 */ 00181 mmCorrelation = 0, 00182 /** Matching by Euclidean distance between SIFT descriptors 00183 */ 00184 mmDescriptorSIFT, 00185 /** Matching by Euclidean distance between SURF descriptors 00186 */ 00187 mmDescriptorSURF 00188 }; 00189 00190 // For determining 00191 bool useEpipolarRestriction; 00192 bool hasFundamentalMatrix; 00193 bool parallelOpticalAxis; 00194 bool useXRestriction; 00195 00196 CMatrixDouble33 F; 00197 00198 // General 00199 TMatchingMethod matching_method; 00200 float epipolar_TH; 00201 float rowCheck_TH; 00202 float ccCheck_TH; 00203 00204 // SIFT 00205 float maxEDD_TH; 00206 float EDD_RATIO; 00207 00208 // KLT 00209 float minCC_TH; 00210 float minDCC_TH; 00211 float rCC_TH; 00212 00213 // SURF 00214 float maxEDSD_TH; 00215 float EDSD_RATIO; 00216 00217 /** Constructor 00218 */ 00219 TMatchingOptions( ); 00220 00221 /** See utils::CLoadableOptions 00222 */ 00223 void loadFromConfigFile( 00224 const mrpt::utils::CConfigFileBase &source, 00225 const std::string §ion); 00226 00227 /** See utils::CLoadableOptions 00228 */ 00229 void dumpToTextStream(CStream &out) const; 00230 00231 }; // end struct TMatchingOptions 00232 00233 /** Computes the correlation between this image and another one, encapsulating the openCV function cvMatchTemplate 00234 * This implementation reduced computation time. 00235 * \param patch_img The "patch" image, which must be equal, or smaller than "this" image. This function supports gray-scale (1 channel only) images. 00236 * \param x_search_ini The "x" coordinate of the search window. 00237 * \param y_search_ini The "y" coordinate of the search window. 00238 * \param x_search_size The width of the search window. 00239 * \param y_search_size The height of the search window. 00240 * \param x_max The x coordinate where found the maximun cross correlation value. 00241 * \param y_max The y coordinate where found the maximun cross correlation value 00242 * \param max_val The maximun value of cross correlation which we can find 00243 * Note: By default, the search area is the whole (this) image. 00244 * \sa cross_correlation 00245 */ 00246 void MRPTDLLIMPEXP openCV_cross_correlation( 00247 const CImage &img, 00248 const CImage &patch_img, 00249 size_t &x_max, 00250 size_t &y_max, 00251 double &max_val, 00252 int x_search_ini=-1, 00253 int y_search_ini=-1, 00254 int x_search_size=-1, 00255 int y_search_size=-1); 00256 00257 /** Invert an image using OpenCV function 00258 * 00259 */ 00260 void MRPTDLLIMPEXP flip(CImage &img); 00261 00262 /** Extract a UNITARY 3D vector in the direction of a 3D point, given from its (x,y) pixels coordinates, and the camera intrinsic coordinates. 00263 * \param x Pixels coordinates, from the top-left corner of the image. 00264 * \param y Pixels coordinates, from the top-left corner of the image. 00265 * \param A The 3x3 intrinsic parameters matrix for the camera. 00266 * 00267 * \sa buildIntrinsicParamsMatrix, defaultIntrinsicParamsMatrix 00268 */ 00269 TPoint3D MRPTDLLIMPEXP pixelTo3D( const vision::TPixelCoordf &xy, const CMatrixFloat &A); 00270 00271 /** Builds the intrinsic parameters matrix A from parameters: 00272 * \param focalLengthX The focal length, in X (horizontal) pixels 00273 * \param focalLengthY The focal length, in Y (vertical) pixels 00274 * \param centerX The image center, horizontal, in pixels 00275 * \param centerY The image center, vertical, in pixels 00276 * 00277 * <br>This method returns the matrix: 00278 <table> 00279 <tr><td>f_x</td><td>0</td><td>cX</td> </tr> 00280 <tr><td>0</td><td>f_y</td><td>cY</td> </tr> 00281 <tr><td>0</td><td>0</td><td>1</td> </tr> 00282 </table> 00283 * See also the tutorial discussing the <a rhref="http://babel.isa.uma.es/mrpt/index.php/Camera_Parameters">camera model parameters</a>. 00284 * \sa defaultIntrinsicParamsMatrix, pixelTo3D 00285 */ 00286 CMatrix MRPTDLLIMPEXP buildIntrinsicParamsMatrix( 00287 float focalLengthX, 00288 float focalLengthY, 00289 float centerX, 00290 float centerY); 00291 00292 /** Returns the stored, default intrinsic params matrix for a given camera: 00293 * \param camIndex Posible values are listed next. 00294 * \param resolutionX The number of pixel columns 00295 * \param resolutionY The number of pixel rows 00296 * 00297 * The matrix is generated for the indicated camera resolution configuration. 00298 * The following table summarizes the current supported cameras and the values as 00299 * ratios of the corresponding horz. or vert. resolution:<br> 00300 00301 <center><table> 00302 <tr> 00303 <td><center><b>camIndex</b></center></td> 00304 <td><center><b>Manufacturer</b></center></td> 00305 <td><center><b>Camera model</b></center></td> 00306 <td><center><b>fx</b></center></td> 00307 <td><center><b>fy</b></center></td> 00308 <td><center><b>cx</b></center></td> 00309 <td><center><b>cy</b></center></td> 00310 </tr> 00311 00312 <tr> 00313 <td><center>0</center></td> 00314 <td><center>Point Grey Research</center></td> 00315 <td><center>Bumblebee</center></td> 00316 <td><center>0.79345</center></td> 00317 <td><center>1.05793</center></td> 00318 <td><center>0.55662</center></td> 00319 <td><center>0.52692</center></td> 00320 </tr> 00321 00322 <tr> 00323 <td><center>1</center></td> 00324 <td><center>Sony</center></td> 00325 <td><center>???</center></td> 00326 <td><center>0.95666094</center></td> 00327 <td><center>1.3983423f</center></td> 00328 <td><center>0.54626328f</center></td> 00329 <td><center>0.4939191f</center></td> 00330 </tr> 00331 </table> 00332 </center> 00333 00334 * \sa buildIntrinsicParamsMatrix, pixelTo3D 00335 */ 00336 CMatrix MRPTDLLIMPEXP defaultIntrinsicParamsMatrix( 00337 unsigned int camIndex = 0, 00338 unsigned int resolutionX = 320, 00339 unsigned int resolutionY = 240 ); 00340 00341 /** Explore the feature list and removes features which are in the same coordinates 00342 * \param list (Input). The list of features. 00343 */ 00344 void MRPTDLLIMPEXP deleteRepeatedFeats( CFeatureList &list ); 00345 00346 /** Computes ONLY the SIFT descriptors of a set of features ... 00347 * ... 00348 */ 00349 /** / 00350 void computeSiftDescriptors( const CImage &in_img, 00351 CKanadeLucasTomasi::TKLTFeatureList &in_features, 00352 TSIFTFeatureList &out_features); 00353 / ** Computes a set of features with the SIFT algorithm... 00354 * ... 00355 * / 00356 void computeSiftFeatures( const CImage &in_img, 00357 TSIFTFeatureList &out_features, 00358 int wantedNumberOfFeatures = 150 ); 00359 00360 / ** Search for correspondences which are not in the same row and deletes them 00361 * ... 00362 */ 00363 void MRPTDLLIMPEXP rowChecking( CFeatureList &leftList, 00364 CFeatureList &rightList, 00365 float threshold = 0.0); 00366 00367 /** Search for correspondences which are not in the same row and deletes them 00368 * ... 00369 */ 00370 void MRPTDLLIMPEXP checkTrackedFeatures( CFeatureList &leftList, 00371 CFeatureList &rightList, 00372 vision::TMatchingOptions options); 00373 00374 00375 /** Computes the dispersion of the features in the image 00376 * \param list (IN) Input list of features 00377 * \param std (OUT) 2 element vector containing the standard deviations in the 'x' and 'y' coordinates. 00378 * \param mean (OUT) 2 element vector containing the mean in the 'x' and 'y' coordinates. 00379 */ 00380 void MRPTDLLIMPEXP getDispersion( const CFeatureList &list, 00381 vector_float &std, 00382 vector_float &mean ); 00383 00384 /** Tracks a set of features in an image. 00385 */ 00386 void MRPTDLLIMPEXP trackFeatures( const CImage &inImg1, 00387 const CImage &inImg2, 00388 vision::CFeatureList &featureList, 00389 const unsigned int &window_width = 15, 00390 const unsigned int &window_height = 15 ); 00391 00392 /** Filter bad correspondences by distance 00393 * ... 00394 */ 00395 void MRPTDLLIMPEXP filterBadCorrsByDistance( mrpt::slam::CMetricMap::TMatchingPairList &list, // The list of correspondences 00396 unsigned int numberOfSigmas ); // Threshold 00397 00398 00399 /** Returns a new image where distortion has been removed. 00400 * \param A The 3x3 intrinsic parameters matrix 00401 * \param dist_coeffs The 1x4 vector of distortion coefficients 00402 */ 00403 void MRPTDLLIMPEXP correctDistortion( 00404 CImage &in_img, 00405 CImage &out_img, 00406 CMatrix A, 00407 CMatrix dist_coeffs ); 00408 00409 /** Transform HSV color components to RGB, all of them in the range [0,1] 00410 * \sa rgb2hsv 00411 */ 00412 void MRPTDLLIMPEXP hsv2rgb( 00413 float h, 00414 float s, 00415 float v, 00416 float &r, 00417 float &g, 00418 float &b); 00419 00420 /** Transform RGB color components to HSV, all of them in the range [0,1] 00421 * \sa hsv2rgb 00422 */ 00423 void MRPTDLLIMPEXP rgb2hsv( 00424 float r, 00425 float g, 00426 float b, 00427 float &h, 00428 float &s, 00429 float &v ); 00430 00431 /** Different colormaps 00432 * \sa mrpt::vision::colormap 00433 */ 00434 enum TColormap 00435 { 00436 cmGRAYSCALE = 0, 00437 cmJET 00438 }; 00439 00440 /** Transform a float number in the range [0,1] into RGB components. Different colormaps are available. 00441 */ 00442 void MRPTDLLIMPEXP colormap( 00443 const TColormap &color_map, 00444 const float &color_index, 00445 float &r, 00446 float &g, 00447 float &b); 00448 00449 /** Computes the RGB color components (range [0,1]) for the corresponding color index in the range [0,1] using the MATLAB 'jet' colormap. 00450 * \sa colormap 00451 */ 00452 void MRPTDLLIMPEXP jet2rgb( 00453 const float &color_index, 00454 float &r, 00455 float &g, 00456 float &b); 00457 00458 /** Interpolation methods (as defined in OpenCV) 00459 * Used for OpenCV related operations with images, but also with MRPT native classes. 00460 * \sa mrpt::utils::CMappedImage 00461 */ 00462 enum TInterpolationMethod 00463 { 00464 imNEAREST = 0, //!< No interpolation 00465 imBILINEAR, //!< Bilinear interpolation 00466 imBICUBIC, //!< Bilinear interpolation 00467 imAREA //!< Resampling using pixel-area relation 00468 }; 00469 00470 00471 /** Computes the mean squared distance between a set of 3D correspondences 00472 * ... 00473 */ 00474 double MRPTDLLIMPEXP computeMsd( const mrpt::slam::CMetricMap::TMatchingPairList &list, 00475 const mrpt::poses::CPose3D &Rt ); 00476 00477 /** Transform two clouds of 3D points into a matched list of points 00478 * ... 00479 */ 00480 void MRPTDLLIMPEXP cloudsToMatchedList( const mrpt::slam::CObservationVisualLandmarks &cloud1, 00481 const mrpt::slam::CObservationVisualLandmarks &cloud2, 00482 mrpt::slam::CMetricMap::TMatchingPairList &outList); 00483 00484 /** Computes the main orientation of a set of points with an image (for using in SIFT-based algorithms) 00485 * \param image (Input). The input image. 00486 * \param x (Input). A vector containing the 'x' coordinates of the image points. 00487 * \param y (Input). A vector containing the 'y' coordinates of the image points. 00488 * \param orientation (Output). A vector containing the main orientation of the image points. 00489 */ 00490 float MRPTDLLIMPEXP computeMainOrientation( const CImage &image, 00491 const unsigned int &x, 00492 const unsigned int &y ); 00493 00494 /** Find the matches between two lists of features. They must be of the same type. Return value: the number of matched pairs of features 00495 * \param list1 (Input). One list. 00496 * \param list2 (Input). Other list. 00497 * \param matches (Output). A vector of pairs of correspondences. 00498 * \param options (Optional Input). A struct containing matching options 00499 */ 00500 size_t MRPTDLLIMPEXP matchFeatures( const CFeatureList &list1, 00501 const CFeatureList &list2, 00502 CMatchedFeatureList &matches, 00503 const TMatchingOptions &options = TMatchingOptions() ); 00504 00505 /** Find the matches between two lists of features. They must be of the same type. Return value: the number of matched pairs of features 00506 * \param list1 (Input). One list. 00507 * \param list2 (Input). Other list. 00508 * \param matches (Output). A vector of pairs of correspondences. 00509 * \param options (Optional Input). A struct containing matching options 00510 */ 00511 size_t MRPTDLLIMPEXP matchFeatures2( const CFeatureList &list1, 00512 const CFeatureList &list2, 00513 CMatchedFeatureList &matches, 00514 const TMatchingOptions &options = TMatchingOptions() ); 00515 00516 /** Project a list of matched features into the 3D space, using the provided options for the stereo system 00517 * \param matches (Input). The list of matched features. 00518 * \param options (Input). The options of the stereo system. 00519 * \param landmarks (Output). A map containing the projected landmarks. 00520 */ 00521 void MRPTDLLIMPEXP projectMatchedFeatures( 00522 CMatchedFeatureList &mfList, // The set of matched features 00523 const vision::TStereoSystemParams ¶m, // Parameters for the stereo system 00524 mrpt::slam::CLandmarksMap &landmarks ); // Output map of 3D landmarks 00525 00526 00527 /** Data associated to each image in the calibration process mrpt::vision::checkerBoardCameraCalibration (All the information can be left empty and will be filled up in the calibration method). 00528 */ 00529 struct TImageCalibData 00530 { 00531 CImage img_original; //!< This image will be automatically loaded from the file name passed to checkerBoardCameraCalibration 00532 CImage img_checkboard; //!< At output, this will contain the detected checkerboard overprinted to the image. 00533 CImage img_rectified; //!< At output, this will be the rectified image 00534 std::vector<mrpt::poses::CPoint2D> detected_corners; //!< At output, the detected corners (x,y) in pixel units. 00535 mrpt::poses::CPose3D reconstructed_camera_pose; //!< At output, the reconstructed pose of the camera. 00536 std::vector<TPixelCoordf> projectedPoints_distorted; //!< At output, only will have an empty vector if the checkerboard was not found in this image, or the predicted (reprojected) corners, which were used to estimate the average square error. 00537 std::vector<TPixelCoordf> projectedPoints_undistorted; //!< At output, like projectedPoints_distorted but for the undistorted image. 00538 }; 00539 00540 /** A list of images, used in checkerBoardCameraCalibration 00541 * \sa checkerBoardCameraCalibration 00542 */ 00543 typedef std::map<std::string,TImageCalibData> TCalibrationImageList; 00544 00545 /** Performs a camera calibration (computation of projection and distortion parameters) from a sequence of captured images of a checkerboard. 00546 * \param input_images [IN/OUT] At input, this list must have one entry for each image to process. At output the original, detected checkboard and rectified images can be found here. See TImageCalibData. 00547 * \param check_size_x [IN] The number of squares in the checkerboard in the X direction. 00548 * \param check_size_y [IN] The number of squares in the checkerboard in the Y direction. 00549 * \param check_squares_length_X_meters [IN] The size of each square in the checkerboard, in meters, in the X axis. 00550 * \param check_squares_length_Y_meters [IN] This will typically be equal to check_squares_length_X_meters. 00551 * \param intrinsicParams [OUT] The 3x3 intrinsic parameters matrix. See http://babel.isa.uma.es/mrpt/index.php/Camera_Parameters 00552 * \param distortionParams [OUT] The 1x4 vector of distortion parameters: k1 k2 p1 p2. See http://babel.isa.uma.es/mrpt/index.php/Camera_Parameters 00553 * \param normalize_image [IN] Select OpenCV flag 00554 * \param out_MSE [OUT] If set to !=NULL, the mean square error of the reprojection will be stored here (in pixel units). 00555 * \param skipDrawDetectedImgs [IN] Whether to skip the generation of the undistorted and detected images in each TImageCalibData 00556 * \sa The <a href="http://babel.isa.uma.es/mrpt/index.php/Application:camera-calib-gui" >camera-calib-gui application</a> is a user-friendly GUI to this class. 00557 * \return false on any error (more info will be dumped to cout), or true on success. 00558 * \sa CImage::findChessboardCorners 00559 */ 00560 bool MRPTDLLIMPEXP checkerBoardCameraCalibration( 00561 TCalibrationImageList &images, 00562 unsigned int check_size_x, 00563 unsigned int check_size_y, 00564 double check_squares_length_X_meters, 00565 double check_squares_length_Y_meters, 00566 CMatrixDouble &intrinsicParams, 00567 std::vector<double> &distortionParams, 00568 bool normalize_image = true, 00569 double *out_MSE = NULL, 00570 bool skipDrawDetectedImgs = false 00571 ); 00572 00573 /** Converts a stereo images observation into a bearing and range observation. 00574 \param inObs [IN] The input stereo images observation. 00575 \param outObs [OUT] The output bearing and range observation (including covariances). 00576 \param sg [IN] The sigma of the row, col, and disparity variables involved in the feature detection. 00577 */ 00578 void MRPTDLLIMPEXP StereoObs2BRObs( 00579 const CObservationStereoImages &inObs, 00580 CObservationBearingRange &outObs, 00581 const std::vector<double> &sg 00582 ); 00583 00584 /** Converts a matched feature list into a bearing and range observation (some of the stereo camera system must be provided). 00585 \param inMatches [IN] The input list of matched features. 00586 \param intrinsicParams [IN] The intrisic params of the reference (left) camera of the stereo system. 00587 \param baseline [IN] The distance among the X axis of the right camera wrt the reference (left) camera. 00588 \param sg [IN] The sigma of the row, col, and disparity variables involved in the feature detection. 00589 \param outObs [OUT] The output bearing and range observation (including covariances). 00590 */ 00591 void MRPTDLLIMPEXP StereoObs2BRObs( 00592 const CMatchedFeatureList &inMatches, 00593 const CMatrix &intrinsicParams, 00594 const double &baseline, 00595 const std::vector<double> &sg, 00596 CObservationBearingRange &outObs 00597 ); 00598 } 00599 } 00600 00601 00602 #endif
| Page generated by Doxygen 1.6.2 for MRPT 0.8.1 SVN:exported at Mon Feb 15 22:01:07 UTC 2010 |
