HShapeModel.h 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476
  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_HSHAPEMODEL
  8. #define HCPP_HSHAPEMODEL
  9. namespace HalconCpp
  10. {
  11. // Represents an instance of a shape model for matching.
  12. class LIntExport HShapeModel : public HHandle
  13. {
  14. public:
  15. // Create an uninitialized instance
  16. HShapeModel():HHandle() {}
  17. // Copy constructor
  18. HShapeModel(const HShapeModel& source) : HHandle(source) {}
  19. // Copy constructor
  20. HShapeModel(const HHandle& handle);
  21. // Create HShapeModel from handle, taking ownership
  22. explicit HShapeModel(Hlong handle);
  23. bool operator==(const HHandle& obj) const
  24. {
  25. return HHandleBase::operator==(obj);
  26. }
  27. bool operator!=(const HHandle& obj) const
  28. {
  29. return HHandleBase::operator!=(obj);
  30. }
  31. protected:
  32. // Verify matching semantic type ('shape_model')!
  33. virtual void AssertType(Hphandle handle) const;
  34. public:
  35. // Deep copy of all data represented by this object instance
  36. HShapeModel Clone() const;
  37. /*****************************************************************************
  38. * Operator-based class constructors
  39. *****************************************************************************/
  40. // read_shape_model: Read a shape model from a file.
  41. explicit HShapeModel(const HString& FileName);
  42. // read_shape_model: Read a shape model from a file.
  43. explicit HShapeModel(const char* FileName);
  44. #ifdef _WIN32
  45. // read_shape_model: Read a shape model from a file.
  46. explicit HShapeModel(const wchar_t* FileName);
  47. #endif
  48. // create_aniso_shape_model_xld: Prepare an anisotropically scaled shape model for matching from XLD contours.
  49. explicit HShapeModel(const HXLDCont& Contours, const HTuple& NumLevels, double AngleStart, double AngleExtent, const HTuple& AngleStep, double ScaleRMin, double ScaleRMax, const HTuple& ScaleRStep, double ScaleCMin, double ScaleCMax, const HTuple& ScaleCStep, const HTuple& Optimization, const HString& Metric, Hlong MinContrast);
  50. // create_aniso_shape_model_xld: Prepare an anisotropically scaled shape model for matching from XLD contours.
  51. explicit HShapeModel(const HXLDCont& Contours, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, double ScaleRMin, double ScaleRMax, double ScaleRStep, double ScaleCMin, double ScaleCMax, double ScaleCStep, const HString& Optimization, const HString& Metric, Hlong MinContrast);
  52. // create_aniso_shape_model_xld: Prepare an anisotropically scaled shape model for matching from XLD contours.
  53. explicit HShapeModel(const HXLDCont& Contours, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, double ScaleRMin, double ScaleRMax, double ScaleRStep, double ScaleCMin, double ScaleCMax, double ScaleCStep, const char* Optimization, const char* Metric, Hlong MinContrast);
  54. #ifdef _WIN32
  55. // create_aniso_shape_model_xld: Prepare an anisotropically scaled shape model for matching from XLD contours.
  56. explicit HShapeModel(const HXLDCont& Contours, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, double ScaleRMin, double ScaleRMax, double ScaleRStep, double ScaleCMin, double ScaleCMax, double ScaleCStep, const wchar_t* Optimization, const wchar_t* Metric, Hlong MinContrast);
  57. #endif
  58. // create_scaled_shape_model_xld: Prepare an isotropically scaled shape model for matching from XLD contours.
  59. explicit HShapeModel(const HXLDCont& Contours, const HTuple& NumLevels, double AngleStart, double AngleExtent, const HTuple& AngleStep, double ScaleMin, double ScaleMax, const HTuple& ScaleStep, const HTuple& Optimization, const HString& Metric, Hlong MinContrast);
  60. // create_scaled_shape_model_xld: Prepare an isotropically scaled shape model for matching from XLD contours.
  61. explicit HShapeModel(const HXLDCont& Contours, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, double ScaleMin, double ScaleMax, double ScaleStep, const HString& Optimization, const HString& Metric, Hlong MinContrast);
  62. // create_scaled_shape_model_xld: Prepare an isotropically scaled shape model for matching from XLD contours.
  63. explicit HShapeModel(const HXLDCont& Contours, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, double ScaleMin, double ScaleMax, double ScaleStep, const char* Optimization, const char* Metric, Hlong MinContrast);
  64. #ifdef _WIN32
  65. // create_scaled_shape_model_xld: Prepare an isotropically scaled shape model for matching from XLD contours.
  66. explicit HShapeModel(const HXLDCont& Contours, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, double ScaleMin, double ScaleMax, double ScaleStep, const wchar_t* Optimization, const wchar_t* Metric, Hlong MinContrast);
  67. #endif
  68. // create_shape_model_xld: Prepare a shape model for matching from XLD contours.
  69. explicit HShapeModel(const HXLDCont& Contours, const HTuple& NumLevels, double AngleStart, double AngleExtent, const HTuple& AngleStep, const HTuple& Optimization, const HString& Metric, Hlong MinContrast);
  70. // create_shape_model_xld: Prepare a shape model for matching from XLD contours.
  71. explicit HShapeModel(const HXLDCont& Contours, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, const HString& Optimization, const HString& Metric, Hlong MinContrast);
  72. // create_shape_model_xld: Prepare a shape model for matching from XLD contours.
  73. explicit HShapeModel(const HXLDCont& Contours, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, const char* Optimization, const char* Metric, Hlong MinContrast);
  74. #ifdef _WIN32
  75. // create_shape_model_xld: Prepare a shape model for matching from XLD contours.
  76. explicit HShapeModel(const HXLDCont& Contours, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, const wchar_t* Optimization, const wchar_t* Metric, Hlong MinContrast);
  77. #endif
  78. // create_aniso_shape_model: Prepare an anisotropically scaled shape model for matching.
  79. explicit HShapeModel(const HImage& Template, const HTuple& NumLevels, double AngleStart, double AngleExtent, const HTuple& AngleStep, double ScaleRMin, double ScaleRMax, const HTuple& ScaleRStep, double ScaleCMin, double ScaleCMax, const HTuple& ScaleCStep, const HTuple& Optimization, const HString& Metric, const HTuple& Contrast, const HTuple& MinContrast);
  80. // create_aniso_shape_model: Prepare an anisotropically scaled shape model for matching.
  81. explicit HShapeModel(const HImage& Template, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, double ScaleRMin, double ScaleRMax, double ScaleRStep, double ScaleCMin, double ScaleCMax, double ScaleCStep, const HString& Optimization, const HString& Metric, Hlong Contrast, Hlong MinContrast);
  82. // create_aniso_shape_model: Prepare an anisotropically scaled shape model for matching.
  83. explicit HShapeModel(const HImage& Template, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, double ScaleRMin, double ScaleRMax, double ScaleRStep, double ScaleCMin, double ScaleCMax, double ScaleCStep, const char* Optimization, const char* Metric, Hlong Contrast, Hlong MinContrast);
  84. #ifdef _WIN32
  85. // create_aniso_shape_model: Prepare an anisotropically scaled shape model for matching.
  86. explicit HShapeModel(const HImage& Template, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, double ScaleRMin, double ScaleRMax, double ScaleRStep, double ScaleCMin, double ScaleCMax, double ScaleCStep, const wchar_t* Optimization, const wchar_t* Metric, Hlong Contrast, Hlong MinContrast);
  87. #endif
  88. // create_scaled_shape_model: Prepare an isotropically scaled shape model for matching.
  89. explicit HShapeModel(const HImage& Template, const HTuple& NumLevels, double AngleStart, double AngleExtent, const HTuple& AngleStep, double ScaleMin, double ScaleMax, const HTuple& ScaleStep, const HTuple& Optimization, const HString& Metric, const HTuple& Contrast, const HTuple& MinContrast);
  90. // create_scaled_shape_model: Prepare an isotropically scaled shape model for matching.
  91. explicit HShapeModel(const HImage& Template, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, double ScaleMin, double ScaleMax, double ScaleStep, const HString& Optimization, const HString& Metric, Hlong Contrast, Hlong MinContrast);
  92. // create_scaled_shape_model: Prepare an isotropically scaled shape model for matching.
  93. explicit HShapeModel(const HImage& Template, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, double ScaleMin, double ScaleMax, double ScaleStep, const char* Optimization, const char* Metric, Hlong Contrast, Hlong MinContrast);
  94. #ifdef _WIN32
  95. // create_scaled_shape_model: Prepare an isotropically scaled shape model for matching.
  96. explicit HShapeModel(const HImage& Template, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, double ScaleMin, double ScaleMax, double ScaleStep, const wchar_t* Optimization, const wchar_t* Metric, Hlong Contrast, Hlong MinContrast);
  97. #endif
  98. // create_shape_model: Prepare a shape model for matching.
  99. explicit HShapeModel(const HImage& Template, const HTuple& NumLevels, double AngleStart, double AngleExtent, const HTuple& AngleStep, const HTuple& Optimization, const HString& Metric, const HTuple& Contrast, const HTuple& MinContrast);
  100. // create_shape_model: Prepare a shape model for matching.
  101. explicit HShapeModel(const HImage& Template, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, const HString& Optimization, const HString& Metric, Hlong Contrast, Hlong MinContrast);
  102. // create_shape_model: Prepare a shape model for matching.
  103. explicit HShapeModel(const HImage& Template, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, const char* Optimization, const char* Metric, Hlong Contrast, Hlong MinContrast);
  104. #ifdef _WIN32
  105. // create_shape_model: Prepare a shape model for matching.
  106. explicit HShapeModel(const HImage& Template, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, const wchar_t* Optimization, const wchar_t* Metric, Hlong Contrast, Hlong MinContrast);
  107. #endif
  108. /***************************************************************************
  109. * Operators *
  110. ***************************************************************************/
  111. // Deserialize a serialized shape model.
  112. void DeserializeShapeModel(const HSerializedItem& SerializedItemHandle);
  113. // Read a shape model from a file.
  114. void ReadShapeModel(const HString& FileName);
  115. // Read a shape model from a file.
  116. void ReadShapeModel(const char* FileName);
  117. #ifdef _WIN32
  118. // Read a shape model from a file.
  119. void ReadShapeModel(const wchar_t* FileName);
  120. #endif
  121. // Serialize a shape model.
  122. HSerializedItem SerializeShapeModel() const;
  123. // Write a shape model to a file.
  124. void WriteShapeModel(const HString& FileName) const;
  125. // Write a shape model to a file.
  126. void WriteShapeModel(const char* FileName) const;
  127. #ifdef _WIN32
  128. // Write a shape model to a file.
  129. void WriteShapeModel(const wchar_t* FileName) const;
  130. #endif
  131. // Free the memory of a shape model.
  132. void ClearShapeModel() const;
  133. // Return the contour representation of a shape model.
  134. HXLDCont GetShapeModelContours(Hlong Level) const;
  135. // Return the parameters of a shape model.
  136. HTuple GetShapeModelParams(double* AngleStart, double* AngleExtent, double* AngleStep, HTuple* ScaleMin, HTuple* ScaleMax, HTuple* ScaleStep, HString* Metric, Hlong* MinContrast) const;
  137. // Return the parameters of a shape model.
  138. Hlong GetShapeModelParams(double* AngleStart, double* AngleExtent, double* AngleStep, double* ScaleMin, double* ScaleMax, double* ScaleStep, HString* Metric, Hlong* MinContrast) const;
  139. // Return the origin (reference point) of a shape model.
  140. void GetShapeModelOrigin(double* Row, double* Column) const;
  141. // Set the origin (reference point) of a shape model.
  142. void SetShapeModelOrigin(double Row, double Column) const;
  143. // Find the best matches of multiple anisotropically scaled shape models.
  144. static void FindAnisoShapeModels(const HImage& Image, const HShapeModelArray& ModelIDs, const HTuple& AngleStart, const HTuple& AngleExtent, const HTuple& ScaleRMin, const HTuple& ScaleRMax, const HTuple& ScaleCMin, const HTuple& ScaleCMax, const HTuple& MinScore, const HTuple& NumMatches, const HTuple& MaxOverlap, const HTuple& SubPixel, const HTuple& NumLevels, const HTuple& Greediness, HTuple* Row, HTuple* Column, HTuple* Angle, HTuple* ScaleR, HTuple* ScaleC, HTuple* Score, HTuple* Model);
  145. // Find the best matches of multiple anisotropically scaled shape models.
  146. void FindAnisoShapeModels(const HImage& Image, double AngleStart, double AngleExtent, double ScaleRMin, double ScaleRMax, double ScaleCMin, double ScaleCMax, double MinScore, Hlong NumMatches, double MaxOverlap, const HString& SubPixel, Hlong NumLevels, double Greediness, HTuple* Row, HTuple* Column, HTuple* Angle, HTuple* ScaleR, HTuple* ScaleC, HTuple* Score, HTuple* Model) const;
  147. // Find the best matches of multiple anisotropically scaled shape models.
  148. void FindAnisoShapeModels(const HImage& Image, double AngleStart, double AngleExtent, double ScaleRMin, double ScaleRMax, double ScaleCMin, double ScaleCMax, double MinScore, Hlong NumMatches, double MaxOverlap, const char* SubPixel, Hlong NumLevels, double Greediness, HTuple* Row, HTuple* Column, HTuple* Angle, HTuple* ScaleR, HTuple* ScaleC, HTuple* Score, HTuple* Model) const;
  149. #ifdef _WIN32
  150. // Find the best matches of multiple anisotropically scaled shape models.
  151. void FindAnisoShapeModels(const HImage& Image, double AngleStart, double AngleExtent, double ScaleRMin, double ScaleRMax, double ScaleCMin, double ScaleCMax, double MinScore, Hlong NumMatches, double MaxOverlap, const wchar_t* SubPixel, Hlong NumLevels, double Greediness, HTuple* Row, HTuple* Column, HTuple* Angle, HTuple* ScaleR, HTuple* ScaleC, HTuple* Score, HTuple* Model) const;
  152. #endif
  153. // Find the best matches of multiple isotropically scaled shape models.
  154. static void FindScaledShapeModels(const HImage& Image, const HShapeModelArray& ModelIDs, const HTuple& AngleStart, const HTuple& AngleExtent, const HTuple& ScaleMin, const HTuple& ScaleMax, const HTuple& MinScore, const HTuple& NumMatches, const HTuple& MaxOverlap, const HTuple& SubPixel, const HTuple& NumLevels, const HTuple& Greediness, HTuple* Row, HTuple* Column, HTuple* Angle, HTuple* Scale, HTuple* Score, HTuple* Model);
  155. // Find the best matches of multiple isotropically scaled shape models.
  156. void FindScaledShapeModels(const HImage& Image, double AngleStart, double AngleExtent, double ScaleMin, double ScaleMax, double MinScore, Hlong NumMatches, double MaxOverlap, const HString& SubPixel, Hlong NumLevels, double Greediness, HTuple* Row, HTuple* Column, HTuple* Angle, HTuple* Scale, HTuple* Score, HTuple* Model) const;
  157. // Find the best matches of multiple isotropically scaled shape models.
  158. void FindScaledShapeModels(const HImage& Image, double AngleStart, double AngleExtent, double ScaleMin, double ScaleMax, double MinScore, Hlong NumMatches, double MaxOverlap, const char* SubPixel, Hlong NumLevels, double Greediness, HTuple* Row, HTuple* Column, HTuple* Angle, HTuple* Scale, HTuple* Score, HTuple* Model) const;
  159. #ifdef _WIN32
  160. // Find the best matches of multiple isotropically scaled shape models.
  161. void FindScaledShapeModels(const HImage& Image, double AngleStart, double AngleExtent, double ScaleMin, double ScaleMax, double MinScore, Hlong NumMatches, double MaxOverlap, const wchar_t* SubPixel, Hlong NumLevels, double Greediness, HTuple* Row, HTuple* Column, HTuple* Angle, HTuple* Scale, HTuple* Score, HTuple* Model) const;
  162. #endif
  163. // Find the best matches of multiple shape models.
  164. static void FindShapeModels(const HImage& Image, const HShapeModelArray& ModelIDs, const HTuple& AngleStart, const HTuple& AngleExtent, const HTuple& MinScore, const HTuple& NumMatches, const HTuple& MaxOverlap, const HTuple& SubPixel, const HTuple& NumLevels, const HTuple& Greediness, HTuple* Row, HTuple* Column, HTuple* Angle, HTuple* Score, HTuple* Model);
  165. // Find the best matches of multiple shape models.
  166. void FindShapeModels(const HImage& Image, double AngleStart, double AngleExtent, double MinScore, Hlong NumMatches, double MaxOverlap, const HString& SubPixel, Hlong NumLevels, double Greediness, HTuple* Row, HTuple* Column, HTuple* Angle, HTuple* Score, HTuple* Model) const;
  167. // Find the best matches of multiple shape models.
  168. void FindShapeModels(const HImage& Image, double AngleStart, double AngleExtent, double MinScore, Hlong NumMatches, double MaxOverlap, const char* SubPixel, Hlong NumLevels, double Greediness, HTuple* Row, HTuple* Column, HTuple* Angle, HTuple* Score, HTuple* Model) const;
  169. #ifdef _WIN32
  170. // Find the best matches of multiple shape models.
  171. void FindShapeModels(const HImage& Image, double AngleStart, double AngleExtent, double MinScore, Hlong NumMatches, double MaxOverlap, const wchar_t* SubPixel, Hlong NumLevels, double Greediness, HTuple* Row, HTuple* Column, HTuple* Angle, HTuple* Score, HTuple* Model) const;
  172. #endif
  173. // Find the best matches of an anisotropically scaled shape model in an image.
  174. void FindAnisoShapeModel(const HImage& Image, double AngleStart, double AngleExtent, double ScaleRMin, double ScaleRMax, double ScaleCMin, double ScaleCMax, const HTuple& MinScore, Hlong NumMatches, double MaxOverlap, const HTuple& SubPixel, const HTuple& NumLevels, double Greediness, HTuple* Row, HTuple* Column, HTuple* Angle, HTuple* ScaleR, HTuple* ScaleC, HTuple* Score) const;
  175. // Find the best matches of an anisotropically scaled shape model in an image.
  176. void FindAnisoShapeModel(const HImage& Image, double AngleStart, double AngleExtent, double ScaleRMin, double ScaleRMax, double ScaleCMin, double ScaleCMax, double MinScore, Hlong NumMatches, double MaxOverlap, const HString& SubPixel, Hlong NumLevels, double Greediness, HTuple* Row, HTuple* Column, HTuple* Angle, HTuple* ScaleR, HTuple* ScaleC, HTuple* Score) const;
  177. // Find the best matches of an anisotropically scaled shape model in an image.
  178. void FindAnisoShapeModel(const HImage& Image, double AngleStart, double AngleExtent, double ScaleRMin, double ScaleRMax, double ScaleCMin, double ScaleCMax, double MinScore, Hlong NumMatches, double MaxOverlap, const char* SubPixel, Hlong NumLevels, double Greediness, HTuple* Row, HTuple* Column, HTuple* Angle, HTuple* ScaleR, HTuple* ScaleC, HTuple* Score) const;
  179. #ifdef _WIN32
  180. // Find the best matches of an anisotropically scaled shape model in an image.
  181. void FindAnisoShapeModel(const HImage& Image, double AngleStart, double AngleExtent, double ScaleRMin, double ScaleRMax, double ScaleCMin, double ScaleCMax, double MinScore, Hlong NumMatches, double MaxOverlap, const wchar_t* SubPixel, Hlong NumLevels, double Greediness, HTuple* Row, HTuple* Column, HTuple* Angle, HTuple* ScaleR, HTuple* ScaleC, HTuple* Score) const;
  182. #endif
  183. // Find the best matches of an isotropically scaled shape model in an image.
  184. void FindScaledShapeModel(const HImage& Image, double AngleStart, double AngleExtent, double ScaleMin, double ScaleMax, const HTuple& MinScore, Hlong NumMatches, double MaxOverlap, const HTuple& SubPixel, const HTuple& NumLevels, double Greediness, HTuple* Row, HTuple* Column, HTuple* Angle, HTuple* Scale, HTuple* Score) const;
  185. // Find the best matches of an isotropically scaled shape model in an image.
  186. void FindScaledShapeModel(const HImage& Image, double AngleStart, double AngleExtent, double ScaleMin, double ScaleMax, double MinScore, Hlong NumMatches, double MaxOverlap, const HString& SubPixel, Hlong NumLevels, double Greediness, HTuple* Row, HTuple* Column, HTuple* Angle, HTuple* Scale, HTuple* Score) const;
  187. // Find the best matches of an isotropically scaled shape model in an image.
  188. void FindScaledShapeModel(const HImage& Image, double AngleStart, double AngleExtent, double ScaleMin, double ScaleMax, double MinScore, Hlong NumMatches, double MaxOverlap, const char* SubPixel, Hlong NumLevels, double Greediness, HTuple* Row, HTuple* Column, HTuple* Angle, HTuple* Scale, HTuple* Score) const;
  189. #ifdef _WIN32
  190. // Find the best matches of an isotropically scaled shape model in an image.
  191. void FindScaledShapeModel(const HImage& Image, double AngleStart, double AngleExtent, double ScaleMin, double ScaleMax, double MinScore, Hlong NumMatches, double MaxOverlap, const wchar_t* SubPixel, Hlong NumLevels, double Greediness, HTuple* Row, HTuple* Column, HTuple* Angle, HTuple* Scale, HTuple* Score) const;
  192. #endif
  193. // Find the best matches of a shape model in an image.
  194. void FindShapeModel(const HImage& Image, double AngleStart, double AngleExtent, const HTuple& MinScore, Hlong NumMatches, double MaxOverlap, const HTuple& SubPixel, const HTuple& NumLevels, double Greediness, HTuple* Row, HTuple* Column, HTuple* Angle, HTuple* Score) const;
  195. // Find the best matches of a shape model in an image.
  196. void FindShapeModel(const HImage& Image, double AngleStart, double AngleExtent, double MinScore, Hlong NumMatches, double MaxOverlap, const HString& SubPixel, Hlong NumLevels, double Greediness, HTuple* Row, HTuple* Column, HTuple* Angle, HTuple* Score) const;
  197. // Find the best matches of a shape model in an image.
  198. void FindShapeModel(const HImage& Image, double AngleStart, double AngleExtent, double MinScore, Hlong NumMatches, double MaxOverlap, const char* SubPixel, Hlong NumLevels, double Greediness, HTuple* Row, HTuple* Column, HTuple* Angle, HTuple* Score) const;
  199. #ifdef _WIN32
  200. // Find the best matches of a shape model in an image.
  201. void FindShapeModel(const HImage& Image, double AngleStart, double AngleExtent, double MinScore, Hlong NumMatches, double MaxOverlap, const wchar_t* SubPixel, Hlong NumLevels, double Greediness, HTuple* Row, HTuple* Column, HTuple* Angle, HTuple* Score) const;
  202. #endif
  203. // Set the metric of a shape model that was created from XLD contours.
  204. void SetShapeModelMetric(const HImage& Image, const HHomMat2D& HomMat2D, const HString& Metric) const;
  205. // Set the metric of a shape model that was created from XLD contours.
  206. void SetShapeModelMetric(const HImage& Image, const HHomMat2D& HomMat2D, const char* Metric) const;
  207. #ifdef _WIN32
  208. // Set the metric of a shape model that was created from XLD contours.
  209. void SetShapeModelMetric(const HImage& Image, const HHomMat2D& HomMat2D, const wchar_t* Metric) const;
  210. #endif
  211. // Set selected parameters of the shape model.
  212. void SetShapeModelParam(const HTuple& GenParamName, const HTuple& GenParamValue) const;
  213. // Prepare an anisotropically scaled shape model for matching from XLD contours.
  214. void CreateAnisoShapeModelXld(const HXLDCont& Contours, const HTuple& NumLevels, double AngleStart, double AngleExtent, const HTuple& AngleStep, double ScaleRMin, double ScaleRMax, const HTuple& ScaleRStep, double ScaleCMin, double ScaleCMax, const HTuple& ScaleCStep, const HTuple& Optimization, const HString& Metric, Hlong MinContrast);
  215. // Prepare an anisotropically scaled shape model for matching from XLD contours.
  216. void CreateAnisoShapeModelXld(const HXLDCont& Contours, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, double ScaleRMin, double ScaleRMax, double ScaleRStep, double ScaleCMin, double ScaleCMax, double ScaleCStep, const HString& Optimization, const HString& Metric, Hlong MinContrast);
  217. // Prepare an anisotropically scaled shape model for matching from XLD contours.
  218. void CreateAnisoShapeModelXld(const HXLDCont& Contours, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, double ScaleRMin, double ScaleRMax, double ScaleRStep, double ScaleCMin, double ScaleCMax, double ScaleCStep, const char* Optimization, const char* Metric, Hlong MinContrast);
  219. #ifdef _WIN32
  220. // Prepare an anisotropically scaled shape model for matching from XLD contours.
  221. void CreateAnisoShapeModelXld(const HXLDCont& Contours, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, double ScaleRMin, double ScaleRMax, double ScaleRStep, double ScaleCMin, double ScaleCMax, double ScaleCStep, const wchar_t* Optimization, const wchar_t* Metric, Hlong MinContrast);
  222. #endif
  223. // Prepare an isotropically scaled shape model for matching from XLD contours.
  224. void CreateScaledShapeModelXld(const HXLDCont& Contours, const HTuple& NumLevels, double AngleStart, double AngleExtent, const HTuple& AngleStep, double ScaleMin, double ScaleMax, const HTuple& ScaleStep, const HTuple& Optimization, const HString& Metric, Hlong MinContrast);
  225. // Prepare an isotropically scaled shape model for matching from XLD contours.
  226. void CreateScaledShapeModelXld(const HXLDCont& Contours, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, double ScaleMin, double ScaleMax, double ScaleStep, const HString& Optimization, const HString& Metric, Hlong MinContrast);
  227. // Prepare an isotropically scaled shape model for matching from XLD contours.
  228. void CreateScaledShapeModelXld(const HXLDCont& Contours, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, double ScaleMin, double ScaleMax, double ScaleStep, const char* Optimization, const char* Metric, Hlong MinContrast);
  229. #ifdef _WIN32
  230. // Prepare an isotropically scaled shape model for matching from XLD contours.
  231. void CreateScaledShapeModelXld(const HXLDCont& Contours, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, double ScaleMin, double ScaleMax, double ScaleStep, const wchar_t* Optimization, const wchar_t* Metric, Hlong MinContrast);
  232. #endif
  233. // Prepare a shape model for matching from XLD contours.
  234. void CreateShapeModelXld(const HXLDCont& Contours, const HTuple& NumLevels, double AngleStart, double AngleExtent, const HTuple& AngleStep, const HTuple& Optimization, const HString& Metric, Hlong MinContrast);
  235. // Prepare a shape model for matching from XLD contours.
  236. void CreateShapeModelXld(const HXLDCont& Contours, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, const HString& Optimization, const HString& Metric, Hlong MinContrast);
  237. // Prepare a shape model for matching from XLD contours.
  238. void CreateShapeModelXld(const HXLDCont& Contours, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, const char* Optimization, const char* Metric, Hlong MinContrast);
  239. #ifdef _WIN32
  240. // Prepare a shape model for matching from XLD contours.
  241. void CreateShapeModelXld(const HXLDCont& Contours, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, const wchar_t* Optimization, const wchar_t* Metric, Hlong MinContrast);
  242. #endif
  243. // Prepare an anisotropically scaled shape model for matching.
  244. void CreateAnisoShapeModel(const HImage& Template, const HTuple& NumLevels, double AngleStart, double AngleExtent, const HTuple& AngleStep, double ScaleRMin, double ScaleRMax, const HTuple& ScaleRStep, double ScaleCMin, double ScaleCMax, const HTuple& ScaleCStep, const HTuple& Optimization, const HString& Metric, const HTuple& Contrast, const HTuple& MinContrast);
  245. // Prepare an anisotropically scaled shape model for matching.
  246. void CreateAnisoShapeModel(const HImage& Template, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, double ScaleRMin, double ScaleRMax, double ScaleRStep, double ScaleCMin, double ScaleCMax, double ScaleCStep, const HString& Optimization, const HString& Metric, Hlong Contrast, Hlong MinContrast);
  247. // Prepare an anisotropically scaled shape model for matching.
  248. void CreateAnisoShapeModel(const HImage& Template, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, double ScaleRMin, double ScaleRMax, double ScaleRStep, double ScaleCMin, double ScaleCMax, double ScaleCStep, const char* Optimization, const char* Metric, Hlong Contrast, Hlong MinContrast);
  249. #ifdef _WIN32
  250. // Prepare an anisotropically scaled shape model for matching.
  251. void CreateAnisoShapeModel(const HImage& Template, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, double ScaleRMin, double ScaleRMax, double ScaleRStep, double ScaleCMin, double ScaleCMax, double ScaleCStep, const wchar_t* Optimization, const wchar_t* Metric, Hlong Contrast, Hlong MinContrast);
  252. #endif
  253. // Prepare an isotropically scaled shape model for matching.
  254. void CreateScaledShapeModel(const HImage& Template, const HTuple& NumLevels, double AngleStart, double AngleExtent, const HTuple& AngleStep, double ScaleMin, double ScaleMax, const HTuple& ScaleStep, const HTuple& Optimization, const HString& Metric, const HTuple& Contrast, const HTuple& MinContrast);
  255. // Prepare an isotropically scaled shape model for matching.
  256. void CreateScaledShapeModel(const HImage& Template, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, double ScaleMin, double ScaleMax, double ScaleStep, const HString& Optimization, const HString& Metric, Hlong Contrast, Hlong MinContrast);
  257. // Prepare an isotropically scaled shape model for matching.
  258. void CreateScaledShapeModel(const HImage& Template, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, double ScaleMin, double ScaleMax, double ScaleStep, const char* Optimization, const char* Metric, Hlong Contrast, Hlong MinContrast);
  259. #ifdef _WIN32
  260. // Prepare an isotropically scaled shape model for matching.
  261. void CreateScaledShapeModel(const HImage& Template, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, double ScaleMin, double ScaleMax, double ScaleStep, const wchar_t* Optimization, const wchar_t* Metric, Hlong Contrast, Hlong MinContrast);
  262. #endif
  263. // Prepare a shape model for matching.
  264. void CreateShapeModel(const HImage& Template, const HTuple& NumLevels, double AngleStart, double AngleExtent, const HTuple& AngleStep, const HTuple& Optimization, const HString& Metric, const HTuple& Contrast, const HTuple& MinContrast);
  265. // Prepare a shape model for matching.
  266. void CreateShapeModel(const HImage& Template, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, const HString& Optimization, const HString& Metric, Hlong Contrast, Hlong MinContrast);
  267. // Prepare a shape model for matching.
  268. void CreateShapeModel(const HImage& Template, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, const char* Optimization, const char* Metric, Hlong Contrast, Hlong MinContrast);
  269. #ifdef _WIN32
  270. // Prepare a shape model for matching.
  271. void CreateShapeModel(const HImage& Template, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, const wchar_t* Optimization, const wchar_t* Metric, Hlong Contrast, Hlong MinContrast);
  272. #endif
  273. // Get the clutter parameters of a shape model.
  274. HRegion GetShapeModelClutter(const HTuple& GenParamName, HTuple* GenParamValue, HHomMat2D* HomMat2D, Hlong* ClutterContrast) const;
  275. // Get the clutter parameters of a shape model.
  276. HRegion GetShapeModelClutter(const HString& GenParamName, HString* GenParamValue, HHomMat2D* HomMat2D, Hlong* ClutterContrast) const;
  277. // Get the clutter parameters of a shape model.
  278. HRegion GetShapeModelClutter(const char* GenParamName, HString* GenParamValue, HHomMat2D* HomMat2D, Hlong* ClutterContrast) const;
  279. #ifdef _WIN32
  280. // Get the clutter parameters of a shape model.
  281. HRegion GetShapeModelClutter(const wchar_t* GenParamName, HString* GenParamValue, HHomMat2D* HomMat2D, Hlong* ClutterContrast) const;
  282. #endif
  283. // Set the clutter parameters of a shape model.
  284. void SetShapeModelClutter(const HRegion& ClutterRegion, const HHomMat2D& HomMat2D, Hlong ClutterContrast, const HTuple& GenParamName, const HTuple& GenParamValue) const;
  285. // Set the clutter parameters of a shape model.
  286. void SetShapeModelClutter(const HRegion& ClutterRegion, const HHomMat2D& HomMat2D, Hlong ClutterContrast, const HString& GenParamName, double GenParamValue) const;
  287. // Set the clutter parameters of a shape model.
  288. void SetShapeModelClutter(const HRegion& ClutterRegion, const HHomMat2D& HomMat2D, Hlong ClutterContrast, const char* GenParamName, double GenParamValue) const;
  289. #ifdef _WIN32
  290. // Set the clutter parameters of a shape model.
  291. void SetShapeModelClutter(const HRegion& ClutterRegion, const HHomMat2D& HomMat2D, Hlong ClutterContrast, const wchar_t* GenParamName, double GenParamValue) const;
  292. #endif
  293. // Adapt a shape model's parameters for high noise images.
  294. HDict AdaptShapeModelHighNoise(const HImage& ImageReduced, const HTuple& GenParam) const;
  295. };
  296. // forward declarations and types for internal array implementation
  297. template<class T> class HSmartPtr;
  298. template<class T> class HHandleBaseArrayRef;
  299. typedef HHandleBaseArrayRef<HShapeModel> HShapeModelArrayRef;
  300. typedef HSmartPtr< HShapeModelArrayRef > HShapeModelArrayPtr;
  301. // Represents multiple tool instances
  302. class LIntExport HShapeModelArray : public HHandleBaseArray
  303. {
  304. public:
  305. // Create empty array
  306. HShapeModelArray();
  307. // Create array from native array of tool instances
  308. HShapeModelArray(HShapeModel* classes, Hlong length);
  309. // Copy constructor
  310. HShapeModelArray(const HShapeModelArray &tool_array);
  311. // Destructor
  312. virtual ~HShapeModelArray();
  313. // Assignment operator
  314. HShapeModelArray &operator=(const HShapeModelArray &tool_array);
  315. // Clears array and all tool instances
  316. virtual void Clear();
  317. // Get array of native tool instances
  318. const HShapeModel* Tools() const;
  319. // Get number of tools
  320. virtual Hlong Length() const;
  321. // Create tool array from tuple of handles
  322. virtual void SetFromTuple(const HTuple& handles);
  323. // Get tuple of handles for tool array
  324. virtual HTuple ConvertToTuple() const;
  325. protected:
  326. // Smart pointer to internal data container
  327. HShapeModelArrayPtr *mArrayPtr;
  328. };
  329. }
  330. #endif