3 #include "../_cexports/c_polimago.h" 5 #include "../global.hpp" 6 #include "../value_range.hpp" 7 #include "../angle.hpp" 8 #include "predictor_base.hpp" 9 #include "search_result.hpp" 35 namespace Training {
class SearchPredictorFactory; }
47 CVB_CALL_CAPI (PMGetSearchClfTrainParams (
Handle (), trainingParameters_, searchTrainingParameters_));
48 maxNumResults_ = maxNumResultsDefault_;
52 void InitResultBuffer()
54 pbuffer_.assign (
MaxNumResults (), CExports::TSearchResult ());
58 static CExports::TSCLF LoadInternal (
const String & fileName)
60 CExports::TSCLF predictor =
nullptr;
62 CVB_CALL_CAPI_CHECKED (PMOpenSearchClfTyped(fileName.c_str(), predictor));
66 void SaveFunction (
const String &fileName)
const override 68 CVB_CALL_CAPI_CHECKED (PMSaveSearchClfTyped(fileName.c_str(),
Handle()));
73 return thisObjectName_;
107 if (!guard.Handle ())
132 return maxNumResults_;
142 if (maxNumResults == maxNumResults_)
146 if (maxNumResults < 1)
150 maxNumResults_ = maxNumResults;
161 return searchTrainingParameters_.SampleSize;
178 return searchTrainingParameters_.InvarianceParams.XYRadius;
199 return ValueRange<double>(searchTrainingParameters_.InvarianceParams.MinScaleMinL, searchTrainingParameters_.InvarianceParams.MaxScaleMaxL);
209 return static_cast<InvarianceType>(searchTrainingParameters_.InvarianceParams.InvarianceType);
219 return searchTrainingParameters_.NumClfs;
229 return searchTrainingParameters_.Resolution12;
239 return searchTrainingParameters_.ResolutionRest;
260 VerifyCompatibility(img);
262 CExports::cvbval_t numCallsOut = 0;
263 auto resultCount = CVB_CALL_CAPI (PMGridSearch(
Handle(), img.
Handle(), aoi.
Left(), aoi.
Top(), aoi.
Right(), aoi.
Bottom(), gridStep, threshold, locality, maxNumResults_, &pbuffer_[0], numCallsOut));
264 numCalls = static_cast<int>(numCallsOut);
267 for (decltype(resultCount) i = 0; i < resultCount; ++i)
292 return GridSearch (img, aoi, gridStep, threshold, locality, numCalls);
310 VerifyCompatibility(img);
311 CExports::TSearchResult tmpRes = res.resInternal_;
312 CExports::cvbval_t tmpDepth = searchDepth;
314 auto retval = CVB_CALL_CAPI(PMInspect(
Handle(), img.
Handle(), tmpRes, tmpDepth));
318 searchDepth = static_cast<int>(tmpDepth);
339 VerifyCompatibility(img);
340 CExports::TSearchResult tmpRes = res.resInternal_;
341 CExports::cvbval_t tmpDepth = searchDepth;
342 CExports::TDiagnostics diag = {};
344 auto retval = CVB_CALL_CAPI(PMInspectD(
Handle(), img.
Handle(), tmpRes, tmpDepth, diag));
348 searchDepth = static_cast<int>(tmpDepth);
352 for (
int i = 0; i < searchDepth; ++i)
370 return Internal::DoBoolCallObjectOut<Image>([&](
void* & resimg)
372 return CVB_CALL_CAPI(PMSearchResultToImage(
Handle(), sourceImage.
Handle(), res.resInternal_.G, resimg));
381 static const int maxNumResultsDefault_ = 4096;
382 const std::string thisObjectName_ =
"Polimago Search Predictor";
383 CExports::TTrainSearchParams searchTrainingParameters_;
384 CExports::cvbval_t maxNumResults_;
T Top() const noexcept
Gets first row of the rectangle.
Definition: rect.hpp:111
std::unique_ptr< Image > SearchResultToImage(const Image &sourceImage, SearchResult res)
Create a visual representation of a search result.
Definition: search_predictor.hpp:368
InvarianceType
Invariance types that can be defined for training.
Definition: search_predictor.hpp:22
bool Inspect(const Image &img, SearchResult &res, int &searchDepth, std::vector< SearchResult > &trace)
Carries out the operation that GridSearch executes for a grid point, starting at the perspective and ...
Definition: search_predictor.hpp:337
Base class for Polimago predictors.
Definition: predictor_base.hpp:197
Affine group (i.e. 2x2 matrix plus translation).
std::vector< SearchResult > GridSearch(const Image &img, Rect< int > aoi, double gridStep, double threshold, double locality, int &numCalls)
Perform a grid search.
Definition: search_predictor.hpp:258
SearchPredictor(const String &fileName)
Load a saved Polimago search predictor from a file.
Definition: search_predictor.hpp:82
T Bottom() const noexcept
Gets bottom row of the rectangle (still inside the rectangle).
Definition: rect.hpp:151
static Angle FromRadians(double rad, bool trim=false) noexcept
Create an angle in radians.
Definition: angle.hpp:44
int SampleSize() const noexcept
Get the sample size that has been used in each training set.
Definition: search_predictor.hpp:159
ValueRange< Angle > RotationRange() const noexcept
Get the range of angles that was covered during classifier training.
Definition: search_predictor.hpp:186
T Left() const noexcept
Gets first column of the rectangle.
Definition: rect.hpp:91
void * Handle() const noexcept
Classic API Polimago handle.
Definition: predictor_base.hpp:66
bool Inspect(const Image &img, SearchResult &res, int &searchDepth)
Carries out the operation that GridSearch executes for a grid point, starting at the perspective and ...
Definition: search_predictor.hpp:308
int FeatureResolutionRest() const noexcept
Get the feature resolution to be used for the third and later classification steps.
Definition: search_predictor.hpp:237
Root namespace for the Image Manager interface.
Definition: version.hpp:11
Search results as provided by a Search Classifier.
Definition: search_result.hpp:20
The Common Vision Blox image.
Definition: decl_image.hpp:44
InvarianceType Invariances() const noexcept
Get the invariances that have been trained on this classifier.
Definition: search_predictor.hpp:207
T Right() const noexcept
Gets rightmost column of the rectangle (still inside the rectangle).
Definition: rect.hpp:131
static std::unique_ptr< SearchPredictor > Load(const String &fileName)
Load a saved predictor from a file.
Definition: search_predictor.hpp:120
void * Handle() const noexcept
Classic API image handle.
Definition: decl_image.hpp:223
double ExtractionRadius() const noexcept
Get the radius for extracting positive search instances.
Definition: search_predictor.hpp:176
std::vector< SearchResult > GridSearch(const Image &img, Rect< int > aoi, double gridStep, double threshold, double locality)
Perform a grid search.
Definition: search_predictor.hpp:289
The enum element indicating undefined state.
Predictor that may be used for searching objects.
Definition: search_predictor.hpp:40
Factory class for the generation of search predictors.
Definition: search_predictor_factory.hpp:29
int NumClassificationSteps() const noexcept
Get the number of classification steps defined during training.
Definition: search_predictor.hpp:217
Container for range definitions.
Definition: value_range.hpp:16
int MaxNumResults() const noexcept
Get the maximum number of results that can be extracted in a GridSearch operation.
Definition: search_predictor.hpp:130
ValueRange< double > ScaleRange() const noexcept
Get the range of scale factors that was covered during classifier training.
Definition: search_predictor.hpp:197
int FeatureResolutionStep1And2() const noexcept
Get the feature resolution to be used for the first two classification steps.
Definition: search_predictor.hpp:227
Rotation + Scale + Translation.
void SetMaxNumResults(int maxNumResults)
Set the maximum number of results that can be extracted in a GridSearch operation....
Definition: search_predictor.hpp:140
static std::unique_ptr< SearchPredictor > FromHandle(ReleaseObjectGuard &&guard)
Creates predictor from a classic API handle.
Definition: search_predictor.hpp:105