FLImaging 7.8.25.3
PatternMatch.h
1#pragma once
2
18
19#include "DefinitionsAdvancedFunctions.h"
20#include "AlgorithmFeature_SR_LI_LR_LP.h"
21#include "ReportDescriptorForMatch.h"
22
24namespace FLImaging
25{
27 namespace AdvancedFunctions
28 {
29 class CInternalPatternMatch;
30
46 class FL_EXPORT CPatternMatch : public CAlgorithmFeature_SR_LI_LR_LP
47 {
48 public:
56 struct FL_EXPORT SResult
57 {
66
74 virtual ~SResult();
75
83 SResult(const SResult& pmr);
84
92 SResult(const SResult* pPmr);
93
101 const SResult& operator=(const SResult& pmr);
102
116 virtual const CResult Assign(const SResult& pmr);
117
131 virtual const CResult Assign(const SResult* pPmr);
132
140 virtual const CResult Clear();
141
149 float f32Score;
150
158 float f32Angle;
159
167 float f32Scale;
168
179
190 }
191 ;
192
201 {
207
213
219
225
231
237
243
249 };
250
258 {
264
270 };
271
280 {
289
298
307
316
325
334
343
352
361
370
379
388
397
406
415
424 };
425
435 {
444
453
462 };
463
472
481
490
498 virtual ~CPatternMatch();
499
508
522 virtual const CResult Assign(const CPatternMatch& aib);
523
537 virtual const CResult Assign(const CPatternMatch* pAib);
538
550 virtual const CResult Clear();
551
552
564 virtual const CResult ClearLearnedData();
565
585 virtual const CResult GetLearnedImage(Base::CFLImage& fliImage, bool bIncludeFigure = false) const;
586
604 virtual const CResult GetLearnedImageRaw(Base::CFLImage& fliImage) const;
605
619 virtual const CResult SetMaxObject(int64_t i64MaxObject = 1);
620
630 virtual int64_t GetMaxObject() const;
631
645 virtual const CResult SetMinimumDetectionScore(double f64Score = .5);
646
656 virtual double GetMinimumDetectionScore() const;
657
673 virtual const CResult SetScaleRange(double f64ScaleMin = 1., double f64ScaleMax = 1.);
674
690 virtual const CResult GetScaleRange(double& f64ScaleMin, double& f64ScaleMax) const;
691
705 virtual const CResult SetAngleBias(double f64AngleBias = .0);
706
716 virtual double GetAngleBias() const;
717
731 virtual const CResult SetAngleTolerance(double f64AngleTolerance = .0);
732
742 virtual double GetAngleTolerance() const;
743
757 virtual const CResult SetAccuracy(double f64Accuracy = 0.5);
758
768 virtual double GetAccuracy() const;
769
785 virtual const CResult SetSearchAccuracy(const ESearchAccuracy eSearchAccuracy);
786
798 virtual const ESearchAccuracy GetSearchAccuracy() const;
799
813 virtual const CResult EnableInterpolation(bool bEnable = true);
814
824 virtual bool IsInterpolationEnabled() const;
825
842
855
879 virtual const CResult SetFilterItem(CPatternMatch::EFilterItem eFilterItem, double f64Value, const Base::ELogicalCondition eFilterCondition);
903 virtual const CResult AddFilterItem(CPatternMatch::EFilterItem eFilterItem, double f64Value, const Base::ELogicalCondition eFilterCondition);
927 virtual const CResult SetFilterItem(const Base::CFLArray<int32_t>& flaFilterItem, const Base::CFLArray<double>& flaValue, const Base::CFLArray<int32_t>& flaFilterCondition);
951 virtual const CResult AddFilterItem(const Base::CFLArray<int32_t>& flaFilterItem, const Base::CFLArray<double>& flaValue, const Base::CFLArray<int32_t>& flaFilterCondition);
952
976 virtual const CResult GetFilterItem(CPatternMatch::EFilterItem& eFilterItem, double& f64Value, Base::ELogicalCondition& eFilterCondition) const;
1000 virtual const CResult GetFilterItem(Base::CFLArray<int32_t>& flaFilterItem, Base::CFLArray<double>& flaValue, Base::CFLArray<int32_t>& flaFilterCondition) const;
1001
1015 virtual const CResult ClearFilterItem();
1016
1082 virtual const CResult SetSortItem(const Base::CFLArray<int32_t>& flaItem, const Base::CFLArray<int32_t>& flaOrder);
1104 virtual const CResult AddSortItem(const Base::CFLArray<int32_t>& flaItem, const Base::CFLArray<int32_t>& flaOrder);
1148 virtual const CResult GetSortItem(Base::CFLArray<int32_t>& flaItem, Base::CFLArray<int32_t>& flaOrder) const;
1149
1169 virtual const CResult SetSortClusterMode(CPatternMatch::ESortClusterModeMethod eMethod, double f64Coefficient);
1189 virtual bool GetSortClusterMode(CPatternMatch::ESortClusterModeMethod& eMethod, double& f64Coefficient) const;
1190
1204 virtual const CResult ClearSortItem();
1205
1215 virtual bool IsLearned() const;
1216
1228 virtual const CResult Learn();
1229
1241 virtual const CResult Execute();
1242
1243
1265 virtual const CResult Filter(EFilterItem eItem, double f64Value, Base::ELogicalCondition eCondition);
1266
1287
1313 virtual const CResult Sort(const Base::CFLArray<int32_t>& flaItem, const Base::CFLArray<int32_t>& flaOrder);
1314
1333 virtual const CResult SortClusterMode(ESortClusterModeMethod eMethod, double f64Coefficient = .5);
1334
1350 virtual const CResult Load(const Base::CFLString<wchar_t>& strPatternFile);
1351
1367 virtual const CResult Save(const Base::CFLString<wchar_t>& strPatternFile);
1368
1382 virtual const CResult ClearResultData();
1383
1395 virtual int64_t GetResultCount() const;
1396
1414 virtual const CResult GetResult(int64_t i64Index, CPatternMatch::SResult* pSResults) const;
1415
1433 virtual const CResult GetResult(int64_t i64Index, CPatternMatch::SResult& sResults) const;
1434
1452 virtual const CResult GetResultScore(int64_t i64Index, float& f32ResultScore) const;
1453
1471 virtual const CResult GetResultAngle(int64_t i64Index, float& f32ResultAngle) const;
1472
1490 virtual const CResult GetResultScale(int64_t i64Index, float& f32ResultScale) const;
1491
1511 virtual const CResult GetResultRegion(int64_t i64Index, Foundation::CFLFigureArray* pFlfaResultRegion) const;
1512
1532 virtual const CResult GetResultRegion(int64_t i64Index, Foundation::CFLFigureArray& flfaResultRegion) const;
1533
1553 virtual const CResult GetResultPivot(int64_t i64Index, Foundation::CFLPoint<double>& flpResultPivot) const;
1554
1555 virtual const CResult ReportToCSV(const Foundation::CReportDescriptor* pWrd) const override;
1556
1577 virtual const CResult ReportToCSV(const CReportDescriptorForMatch& wrd) const;
1578
1599 virtual const CResult ReportToCSV(const CReportDescriptorForMatch* pWrd) const;
1600
1602
1623 static const CResult GetLearnedFileVersion(Base::CFLString<wchar_t> strPatternFile, int32_t& i32MajorVer, int32_t& i32MinorVer);
1624
1625 virtual const CResult RunWarmUpCuda();
1626
1627 virtual int64_t GetRequiredGPUMemory() const override;
1628
1629 virtual bool IsLicenseAvailable() const override;
1630
1631
1632 DeclareGetClassType();
1633 SupportToDuplicateObject(CPatternMatch, *this);
1634
1635 protected:
1644
1653
1662
1671
1680
1689
1698
1707
1718
1729
1738
1747
1756
1765
1774
1783
1792
1801
1802 protected:
1803 friend class CInternalPatternMatch;
1804
1805 CInternalPatternMatch* m_pInternal;
1806 };
1807 }
1808}
virtual const CResult SetFilterItem(CPatternMatch::EFilterItem eFilterItem, double f64Value, const Base::ELogicalCondition eFilterCondition)
bool m_bSortClusterMode
Definition PatternMatch.h:1782
virtual const CResult Filter(EFilterItem eItem, double f64Value, Base::ELogicalCondition eCondition)
virtual const CResult Assign(const CPatternMatch &aib)
EMatchContrastOption m_eContrastOption
Definition PatternMatch.h:1717
double m_f64ScaleMin
Definition PatternMatch.h:1661
virtual const CResult SetSortItem(CPatternMatch::EFilterItem eSortItem, CPatternMatch::EOrder eOrder)
virtual const CResult GetResultScale(int64_t i64Index, float &f32ResultScale) const
virtual const CResult SetFilterItem(const Base::CFLArray< int32_t > &flaFilterItem, const Base::CFLArray< double > &flaValue, const Base::CFLArray< int32_t > &flaFilterCondition)
virtual int64_t GetRequiredGPUMemory() const override
virtual const CResult SetAccuracy(double f64Accuracy=0.5)
virtual const CResult SetContrastOption(EMatchContrastOption eOption=EMatchContrastOption_Normal)
virtual const ESearchAccuracy GetSearchAccuracy() const
virtual const CResult GetSortItem(Base::CFLArray< int32_t > &flaItem, Base::CFLArray< int32_t > &flaOrder) const
virtual const CResult AddSortItem(CPatternMatch::EFilterItem eSortItem, CPatternMatch::EOrder eOrder)
virtual const CResult GetResult(int64_t i64Index, CPatternMatch::SResult &sResults) const
virtual const CResult ReportToCSV(const CReportDescriptorForMatch *pWrd) const
virtual Foundation::EProcessingUnitFeatures GetOptimalProcessingUnit() const override
virtual const CResult GetScaleRange(double &f64ScaleMin, double &f64ScaleMax) const
int64_t m_i64MaxObject
Definition PatternMatch.h:1643
virtual const CResult GetResult(int64_t i64Index, CPatternMatch::SResult *pSResults) const
EFilterItem
Definition PatternMatch.h:201
@ EFilterItem_Angle
Definition PatternMatch.h:224
@ EFilterItem_PivotY
Definition PatternMatch.h:248
@ EFilterItem_Unselected
Definition PatternMatch.h:206
@ EFilterItem_RegionCenterX
Definition PatternMatch.h:230
@ EFilterItem_RegionCenterY
Definition PatternMatch.h:236
@ EFilterItem_Scale
Definition PatternMatch.h:218
@ EFilterItem_Score
Definition PatternMatch.h:212
@ EFilterItem_PivotX
Definition PatternMatch.h:242
virtual const CResult GetFilterItem(Base::CFLArray< int32_t > &flaFilterItem, Base::CFLArray< double > &flaValue, Base::CFLArray< int32_t > &flaFilterCondition) const
virtual const CResult ReportToCSV(const Foundation::CReportDescriptor *pWrd) const override
The execution result of the algorithm is recorded in a file according to the options recorded in the ...
virtual bool IsLicenseAvailable() const override
Returns whether the algorithm can be used with the current license.
virtual const CResult SetSearchAccuracy(const ESearchAccuracy eSearchAccuracy)
virtual const CResult SetAngleBias(double f64AngleBias=.0)
virtual const CResult GetLearnedImageRaw(Base::CFLImage &fliImage) const
ESortClusterModeMethod
Definition PatternMatch.h:280
@ ESortClusterModeMethod_Pivot_X_Desc_Y_Asc
Definition PatternMatch.h:414
@ ESortClusterModeMethod_Pivot_X_Desc_Y_Desc
Definition PatternMatch.h:423
@ ESortClusterModeMethod_RegionCenter_X_Desc_Y_Desc
Definition PatternMatch.h:351
@ ESortClusterModeMethod_RegionCenter_X_Asc_Y_Asc
Definition PatternMatch.h:324
@ ESortClusterModeMethod_Pivot_Y_Desc_X_Asc
Definition PatternMatch.h:378
@ ESortClusterModeMethod_Pivot_X_Asc_Y_Asc
Definition PatternMatch.h:396
@ ESortClusterModeMethod_Pivot_Y_Asc_X_Desc
Definition PatternMatch.h:369
@ ESortClusterModeMethod_RegionCenter_X_Asc_Y_Desc
Definition PatternMatch.h:333
@ ESortClusterModeMethod_RegionCenter_Y_Desc_X_Asc
Definition PatternMatch.h:306
@ ESortClusterModeMethod_Pivot_X_Asc_Y_Desc
Definition PatternMatch.h:405
@ ESortClusterModeMethod_Pivot_Y_Asc_X_Asc
Definition PatternMatch.h:360
@ ESortClusterModeMethod_RegionCenter_Y_Asc_X_Desc
Definition PatternMatch.h:297
@ ESortClusterModeMethod_RegionCenter_Y_Desc_X_Desc
Definition PatternMatch.h:315
@ ESortClusterModeMethod_RegionCenter_Y_Asc_X_Asc
Definition PatternMatch.h:288
@ ESortClusterModeMethod_RegionCenter_X_Desc_Y_Asc
Definition PatternMatch.h:342
@ ESortClusterModeMethod_Pivot_Y_Desc_X_Desc
Definition PatternMatch.h:387
virtual const CResult Load(const Base::CFLString< wchar_t > &strPatternFile)
virtual const CResult SetScaleRange(double f64ScaleMin=1., double f64ScaleMax=1.)
virtual const CResult GetResultScore(int64_t i64Index, float &f32ResultScore) const
CPatternMatch(const CPatternMatch *pPmr)
virtual const CResult GetResultRegion(int64_t i64Index, Foundation::CFLFigureArray *pFlfaResultRegion) const
double m_f64Accuracy
Definition PatternMatch.h:1697
virtual const CResult AddSortItem(const Base::CFLArray< int32_t > &flaItem, const Base::CFLArray< int32_t > &flaOrder)
virtual double GetMinimumDetectionScore() const
ESearchAccuracy
Definition PatternMatch.h:435
@ ESearchAccuracy_Normal
Definition PatternMatch.h:452
@ ESearchAccuracy_Accurate
Definition PatternMatch.h:461
@ ESearchAccuracy_Fast
Definition PatternMatch.h:443
virtual const CResult GetFilterItem(CPatternMatch::EFilterItem &eFilterItem, double &f64Value, Base::ELogicalCondition &eFilterCondition) const
virtual bool GetSortClusterMode(CPatternMatch::ESortClusterModeMethod &eMethod, double &f64Coefficient) const
double m_f64MinimumDetectionScore
Definition PatternMatch.h:1652
virtual const CResult Sort(EFilterItem eItem=EFilterItem_Unselected, EOrder eOrder=EOrder_Descending)
virtual const CResult Save(const Base::CFLString< wchar_t > &strPatternFile)
virtual const CResult GetResultRegion(int64_t i64Index, Foundation::CFLFigureArray &flfaResultRegion) const
bool m_bInterpolation
Definition PatternMatch.h:1706
virtual const EMatchContrastOption GetContrastOption() const
double m_f64AngleBias
Definition PatternMatch.h:1679
EOrder
Definition PatternMatch.h:258
@ EOrder_Descending
Definition PatternMatch.h:269
@ EOrder_Ascending
Definition PatternMatch.h:263
virtual const CResult SetMinimumDetectionScore(double f64Score=.5)
double m_f64ScaleMax
Definition PatternMatch.h:1670
ESearchAccuracy m_eSearchAccuracy
Definition PatternMatch.h:1728
Base::CFLArray< int32_t > m_flaSortOrder
Definition PatternMatch.h:1773
double m_f64AngleTolerance
Definition PatternMatch.h:1688
virtual const CResult Sort(const Base::CFLArray< int32_t > &flaItem, const Base::CFLArray< int32_t > &flaOrder)
virtual const CResult SortClusterMode(ESortClusterModeMethod eMethod, double f64Coefficient=.5)
virtual const CResult SetMaxObject(int64_t i64MaxObject=1)
const CPatternMatch & operator=(const CPatternMatch &pm)
virtual const CResult GetSortItem(CPatternMatch::EFilterItem &eSortItem, CPatternMatch::EOrder &eOrder) const
virtual const CResult GetResultPivot(int64_t i64Index, Foundation::CFLPoint< double > &flpResultPivot) const
Base::CFLArray< int32_t > m_flaFilterCondition
Definition PatternMatch.h:1755
double m_f64SortClusterCoefficient
Definition PatternMatch.h:1800
virtual const CResult SetSortItem(const Base::CFLArray< int32_t > &flaItem, const Base::CFLArray< int32_t > &flaOrder)
virtual const CResult Assign(const CPatternMatch *pAib)
virtual const CResult EnableInterpolation(bool bEnable=true)
virtual const CResult GetLearnedImage(Base::CFLImage &fliImage, bool bIncludeFigure=false) const
CPatternMatch(const CPatternMatch &pmr)
CPatternMatch::ESortClusterModeMethod m_eSortClusterMethod
Definition PatternMatch.h:1791
virtual const CResult SetAngleTolerance(double f64AngleTolerance=.0)
virtual const CResult AddFilterItem(const Base::CFLArray< int32_t > &flaFilterItem, const Base::CFLArray< double > &flaValue, const Base::CFLArray< int32_t > &flaFilterCondition)
Base::CFLArray< int32_t > m_flaFilterItem
Definition PatternMatch.h:1737
Base::CFLArray< int32_t > m_flaSortItem
Definition PatternMatch.h:1764
static const CResult GetLearnedFileVersion(Base::CFLString< wchar_t > strPatternFile, int32_t &i32MajorVer, int32_t &i32MinorVer)
virtual const CResult ReportToCSV(const CReportDescriptorForMatch &wrd) const
virtual const CResult SetSortClusterMode(CPatternMatch::ESortClusterModeMethod eMethod, double f64Coefficient)
Base::CFLArray< double > m_flaFilterValue
Definition PatternMatch.h:1746
virtual const CResult AddFilterItem(CPatternMatch::EFilterItem eFilterItem, double f64Value, const Base::ELogicalCondition eFilterCondition)
virtual const CResult GetResultAngle(int64_t i64Index, float &f32ResultAngle) const
ReportDescriptorForMatch class.
Definition ReportDescriptorForMatch.h:22
Template type array class.
Definition FLArray.h:71
FLIMaging's image class.
Definition FLImage.h:35
Template type string class.
Definition FLString.h:34
FLImaging module execution result object.
Definition ResultsDef.h:1704
A base class representing array of figure.
Definition FLFigureArray.h:27
A base class of classes representing figures.
Definition FLFigure.h:27
A class representing a point.
Definition FLPoint.h:24
ReportDescriptor class.
Definition ReportDescriptor.h:22
Definition AlgorithmFeature_DI_BAT_CI.h:15
EMatchContrastOption
Definition DefinitionsAdvancedFunctions.h:29
@ EMatchContrastOption_Normal
Definition DefinitionsAdvancedFunctions.h:37
ELogicalCondition
Logical condition.
Definition DefinitionsBase.h:3147
EProcessingUnitFeatures
Processing Unit Features.
Definition AlgorithmBase.h:26
Foundation::CFLFigure * pFlfRegion
Definition PatternMatch.h:178
const SResult & operator=(const SResult &pmr)
float f32Angle
Definition PatternMatch.h:158
virtual const CResult Assign(const SResult &pmr)
virtual const CResult Assign(const SResult *pPmr)
float f32Scale
Definition PatternMatch.h:167
Foundation::CFLPoint< double > flpPivot
Definition PatternMatch.h:189
float f32Score
Definition PatternMatch.h:149