HHomMat2D.h 45 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534
  1. /***********************************************************
  2. * File generated by the HALCON-Compiler hcomp version 20.11
  3. * Usage: Interface to C++
  4. *
  5. * Software by: MVTec Software GmbH, www.mvtec.com
  6. ***********************************************************/
  7. #ifndef HCPP_HHOMMAT2D
  8. #define HCPP_HHOMMAT2D
  9. namespace HalconCpp
  10. {
  11. // Represents a homogeneous 2D transformation matrix.
  12. class LIntExport HHomMat2D : public HDataBase
  13. {
  14. public:
  15. // Copy constructor
  16. HHomMat2D(const HHomMat2D& source) : HDataBase(source) {}
  17. // Constructor from HTuple
  18. explicit HHomMat2D(const HTuple& tuple) : HDataBase(tuple) {}
  19. // Deep copy of all data represented by this object instance
  20. HHomMat2D Clone() const;
  21. /*****************************************************************************
  22. * Operator-based class constructors
  23. *****************************************************************************/
  24. // hom_mat2d_identity: Generate the homogeneous transformation matrix of the identical 2D transformation.
  25. explicit HHomMat2D();
  26. /***************************************************************************
  27. * Operators *
  28. ***************************************************************************/
  29. // Read the geo coding from an ARC/INFO world file.
  30. void ReadWorldFile(const HString& FileName);
  31. // Read the geo coding from an ARC/INFO world file.
  32. void ReadWorldFile(const char* FileName);
  33. #ifdef _WIN32
  34. // Read the geo coding from an ARC/INFO world file.
  35. void ReadWorldFile(const wchar_t* FileName);
  36. #endif
  37. // Apply a projective transformation to an XLD contour.
  38. HXLDCont ProjectiveTransContourXld(const HXLDCont& Contours) const;
  39. // Apply an arbitrary affine transformation to XLD polygons.
  40. HXLDPoly AffineTransPolygonXld(const HXLDPoly& Polygons) const;
  41. // Apply an arbitrary affine 2D transformation to XLD contours.
  42. HXLDCont AffineTransContourXld(const HXLDCont& Contours) const;
  43. // Deserialize a serialized homogeneous 2D transformation matrix.
  44. void DeserializeHomMat2d(const HSerializedItem& SerializedItemHandle);
  45. // Serialize a homogeneous 2D transformation matrix.
  46. HSerializedItem SerializeHomMat2d() const;
  47. // Perform a bundle adjustment of an image mosaic.
  48. static HHomMat2DArray BundleAdjustMosaic(Hlong NumImages, Hlong ReferenceImage, const HTuple& MappingSource, const HTuple& MappingDest, const HHomMat2DArray& HomMatrices2D, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HTuple& NumCorrespondences, const HString& Transformation, HTuple* Rows, HTuple* Cols, HTuple* Error);
  49. // Perform a bundle adjustment of an image mosaic.
  50. static HHomMat2DArray BundleAdjustMosaic(Hlong NumImages, Hlong ReferenceImage, const HTuple& MappingSource, const HTuple& MappingDest, const HHomMat2DArray& HomMatrices2D, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HTuple& NumCorrespondences, const HString& Transformation, HTuple* Rows, HTuple* Cols, double* Error);
  51. // Perform a bundle adjustment of an image mosaic.
  52. static HHomMat2DArray BundleAdjustMosaic(Hlong NumImages, Hlong ReferenceImage, const HTuple& MappingSource, const HTuple& MappingDest, const HHomMat2DArray& HomMatrices2D, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HTuple& NumCorrespondences, const char* Transformation, HTuple* Rows, HTuple* Cols, double* Error);
  53. #ifdef _WIN32
  54. // Perform a bundle adjustment of an image mosaic.
  55. static HHomMat2DArray BundleAdjustMosaic(Hlong NumImages, Hlong ReferenceImage, const HTuple& MappingSource, const HTuple& MappingDest, const HHomMat2DArray& HomMatrices2D, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HTuple& NumCorrespondences, const wchar_t* Transformation, HTuple* Rows, HTuple* Cols, double* Error);
  56. #endif
  57. // Compute a projective transformation matrix and the radial distortion coefficient between two images by finding correspondences between points based on known approximations of the projective transformation matrix and the radial distortion coefficient.
  58. HHomMat2D ProjMatchPointsDistortionRansacGuided(const HImage& Image1, const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HString& GrayMatchMethod, Hlong MaskSize, double KappaGuide, double DistanceTolerance, const HTuple& MatchThreshold, const HString& EstimationMethod, const HTuple& DistanceThreshold, Hlong RandSeed, double* Kappa, double* Error, HTuple* Points1, HTuple* Points2) const;
  59. // Compute a projective transformation matrix and the radial distortion coefficient between two images by finding correspondences between points based on known approximations of the projective transformation matrix and the radial distortion coefficient.
  60. HHomMat2D ProjMatchPointsDistortionRansacGuided(const HImage& Image1, const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HString& GrayMatchMethod, Hlong MaskSize, double KappaGuide, double DistanceTolerance, Hlong MatchThreshold, const HString& EstimationMethod, double DistanceThreshold, Hlong RandSeed, double* Kappa, double* Error, HTuple* Points1, HTuple* Points2) const;
  61. // Compute a projective transformation matrix and the radial distortion coefficient between two images by finding correspondences between points based on known approximations of the projective transformation matrix and the radial distortion coefficient.
  62. HHomMat2D ProjMatchPointsDistortionRansacGuided(const HImage& Image1, const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const char* GrayMatchMethod, Hlong MaskSize, double KappaGuide, double DistanceTolerance, Hlong MatchThreshold, const char* EstimationMethod, double DistanceThreshold, Hlong RandSeed, double* Kappa, double* Error, HTuple* Points1, HTuple* Points2) const;
  63. #ifdef _WIN32
  64. // Compute a projective transformation matrix and the radial distortion coefficient between two images by finding correspondences between points based on known approximations of the projective transformation matrix and the radial distortion coefficient.
  65. HHomMat2D ProjMatchPointsDistortionRansacGuided(const HImage& Image1, const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const wchar_t* GrayMatchMethod, Hlong MaskSize, double KappaGuide, double DistanceTolerance, Hlong MatchThreshold, const wchar_t* EstimationMethod, double DistanceThreshold, Hlong RandSeed, double* Kappa, double* Error, HTuple* Points1, HTuple* Points2) const;
  66. #endif
  67. // Compute a projective transformation matrix between two images and the radial distortion coefficient by automatically finding correspondences between points.
  68. double ProjMatchPointsDistortionRansac(const HImage& Image1, const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HString& GrayMatchMethod, Hlong MaskSize, Hlong RowMove, Hlong ColMove, Hlong RowTolerance, Hlong ColTolerance, const HTuple& Rotation, const HTuple& MatchThreshold, const HString& EstimationMethod, const HTuple& DistanceThreshold, Hlong RandSeed, double* Error, HTuple* Points1, HTuple* Points2);
  69. // Compute a projective transformation matrix between two images and the radial distortion coefficient by automatically finding correspondences between points.
  70. double ProjMatchPointsDistortionRansac(const HImage& Image1, const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HString& GrayMatchMethod, Hlong MaskSize, Hlong RowMove, Hlong ColMove, Hlong RowTolerance, Hlong ColTolerance, double Rotation, Hlong MatchThreshold, const HString& EstimationMethod, double DistanceThreshold, Hlong RandSeed, double* Error, HTuple* Points1, HTuple* Points2);
  71. // Compute a projective transformation matrix between two images and the radial distortion coefficient by automatically finding correspondences between points.
  72. double ProjMatchPointsDistortionRansac(const HImage& Image1, const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const char* GrayMatchMethod, Hlong MaskSize, Hlong RowMove, Hlong ColMove, Hlong RowTolerance, Hlong ColTolerance, double Rotation, Hlong MatchThreshold, const char* EstimationMethod, double DistanceThreshold, Hlong RandSeed, double* Error, HTuple* Points1, HTuple* Points2);
  73. #ifdef _WIN32
  74. // Compute a projective transformation matrix between two images and the radial distortion coefficient by automatically finding correspondences between points.
  75. double ProjMatchPointsDistortionRansac(const HImage& Image1, const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const wchar_t* GrayMatchMethod, Hlong MaskSize, Hlong RowMove, Hlong ColMove, Hlong RowTolerance, Hlong ColTolerance, double Rotation, Hlong MatchThreshold, const wchar_t* EstimationMethod, double DistanceThreshold, Hlong RandSeed, double* Error, HTuple* Points1, HTuple* Points2);
  76. #endif
  77. // Compute a projective transformation matrix between two images by finding correspondences between points based on a known approximation of the projective transformation matrix.
  78. HHomMat2D ProjMatchPointsRansacGuided(const HImage& Image1, const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HString& GrayMatchMethod, Hlong MaskSize, double DistanceTolerance, const HTuple& MatchThreshold, const HString& EstimationMethod, double DistanceThreshold, Hlong RandSeed, HTuple* Points1, HTuple* Points2) const;
  79. // Compute a projective transformation matrix between two images by finding correspondences between points based on a known approximation of the projective transformation matrix.
  80. HHomMat2D ProjMatchPointsRansacGuided(const HImage& Image1, const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HString& GrayMatchMethod, Hlong MaskSize, double DistanceTolerance, Hlong MatchThreshold, const HString& EstimationMethod, double DistanceThreshold, Hlong RandSeed, HTuple* Points1, HTuple* Points2) const;
  81. // Compute a projective transformation matrix between two images by finding correspondences between points based on a known approximation of the projective transformation matrix.
  82. HHomMat2D ProjMatchPointsRansacGuided(const HImage& Image1, const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const char* GrayMatchMethod, Hlong MaskSize, double DistanceTolerance, Hlong MatchThreshold, const char* EstimationMethod, double DistanceThreshold, Hlong RandSeed, HTuple* Points1, HTuple* Points2) const;
  83. #ifdef _WIN32
  84. // Compute a projective transformation matrix between two images by finding correspondences between points based on a known approximation of the projective transformation matrix.
  85. HHomMat2D ProjMatchPointsRansacGuided(const HImage& Image1, const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const wchar_t* GrayMatchMethod, Hlong MaskSize, double DistanceTolerance, Hlong MatchThreshold, const wchar_t* EstimationMethod, double DistanceThreshold, Hlong RandSeed, HTuple* Points1, HTuple* Points2) const;
  86. #endif
  87. // Compute a projective transformation matrix between two images by finding correspondences between points.
  88. HTuple ProjMatchPointsRansac(const HImage& Image1, const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HString& GrayMatchMethod, Hlong MaskSize, Hlong RowMove, Hlong ColMove, Hlong RowTolerance, Hlong ColTolerance, const HTuple& Rotation, const HTuple& MatchThreshold, const HString& EstimationMethod, double DistanceThreshold, Hlong RandSeed, HTuple* Points2);
  89. // Compute a projective transformation matrix between two images by finding correspondences between points.
  90. HTuple ProjMatchPointsRansac(const HImage& Image1, const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HString& GrayMatchMethod, Hlong MaskSize, Hlong RowMove, Hlong ColMove, Hlong RowTolerance, Hlong ColTolerance, double Rotation, Hlong MatchThreshold, const HString& EstimationMethod, double DistanceThreshold, Hlong RandSeed, HTuple* Points2);
  91. // Compute a projective transformation matrix between two images by finding correspondences between points.
  92. HTuple ProjMatchPointsRansac(const HImage& Image1, const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const char* GrayMatchMethod, Hlong MaskSize, Hlong RowMove, Hlong ColMove, Hlong RowTolerance, Hlong ColTolerance, double Rotation, Hlong MatchThreshold, const char* EstimationMethod, double DistanceThreshold, Hlong RandSeed, HTuple* Points2);
  93. #ifdef _WIN32
  94. // Compute a projective transformation matrix between two images by finding correspondences between points.
  95. HTuple ProjMatchPointsRansac(const HImage& Image1, const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const wchar_t* GrayMatchMethod, Hlong MaskSize, Hlong RowMove, Hlong ColMove, Hlong RowTolerance, Hlong ColTolerance, double Rotation, Hlong MatchThreshold, const wchar_t* EstimationMethod, double DistanceThreshold, Hlong RandSeed, HTuple* Points2);
  96. #endif
  97. // Compute a projective transformation matrix and the radial distortion coefficient using given image point correspondences.
  98. double VectorToProjHomMat2dDistortion(const HTuple& Points1Row, const HTuple& Points1Col, const HTuple& Points2Row, const HTuple& Points2Col, const HTuple& CovRR1, const HTuple& CovRC1, const HTuple& CovCC1, const HTuple& CovRR2, const HTuple& CovRC2, const HTuple& CovCC2, Hlong ImageWidth, Hlong ImageHeight, const HString& Method, double* Error);
  99. // Compute a projective transformation matrix and the radial distortion coefficient using given image point correspondences.
  100. double VectorToProjHomMat2dDistortion(const HTuple& Points1Row, const HTuple& Points1Col, const HTuple& Points2Row, const HTuple& Points2Col, const HTuple& CovRR1, const HTuple& CovRC1, const HTuple& CovCC1, const HTuple& CovRR2, const HTuple& CovRC2, const HTuple& CovCC2, Hlong ImageWidth, Hlong ImageHeight, const char* Method, double* Error);
  101. #ifdef _WIN32
  102. // Compute a projective transformation matrix and the radial distortion coefficient using given image point correspondences.
  103. double VectorToProjHomMat2dDistortion(const HTuple& Points1Row, const HTuple& Points1Col, const HTuple& Points2Row, const HTuple& Points2Col, const HTuple& CovRR1, const HTuple& CovRC1, const HTuple& CovCC1, const HTuple& CovRR2, const HTuple& CovRC2, const HTuple& CovCC2, Hlong ImageWidth, Hlong ImageHeight, const wchar_t* Method, double* Error);
  104. #endif
  105. // Compute a homogeneous transformation matrix using given point correspondences.
  106. void HomVectorToProjHomMat2d(const HTuple& Px, const HTuple& Py, const HTuple& Pw, const HTuple& Qx, const HTuple& Qy, const HTuple& Qw, const HString& Method);
  107. // Compute a homogeneous transformation matrix using given point correspondences.
  108. void HomVectorToProjHomMat2d(const HTuple& Px, const HTuple& Py, const HTuple& Pw, const HTuple& Qx, const HTuple& Qy, const HTuple& Qw, const char* Method);
  109. #ifdef _WIN32
  110. // Compute a homogeneous transformation matrix using given point correspondences.
  111. void HomVectorToProjHomMat2d(const HTuple& Px, const HTuple& Py, const HTuple& Pw, const HTuple& Qx, const HTuple& Qy, const HTuple& Qw, const wchar_t* Method);
  112. #endif
  113. // Compute a projective transformation matrix using given point correspondences.
  114. HTuple VectorToProjHomMat2d(const HTuple& Px, const HTuple& Py, const HTuple& Qx, const HTuple& Qy, const HString& Method, const HTuple& CovXX1, const HTuple& CovYY1, const HTuple& CovXY1, const HTuple& CovXX2, const HTuple& CovYY2, const HTuple& CovXY2);
  115. // Compute a projective transformation matrix using given point correspondences.
  116. HTuple VectorToProjHomMat2d(const HTuple& Px, const HTuple& Py, const HTuple& Qx, const HTuple& Qy, const char* Method, const HTuple& CovXX1, const HTuple& CovYY1, const HTuple& CovXY1, const HTuple& CovXX2, const HTuple& CovYY2, const HTuple& CovXY2);
  117. #ifdef _WIN32
  118. // Compute a projective transformation matrix using given point correspondences.
  119. HTuple VectorToProjHomMat2d(const HTuple& Px, const HTuple& Py, const HTuple& Qx, const HTuple& Qy, const wchar_t* Method, const HTuple& CovXX1, const HTuple& CovYY1, const HTuple& CovXY1, const HTuple& CovXX2, const HTuple& CovYY2, const HTuple& CovXY2);
  120. #endif
  121. // Compute the affine transformation parameters from a homogeneous 2D transformation matrix.
  122. double HomMat2dToAffinePar(double* Sy, double* Phi, double* Theta, double* Tx, double* Ty) const;
  123. // Compute a rigid affine transformation from points and angles.
  124. void VectorAngleToRigid(const HTuple& Row1, const HTuple& Column1, const HTuple& Angle1, const HTuple& Row2, const HTuple& Column2, const HTuple& Angle2);
  125. // Compute a rigid affine transformation from points and angles.
  126. void VectorAngleToRigid(double Row1, double Column1, double Angle1, double Row2, double Column2, double Angle2);
  127. // Approximate an affine transformation from point-to-line correspondences.
  128. void PointLineToHomMat2d(const HString& TransformationType, const HTuple& Px, const HTuple& Py, const HTuple& L1x, const HTuple& L1y, const HTuple& L2x, const HTuple& L2y);
  129. // Approximate an affine transformation from point-to-line correspondences.
  130. void PointLineToHomMat2d(const char* TransformationType, const HTuple& Px, const HTuple& Py, const HTuple& L1x, const HTuple& L1y, const HTuple& L2x, const HTuple& L2y);
  131. #ifdef _WIN32
  132. // Approximate an affine transformation from point-to-line correspondences.
  133. void PointLineToHomMat2d(const wchar_t* TransformationType, const HTuple& Px, const HTuple& Py, const HTuple& L1x, const HTuple& L1y, const HTuple& L2x, const HTuple& L2y);
  134. #endif
  135. // Approximate a rigid affine transformation from point correspondences.
  136. void VectorToRigid(const HTuple& Px, const HTuple& Py, const HTuple& Qx, const HTuple& Qy);
  137. // Approximate an similarity transformation from point correspondences.
  138. void VectorToSimilarity(const HTuple& Px, const HTuple& Py, const HTuple& Qx, const HTuple& Qy);
  139. // Approximate an anisotropic similarity transformation from point correspondences.
  140. void VectorToAniso(const HTuple& Px, const HTuple& Py, const HTuple& Qx, const HTuple& Qy);
  141. // Approximate an affine transformation from point correspondences.
  142. void VectorToHomMat2d(const HTuple& Px, const HTuple& Py, const HTuple& Qx, const HTuple& Qy);
  143. // Project pixel coordinates using a homogeneous projective transformation matrix.
  144. void ProjectiveTransPixel(const HTuple& Row, const HTuple& Col, HTuple* RowTrans, HTuple* ColTrans) const;
  145. // Project pixel coordinates using a homogeneous projective transformation matrix.
  146. void ProjectiveTransPixel(double Row, double Col, double* RowTrans, double* ColTrans) const;
  147. // Project a homogeneous 2D point using a projective transformation matrix.
  148. HTuple ProjectiveTransPoint2d(const HTuple& Px, const HTuple& Py, const HTuple& Pw, HTuple* Qy, HTuple* Qw) const;
  149. // Project a homogeneous 2D point using a projective transformation matrix.
  150. double ProjectiveTransPoint2d(double Px, double Py, double Pw, double* Qy, double* Qw) const;
  151. // Apply an arbitrary affine 2D transformation to pixel coordinates.
  152. void AffineTransPixel(const HTuple& Row, const HTuple& Col, HTuple* RowTrans, HTuple* ColTrans) const;
  153. // Apply an arbitrary affine 2D transformation to pixel coordinates.
  154. void AffineTransPixel(double Row, double Col, double* RowTrans, double* ColTrans) const;
  155. // Apply an arbitrary affine 2D transformation to points.
  156. HTuple AffineTransPoint2d(const HTuple& Px, const HTuple& Py, HTuple* Qy) const;
  157. // Apply an arbitrary affine 2D transformation to points.
  158. double AffineTransPoint2d(double Px, double Py, double* Qy) const;
  159. // Compute the determinant of a homogeneous 2D transformation matrix.
  160. double HomMat2dDeterminant() const;
  161. // Transpose a homogeneous 2D transformation matrix.
  162. HHomMat2D HomMat2dTranspose() const;
  163. // Invert a homogeneous 2D transformation matrix.
  164. HHomMat2D HomMat2dInvert() const;
  165. // Multiply two homogeneous 2D transformation matrices.
  166. HHomMat2D HomMat2dCompose(const HHomMat2D& HomMat2DRight) const;
  167. // Add a reflection to a homogeneous 2D transformation matrix.
  168. HHomMat2D HomMat2dReflectLocal(const HTuple& Px, const HTuple& Py) const;
  169. // Add a reflection to a homogeneous 2D transformation matrix.
  170. HHomMat2D HomMat2dReflectLocal(double Px, double Py) const;
  171. // Add a reflection to a homogeneous 2D transformation matrix.
  172. HHomMat2D HomMat2dReflect(const HTuple& Px, const HTuple& Py, const HTuple& Qx, const HTuple& Qy) const;
  173. // Add a reflection to a homogeneous 2D transformation matrix.
  174. HHomMat2D HomMat2dReflect(double Px, double Py, double Qx, double Qy) const;
  175. // Add a slant to a homogeneous 2D transformation matrix.
  176. HHomMat2D HomMat2dSlantLocal(const HTuple& Theta, const HString& Axis) const;
  177. // Add a slant to a homogeneous 2D transformation matrix.
  178. HHomMat2D HomMat2dSlantLocal(double Theta, const HString& Axis) const;
  179. // Add a slant to a homogeneous 2D transformation matrix.
  180. HHomMat2D HomMat2dSlantLocal(double Theta, const char* Axis) const;
  181. #ifdef _WIN32
  182. // Add a slant to a homogeneous 2D transformation matrix.
  183. HHomMat2D HomMat2dSlantLocal(double Theta, const wchar_t* Axis) const;
  184. #endif
  185. // Add a slant to a homogeneous 2D transformation matrix.
  186. HHomMat2D HomMat2dSlant(const HTuple& Theta, const HString& Axis, const HTuple& Px, const HTuple& Py) const;
  187. // Add a slant to a homogeneous 2D transformation matrix.
  188. HHomMat2D HomMat2dSlant(double Theta, const HString& Axis, double Px, double Py) const;
  189. // Add a slant to a homogeneous 2D transformation matrix.
  190. HHomMat2D HomMat2dSlant(double Theta, const char* Axis, double Px, double Py) const;
  191. #ifdef _WIN32
  192. // Add a slant to a homogeneous 2D transformation matrix.
  193. HHomMat2D HomMat2dSlant(double Theta, const wchar_t* Axis, double Px, double Py) const;
  194. #endif
  195. // Add a rotation to a homogeneous 2D transformation matrix.
  196. HHomMat2D HomMat2dRotateLocal(const HTuple& Phi) const;
  197. // Add a rotation to a homogeneous 2D transformation matrix.
  198. HHomMat2D HomMat2dRotateLocal(double Phi) const;
  199. // Add a rotation to a homogeneous 2D transformation matrix.
  200. HHomMat2D HomMat2dRotate(const HTuple& Phi, const HTuple& Px, const HTuple& Py) const;
  201. // Add a rotation to a homogeneous 2D transformation matrix.
  202. HHomMat2D HomMat2dRotate(double Phi, double Px, double Py) const;
  203. // Add a scaling to a homogeneous 2D transformation matrix.
  204. HHomMat2D HomMat2dScaleLocal(const HTuple& Sx, const HTuple& Sy) const;
  205. // Add a scaling to a homogeneous 2D transformation matrix.
  206. HHomMat2D HomMat2dScaleLocal(double Sx, double Sy) const;
  207. // Add a scaling to a homogeneous 2D transformation matrix.
  208. HHomMat2D HomMat2dScale(const HTuple& Sx, const HTuple& Sy, const HTuple& Px, const HTuple& Py) const;
  209. // Add a scaling to a homogeneous 2D transformation matrix.
  210. HHomMat2D HomMat2dScale(double Sx, double Sy, double Px, double Py) const;
  211. // Add a translation to a homogeneous 2D transformation matrix.
  212. HHomMat2D HomMat2dTranslateLocal(const HTuple& Tx, const HTuple& Ty) const;
  213. // Add a translation to a homogeneous 2D transformation matrix.
  214. HHomMat2D HomMat2dTranslateLocal(double Tx, double Ty) const;
  215. // Add a translation to a homogeneous 2D transformation matrix.
  216. HHomMat2D HomMat2dTranslate(const HTuple& Tx, const HTuple& Ty) const;
  217. // Add a translation to a homogeneous 2D transformation matrix.
  218. HHomMat2D HomMat2dTranslate(double Tx, double Ty) const;
  219. // Generate the homogeneous transformation matrix of the identical 2D transformation.
  220. void HomMat2dIdentity();
  221. // Compute the projective 3d reconstruction of points based on the fundamental matrix.
  222. void Reconst3dFromFundamentalMatrix(const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HTuple& CovRR1, const HTuple& CovRC1, const HTuple& CovCC1, const HTuple& CovRR2, const HTuple& CovRC2, const HTuple& CovCC2, const HTuple& CovFMat, HTuple* X, HTuple* Y, HTuple* Z, HTuple* W, HTuple* CovXYZW) const;
  223. // Compute the projective 3d reconstruction of points based on the fundamental matrix.
  224. void Reconst3dFromFundamentalMatrix(double Rows1, double Cols1, double Rows2, double Cols2, double CovRR1, double CovRC1, double CovCC1, double CovRR2, double CovRC2, double CovCC2, const HTuple& CovFMat, double* X, double* Y, double* Z, double* W, double* CovXYZW) const;
  225. // Compute the projective rectification of weakly calibrated binocular stereo images.
  226. HImage GenBinocularProjRectification(HImage* Map2, const HTuple& CovFMat, Hlong Width1, Hlong Height1, Hlong Width2, Hlong Height2, const HTuple& SubSampling, const HString& Mapping, HTuple* CovFMatRect, HHomMat2D* H1, HHomMat2D* H2) const;
  227. // Compute the projective rectification of weakly calibrated binocular stereo images.
  228. HImage GenBinocularProjRectification(HImage* Map2, const HTuple& CovFMat, Hlong Width1, Hlong Height1, Hlong Width2, Hlong Height2, Hlong SubSampling, const HString& Mapping, HTuple* CovFMatRect, HHomMat2D* H1, HHomMat2D* H2) const;
  229. // Compute the projective rectification of weakly calibrated binocular stereo images.
  230. HImage GenBinocularProjRectification(HImage* Map2, const HTuple& CovFMat, Hlong Width1, Hlong Height1, Hlong Width2, Hlong Height2, Hlong SubSampling, const char* Mapping, HTuple* CovFMatRect, HHomMat2D* H1, HHomMat2D* H2) const;
  231. #ifdef _WIN32
  232. // Compute the projective rectification of weakly calibrated binocular stereo images.
  233. HImage GenBinocularProjRectification(HImage* Map2, const HTuple& CovFMat, Hlong Width1, Hlong Height1, Hlong Width2, Hlong Height2, Hlong SubSampling, const wchar_t* Mapping, HTuple* CovFMatRect, HHomMat2D* H1, HHomMat2D* H2) const;
  234. #endif
  235. // Compute the fundamental matrix and the radial distortion coefficient given a set of image point correspondences and reconstruct 3D points.
  236. double VectorToFundamentalMatrixDistortion(const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HTuple& CovRR1, const HTuple& CovRC1, const HTuple& CovCC1, const HTuple& CovRR2, const HTuple& CovRC2, const HTuple& CovCC2, Hlong ImageWidth, Hlong ImageHeight, const HString& Method, double* Error, HTuple* X, HTuple* Y, HTuple* Z, HTuple* W);
  237. // Compute the fundamental matrix and the radial distortion coefficient given a set of image point correspondences and reconstruct 3D points.
  238. double VectorToFundamentalMatrixDistortion(const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HTuple& CovRR1, const HTuple& CovRC1, const HTuple& CovCC1, const HTuple& CovRR2, const HTuple& CovRC2, const HTuple& CovCC2, Hlong ImageWidth, Hlong ImageHeight, const char* Method, double* Error, HTuple* X, HTuple* Y, HTuple* Z, HTuple* W);
  239. #ifdef _WIN32
  240. // Compute the fundamental matrix and the radial distortion coefficient given a set of image point correspondences and reconstruct 3D points.
  241. double VectorToFundamentalMatrixDistortion(const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HTuple& CovRR1, const HTuple& CovRC1, const HTuple& CovCC1, const HTuple& CovRR2, const HTuple& CovRC2, const HTuple& CovCC2, Hlong ImageWidth, Hlong ImageHeight, const wchar_t* Method, double* Error, HTuple* X, HTuple* Y, HTuple* Z, HTuple* W);
  242. #endif
  243. // Compute the fundamental matrix from the relative orientation of two cameras.
  244. HTuple RelPoseToFundamentalMatrix(const HPose& RelPose, const HTuple& CovRelPose, const HCamPar& CamPar1, const HCamPar& CamPar2);
  245. // Compute the fundamental matrix from an essential matrix.
  246. HHomMat2D EssentialToFundamentalMatrix(const HTuple& CovEMat, const HHomMat2D& CamMat1, const HHomMat2D& CamMat2, HTuple* CovFMat) const;
  247. // Compute the essential matrix given image point correspondences and known camera matrices and reconstruct 3D points.
  248. HHomMat2D VectorToEssentialMatrix(const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HTuple& CovRR1, const HTuple& CovRC1, const HTuple& CovCC1, const HTuple& CovRR2, const HTuple& CovRC2, const HTuple& CovCC2, const HHomMat2D& CamMat2, const HString& Method, HTuple* CovEMat, HTuple* Error, HTuple* X, HTuple* Y, HTuple* Z, HTuple* CovXYZ) const;
  249. // Compute the essential matrix given image point correspondences and known camera matrices and reconstruct 3D points.
  250. HHomMat2D VectorToEssentialMatrix(const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HTuple& CovRR1, const HTuple& CovRC1, const HTuple& CovCC1, const HTuple& CovRR2, const HTuple& CovRC2, const HTuple& CovCC2, const HHomMat2D& CamMat2, const HString& Method, HTuple* CovEMat, double* Error, HTuple* X, HTuple* Y, HTuple* Z, HTuple* CovXYZ) const;
  251. // Compute the essential matrix given image point correspondences and known camera matrices and reconstruct 3D points.
  252. HHomMat2D VectorToEssentialMatrix(const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HTuple& CovRR1, const HTuple& CovRC1, const HTuple& CovCC1, const HTuple& CovRR2, const HTuple& CovRC2, const HTuple& CovCC2, const HHomMat2D& CamMat2, const char* Method, HTuple* CovEMat, double* Error, HTuple* X, HTuple* Y, HTuple* Z, HTuple* CovXYZ) const;
  253. #ifdef _WIN32
  254. // Compute the essential matrix given image point correspondences and known camera matrices and reconstruct 3D points.
  255. HHomMat2D VectorToEssentialMatrix(const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HTuple& CovRR1, const HTuple& CovRC1, const HTuple& CovCC1, const HTuple& CovRR2, const HTuple& CovRC2, const HTuple& CovCC2, const HHomMat2D& CamMat2, const wchar_t* Method, HTuple* CovEMat, double* Error, HTuple* X, HTuple* Y, HTuple* Z, HTuple* CovXYZ) const;
  256. #endif
  257. // Compute the fundamental matrix given a set of image point correspondences and reconstruct 3D points.
  258. HTuple VectorToFundamentalMatrix(const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HTuple& CovRR1, const HTuple& CovRC1, const HTuple& CovCC1, const HTuple& CovRR2, const HTuple& CovRC2, const HTuple& CovCC2, const HString& Method, double* Error, HTuple* X, HTuple* Y, HTuple* Z, HTuple* W, HTuple* CovXYZW);
  259. // Compute the fundamental matrix given a set of image point correspondences and reconstruct 3D points.
  260. HTuple VectorToFundamentalMatrix(const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HTuple& CovRR1, const HTuple& CovRC1, const HTuple& CovCC1, const HTuple& CovRR2, const HTuple& CovRC2, const HTuple& CovCC2, const char* Method, double* Error, HTuple* X, HTuple* Y, HTuple* Z, HTuple* W, HTuple* CovXYZW);
  261. #ifdef _WIN32
  262. // Compute the fundamental matrix given a set of image point correspondences and reconstruct 3D points.
  263. HTuple VectorToFundamentalMatrix(const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HTuple& CovRR1, const HTuple& CovRC1, const HTuple& CovCC1, const HTuple& CovRR2, const HTuple& CovRC2, const HTuple& CovCC2, const wchar_t* Method, double* Error, HTuple* X, HTuple* Y, HTuple* Z, HTuple* W, HTuple* CovXYZW);
  264. #endif
  265. // Compute the fundamental matrix and the radial distortion coefficient for a pair of stereo images by automatically finding correspondences between image points.
  266. double MatchFundamentalMatrixDistortionRansac(const HImage& Image1, const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HString& GrayMatchMethod, Hlong MaskSize, Hlong RowMove, Hlong ColMove, Hlong RowTolerance, Hlong ColTolerance, const HTuple& Rotation, const HTuple& MatchThreshold, const HString& EstimationMethod, const HTuple& DistanceThreshold, Hlong RandSeed, double* Error, HTuple* Points1, HTuple* Points2);
  267. // Compute the fundamental matrix and the radial distortion coefficient for a pair of stereo images by automatically finding correspondences between image points.
  268. double MatchFundamentalMatrixDistortionRansac(const HImage& Image1, const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HString& GrayMatchMethod, Hlong MaskSize, Hlong RowMove, Hlong ColMove, Hlong RowTolerance, Hlong ColTolerance, double Rotation, Hlong MatchThreshold, const HString& EstimationMethod, double DistanceThreshold, Hlong RandSeed, double* Error, HTuple* Points1, HTuple* Points2);
  269. // Compute the fundamental matrix and the radial distortion coefficient for a pair of stereo images by automatically finding correspondences between image points.
  270. double MatchFundamentalMatrixDistortionRansac(const HImage& Image1, const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const char* GrayMatchMethod, Hlong MaskSize, Hlong RowMove, Hlong ColMove, Hlong RowTolerance, Hlong ColTolerance, double Rotation, Hlong MatchThreshold, const char* EstimationMethod, double DistanceThreshold, Hlong RandSeed, double* Error, HTuple* Points1, HTuple* Points2);
  271. #ifdef _WIN32
  272. // Compute the fundamental matrix and the radial distortion coefficient for a pair of stereo images by automatically finding correspondences between image points.
  273. double MatchFundamentalMatrixDistortionRansac(const HImage& Image1, const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const wchar_t* GrayMatchMethod, Hlong MaskSize, Hlong RowMove, Hlong ColMove, Hlong RowTolerance, Hlong ColTolerance, double Rotation, Hlong MatchThreshold, const wchar_t* EstimationMethod, double DistanceThreshold, Hlong RandSeed, double* Error, HTuple* Points1, HTuple* Points2);
  274. #endif
  275. // Compute the essential matrix for a pair of stereo images by automatically finding correspondences between image points.
  276. HHomMat2D MatchEssentialMatrixRansac(const HImage& Image1, const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HHomMat2D& CamMat2, const HString& GrayMatchMethod, Hlong MaskSize, Hlong RowMove, Hlong ColMove, Hlong RowTolerance, Hlong ColTolerance, const HTuple& Rotation, const HTuple& MatchThreshold, const HString& EstimationMethod, const HTuple& DistanceThreshold, Hlong RandSeed, HTuple* CovEMat, HTuple* Error, HTuple* Points1, HTuple* Points2) const;
  277. // Compute the essential matrix for a pair of stereo images by automatically finding correspondences between image points.
  278. HHomMat2D MatchEssentialMatrixRansac(const HImage& Image1, const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HHomMat2D& CamMat2, const HString& GrayMatchMethod, Hlong MaskSize, Hlong RowMove, Hlong ColMove, Hlong RowTolerance, Hlong ColTolerance, double Rotation, Hlong MatchThreshold, const HString& EstimationMethod, double DistanceThreshold, Hlong RandSeed, HTuple* CovEMat, double* Error, HTuple* Points1, HTuple* Points2) const;
  279. // Compute the essential matrix for a pair of stereo images by automatically finding correspondences between image points.
  280. HHomMat2D MatchEssentialMatrixRansac(const HImage& Image1, const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HHomMat2D& CamMat2, const char* GrayMatchMethod, Hlong MaskSize, Hlong RowMove, Hlong ColMove, Hlong RowTolerance, Hlong ColTolerance, double Rotation, Hlong MatchThreshold, const char* EstimationMethod, double DistanceThreshold, Hlong RandSeed, HTuple* CovEMat, double* Error, HTuple* Points1, HTuple* Points2) const;
  281. #ifdef _WIN32
  282. // Compute the essential matrix for a pair of stereo images by automatically finding correspondences between image points.
  283. HHomMat2D MatchEssentialMatrixRansac(const HImage& Image1, const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HHomMat2D& CamMat2, const wchar_t* GrayMatchMethod, Hlong MaskSize, Hlong RowMove, Hlong ColMove, Hlong RowTolerance, Hlong ColTolerance, double Rotation, Hlong MatchThreshold, const wchar_t* EstimationMethod, double DistanceThreshold, Hlong RandSeed, HTuple* CovEMat, double* Error, HTuple* Points1, HTuple* Points2) const;
  284. #endif
  285. // Compute the fundamental matrix for a pair of stereo images by automatically finding correspondences between image points.
  286. HTuple MatchFundamentalMatrixRansac(const HImage& Image1, const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HString& GrayMatchMethod, Hlong MaskSize, Hlong RowMove, Hlong ColMove, Hlong RowTolerance, Hlong ColTolerance, const HTuple& Rotation, const HTuple& MatchThreshold, const HString& EstimationMethod, const HTuple& DistanceThreshold, Hlong RandSeed, double* Error, HTuple* Points1, HTuple* Points2);
  287. // Compute the fundamental matrix for a pair of stereo images by automatically finding correspondences between image points.
  288. HTuple MatchFundamentalMatrixRansac(const HImage& Image1, const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HString& GrayMatchMethod, Hlong MaskSize, Hlong RowMove, Hlong ColMove, Hlong RowTolerance, Hlong ColTolerance, double Rotation, Hlong MatchThreshold, const HString& EstimationMethod, double DistanceThreshold, Hlong RandSeed, double* Error, HTuple* Points1, HTuple* Points2);
  289. // Compute the fundamental matrix for a pair of stereo images by automatically finding correspondences between image points.
  290. HTuple MatchFundamentalMatrixRansac(const HImage& Image1, const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const char* GrayMatchMethod, Hlong MaskSize, Hlong RowMove, Hlong ColMove, Hlong RowTolerance, Hlong ColTolerance, double Rotation, Hlong MatchThreshold, const char* EstimationMethod, double DistanceThreshold, Hlong RandSeed, double* Error, HTuple* Points1, HTuple* Points2);
  291. #ifdef _WIN32
  292. // Compute the fundamental matrix for a pair of stereo images by automatically finding correspondences between image points.
  293. HTuple MatchFundamentalMatrixRansac(const HImage& Image1, const HImage& Image2, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const wchar_t* GrayMatchMethod, Hlong MaskSize, Hlong RowMove, Hlong ColMove, Hlong RowTolerance, Hlong ColTolerance, double Rotation, Hlong MatchThreshold, const wchar_t* EstimationMethod, double DistanceThreshold, Hlong RandSeed, double* Error, HTuple* Points1, HTuple* Points2);
  294. #endif
  295. // Apply a projective transformation to a region.
  296. HRegion ProjectiveTransRegion(const HRegion& Regions, const HString& Interpolation) const;
  297. // Apply a projective transformation to a region.
  298. HRegion ProjectiveTransRegion(const HRegion& Regions, const char* Interpolation) const;
  299. #ifdef _WIN32
  300. // Apply a projective transformation to a region.
  301. HRegion ProjectiveTransRegion(const HRegion& Regions, const wchar_t* Interpolation) const;
  302. #endif
  303. // Apply an arbitrary affine 2D transformation to regions.
  304. HRegion AffineTransRegion(const HRegion& Region, const HString& Interpolate) const;
  305. // Apply an arbitrary affine 2D transformation to regions.
  306. HRegion AffineTransRegion(const HRegion& Region, const char* Interpolate) const;
  307. #ifdef _WIN32
  308. // Apply an arbitrary affine 2D transformation to regions.
  309. HRegion AffineTransRegion(const HRegion& Region, const wchar_t* Interpolate) const;
  310. #endif
  311. // Apply a projective transformation to an image and specify the output image size.
  312. HImage ProjectiveTransImageSize(const HImage& Image, const HString& Interpolation, Hlong Width, Hlong Height, const HString& TransformDomain) const;
  313. // Apply a projective transformation to an image and specify the output image size.
  314. HImage ProjectiveTransImageSize(const HImage& Image, const char* Interpolation, Hlong Width, Hlong Height, const char* TransformDomain) const;
  315. #ifdef _WIN32
  316. // Apply a projective transformation to an image and specify the output image size.
  317. HImage ProjectiveTransImageSize(const HImage& Image, const wchar_t* Interpolation, Hlong Width, Hlong Height, const wchar_t* TransformDomain) const;
  318. #endif
  319. // Apply a projective transformation to an image.
  320. HImage ProjectiveTransImage(const HImage& Image, const HString& Interpolation, const HString& AdaptImageSize, const HString& TransformDomain) const;
  321. // Apply a projective transformation to an image.
  322. HImage ProjectiveTransImage(const HImage& Image, const char* Interpolation, const char* AdaptImageSize, const char* TransformDomain) const;
  323. #ifdef _WIN32
  324. // Apply a projective transformation to an image.
  325. HImage ProjectiveTransImage(const HImage& Image, const wchar_t* Interpolation, const wchar_t* AdaptImageSize, const wchar_t* TransformDomain) const;
  326. #endif
  327. // Apply an arbitrary affine 2D transformation to an image and specify the output image size.
  328. HImage AffineTransImageSize(const HImage& Image, const HString& Interpolation, Hlong Width, Hlong Height) const;
  329. // Apply an arbitrary affine 2D transformation to an image and specify the output image size.
  330. HImage AffineTransImageSize(const HImage& Image, const char* Interpolation, Hlong Width, Hlong Height) const;
  331. #ifdef _WIN32
  332. // Apply an arbitrary affine 2D transformation to an image and specify the output image size.
  333. HImage AffineTransImageSize(const HImage& Image, const wchar_t* Interpolation, Hlong Width, Hlong Height) const;
  334. #endif
  335. // Apply an arbitrary affine 2D transformation to images.
  336. HImage AffineTransImage(const HImage& Image, const HString& Interpolation, const HString& AdaptImageSize) const;
  337. // Apply an arbitrary affine 2D transformation to images.
  338. HImage AffineTransImage(const HImage& Image, const char* Interpolation, const char* AdaptImageSize) const;
  339. #ifdef _WIN32
  340. // Apply an arbitrary affine 2D transformation to images.
  341. HImage AffineTransImage(const HImage& Image, const wchar_t* Interpolation, const wchar_t* AdaptImageSize) const;
  342. #endif
  343. // Approximate an affine map from a displacement vector field.
  344. void VectorFieldToHomMat2d(const HImage& VectorField);
  345. // Compute a camera matrix from internal camera parameters.
  346. void CamParToCamMat(const HCamPar& CameraParam, Hlong* ImageWidth, Hlong* ImageHeight);
  347. // Compute the internal camera parameters from a camera matrix.
  348. HCamPar CamMatToCamPar(double Kappa, Hlong ImageWidth, Hlong ImageHeight) const;
  349. // Perform a self-calibration of a stationary projective camera.
  350. static HHomMat2DArray StationaryCameraSelfCalibration(Hlong NumImages, Hlong ImageWidth, Hlong ImageHeight, Hlong ReferenceImage, const HTuple& MappingSource, const HTuple& MappingDest, const HHomMat2DArray& HomMatrices2D, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HTuple& NumCorrespondences, const HString& EstimationMethod, const HTuple& CameraModel, const HString& FixedCameraParams, HTuple* Kappa, HHomMat2DArray* RotationMatrices, HTuple* X, HTuple* Y, HTuple* Z, HTuple* Error);
  351. // Perform a self-calibration of a stationary projective camera.
  352. static HHomMat2DArray StationaryCameraSelfCalibration(Hlong NumImages, Hlong ImageWidth, Hlong ImageHeight, Hlong ReferenceImage, const HTuple& MappingSource, const HTuple& MappingDest, const HHomMat2DArray& HomMatrices2D, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HTuple& NumCorrespondences, const HString& EstimationMethod, const HTuple& CameraModel, const HString& FixedCameraParams, double* Kappa, HHomMat2DArray* RotationMatrices, HTuple* X, HTuple* Y, HTuple* Z, double* Error);
  353. // Perform a self-calibration of a stationary projective camera.
  354. static HHomMat2DArray StationaryCameraSelfCalibration(Hlong NumImages, Hlong ImageWidth, Hlong ImageHeight, Hlong ReferenceImage, const HTuple& MappingSource, const HTuple& MappingDest, const HHomMat2DArray& HomMatrices2D, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HTuple& NumCorrespondences, const char* EstimationMethod, const HTuple& CameraModel, const char* FixedCameraParams, double* Kappa, HHomMat2DArray* RotationMatrices, HTuple* X, HTuple* Y, HTuple* Z, double* Error);
  355. #ifdef _WIN32
  356. // Perform a self-calibration of a stationary projective camera.
  357. static HHomMat2DArray StationaryCameraSelfCalibration(Hlong NumImages, Hlong ImageWidth, Hlong ImageHeight, Hlong ReferenceImage, const HTuple& MappingSource, const HTuple& MappingDest, const HHomMat2DArray& HomMatrices2D, const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HTuple& NumCorrespondences, const wchar_t* EstimationMethod, const HTuple& CameraModel, const wchar_t* FixedCameraParams, double* Kappa, HHomMat2DArray* RotationMatrices, HTuple* X, HTuple* Y, HTuple* Z, double* Error);
  358. #endif
  359. };
  360. class LIntExport HHomMat2DArray : public HDataArray
  361. {
  362. public:
  363. HHomMat2DArray();
  364. HHomMat2DArray(HHomMat2D* classes, Hlong length);
  365. /* Define a default constructor to prevent compilers that support
  366. * C++11 R-Value References v3.0 declaring an implicite move
  367. * assignment/constructor. */
  368. ~HHomMat2DArray() {}
  369. protected:
  370. virtual void CreateArray(Hlong length);
  371. virtual int GetFixedSize() const;
  372. };
  373. }
  374. #endif