FLImaging 7.8.25.3
Moment.h
1#pragma once
2
22
23#include "AlgorithmFeature_SR.h"
24
25#include "ReportDescriptorForMoment.h"
26
28namespace FLImaging
29{
31 namespace ImageProcessing
32 {
33 class CInternalMoment;
34
54
55 class FL_EXPORT CMoment : public CAlgorithmFeature_SR
56 {
57 public:
66
74 CMoment(const CMoment& Moment);
75
83 CMoment(const CMoment* pMoment);
84
92 virtual ~CMoment();
93
101 const CMoment& operator=(const CMoment& Moment);
102
116 virtual const CResult Assign(const CMoment& aib);
117
131 virtual const CResult Assign(const CMoment* pAib);
132
145 {
156 };
157
170 {
173 };
174
187 {
198 };
199
212 {
223 };
224
237 {
238 double f64Hu0;
239 double f64Hu1;
240 double f64Hu2;
241 double f64Hu3;
242 double f64Hu4;
243 double f64Hu5;
244 double f64Hu6;
245 };
246
268 struct SMoments
269 {
275 };
276
284 struct SZernike
285 {
286 int32_t i32N;
287 int32_t i32M;
295 uint64_t u64Radius;
320 };
321
341 virtual const CResult EnableBinaryImage(bool bBinaryImage = true);
342
352 virtual bool IsBinaryImageEnabled() const;
353
365 virtual const CResult Execute();
366
378 virtual const CResult Clear() override;
379
393 virtual const CResult EnableGeometricMoment(bool bCalc = true);
394
404 virtual bool IsGeometricMomentEnabled() const;
405
419 virtual const CResult EnableCentroidMoment(bool bCalc = true);
420
430 virtual bool IsCentroidMomentEnabled() const;
431
445 virtual const CResult EnableCentralMoment(bool bCalc = true);
446
456 virtual bool IsCentralMomentEnabled() const;
457
471 virtual const CResult EnableNormalizedCentralMoment(bool bCalc = true);
472
483
497 virtual const CResult EnableHuMoment(bool bCalc = true);
498
508 virtual bool IsHuMomentEnabled() const;
509
521 virtual const CResult ClearZernike();
522
548 virtual const CResult AddZernike(int32_t i32N, int32_t i32M, uint64_t u64ZernikeRadius = 0, bool bInscribedCircle = true);
549
567 virtual const CResult GetMoment(CMoment::SMoments& moments, int64_t i64Channel = 0) const;
568
586 virtual const CResult GetMoment(CMoment::SMoments* pMoments, int64_t i64Channel = 0) const;
587
599 virtual int64_t GetZernikeCount() const;
600
620 virtual const CResult GetZernike(CMoment::SZernike& zernike, int64_t i64Index = 0, int64_t i64Channel = 0) const;
621
641 virtual const CResult GetZernike(CMoment::SZernike* pZernike, int64_t i64Index = 0, int64_t i64Channel = 0) const;
642
644
663 static const CResult GetContoursMatchL1(const CMoment::SHuMoment sHuMoment1, const CMoment::SHuMoment sHuMoment2, double* pF64Result);
664 static const CResult GetContoursMatchL1(const CMoment::SHuMoment sHuMoment1, const CMoment::SHuMoment sHuMoment2, double& f64Result);
666
668
687 static const CResult GetContoursMatchL2(const CMoment::SHuMoment sHuMoment1, const CMoment::SHuMoment sHuMoment2, double* pF64Result);
688 static const CResult GetContoursMatchL2(const CMoment::SHuMoment sHuMoment1, const CMoment::SHuMoment sHuMoment2, double& f64Result);
690
692
711 static const CResult GetContoursMatchL3(const CMoment::SHuMoment sHuMoment1, const CMoment::SHuMoment sHuMoment2, double* pF64Result);
712 static const CResult GetContoursMatchL3(const CMoment::SHuMoment sHuMoment1, const CMoment::SHuMoment sHuMoment2, double& f64Result);
714
715 virtual const CResult ReportToCSV(const Foundation::CReportDescriptor* pWrd) const override;
716
737 virtual const CResult ReportToCSV(const CReportDescriptorForMoment& wrd) const;
738
759 virtual const CResult ReportToCSV(const CReportDescriptorForMoment* pWrd) const;
760
761 virtual bool IsLicenseAvailable() const override;
762
763
764 DeclareGetClassType();
765 SupportToDuplicateObject(CMoment, *this);
766
767 protected:
776
785
794
803
812
821
822 protected:
823 friend class CInternalMoment;
824
825 CInternalMoment* m_pInternal;
826 };
827 }
828}
FLImaging module execution result object.
Definition ResultsDef.h:1704
ReportDescriptor class.
Definition ReportDescriptor.h:22
bool m_bBinaryImage
Definition Moment.h:775
bool m_bCalcHuMoment
Definition Moment.h:820
static const CResult GetContoursMatchL3(const CMoment::SHuMoment sHuMoment1, const CMoment::SHuMoment sHuMoment2, double *pF64Result)
virtual const CResult GetZernike(CMoment::SZernike *pZernike, int64_t i64Index=0, int64_t i64Channel=0) const
virtual bool IsNormalizedCentralMomentEnabled() const
static const CResult GetContoursMatchL3(const CMoment::SHuMoment sHuMoment1, const CMoment::SHuMoment sHuMoment2, double &f64Result)
virtual const CResult Assign(const CMoment *pAib)
virtual const CResult GetMoment(CMoment::SMoments &moments, int64_t i64Channel=0) const
CMoment(const CMoment *pMoment)
virtual bool IsCentroidMomentEnabled() const
bool m_bCalcGeometricMoment
Definition Moment.h:784
bool m_bCalcNormalizedCentralMoment
Definition Moment.h:811
virtual const CResult EnableCentralMoment(bool bCalc=true)
virtual const CResult ReportToCSV(const CReportDescriptorForMoment &wrd) const
virtual const CResult AddZernike(int32_t i32N, int32_t i32M, uint64_t u64ZernikeRadius=0, bool bInscribedCircle=true)
virtual const CResult Execute()
bool m_bCalcCentroidMoment
Definition Moment.h:793
virtual bool IsBinaryImageEnabled() const
virtual const CResult GetZernike(CMoment::SZernike &zernike, int64_t i64Index=0, int64_t i64Channel=0) const
virtual const CResult Clear() override
const CMoment & operator=(const CMoment &Moment)
virtual const CResult EnableCentroidMoment(bool bCalc=true)
virtual bool IsHuMomentEnabled() const
virtual const CResult EnableBinaryImage(bool bBinaryImage=true)
static const CResult GetContoursMatchL1(const CMoment::SHuMoment sHuMoment1, const CMoment::SHuMoment sHuMoment2, double &f64Result)
virtual int64_t GetZernikeCount() const
CMoment(const CMoment &Moment)
virtual const CResult GetMoment(CMoment::SMoments *pMoments, int64_t i64Channel=0) const
virtual bool IsLicenseAvailable() const override
Returns whether the algorithm can be used with the current license.
virtual const CResult EnableNormalizedCentralMoment(bool bCalc=true)
virtual const CResult Assign(const CMoment &aib)
static const CResult GetContoursMatchL1(const CMoment::SHuMoment sHuMoment1, const CMoment::SHuMoment sHuMoment2, double *pF64Result)
bool m_bCalcCentralMoment
Definition Moment.h:802
virtual bool IsGeometricMomentEnabled() const
static const CResult GetContoursMatchL2(const CMoment::SHuMoment sHuMoment1, const CMoment::SHuMoment sHuMoment2, double *pF64Result)
virtual const CResult EnableGeometricMoment(bool bCalc=true)
static const CResult GetContoursMatchL2(const CMoment::SHuMoment sHuMoment1, const CMoment::SHuMoment sHuMoment2, double &f64Result)
virtual bool IsCentralMomentEnabled() 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 const CResult ClearZernike()
virtual const CResult EnableHuMoment(bool bCalc=true)
virtual const CResult ReportToCSV(const CReportDescriptorForMoment *pWrd) const
ReportDescriptorForMoment class.
Definition ReportDescriptorForMoment.h:23
Definition AbsoluteThreshold.h:25
central moment structure
Definition Moment.h:187
centroid moment structure
Definition Moment.h:170
double f64CentroidX
Definition Moment.h:171
double f64CentroidY
Definition Moment.h:172
geometric moment structure
Definition Moment.h:145
invariant moment structure
Definition Moment.h:237
double f64Hu0
Definition Moment.h:238
double f64Hu3
Definition Moment.h:241
double f64Hu6
Definition Moment.h:244
double f64Hu4
Definition Moment.h:242
double f64Hu5
Definition Moment.h:243
double f64Hu1
Definition Moment.h:239
double f64Hu2
Definition Moment.h:240
moment structure
Definition Moment.h:269
SCentralMoment sCentralMoments
Definition Moment.h:272
SNormalizedCentralMoment sNormalizedCentralMoments
Definition Moment.h:273
SCentroid sCentroidMoment
Definition Moment.h:271
SHuMoment sHuMoments
Definition Moment.h:274
SGeometricMoment sGeometricMoments
Definition Moment.h:270
normalized central moment structure
Definition Moment.h:212
int32_t i32N
Definition Moment.h:286
bool bInscribedCircle
Definition Moment.h:303
uint64_t u64Radius
Definition Moment.h:295
double f64ZernikeReal
Definition Moment.h:311
int32_t i32M
Definition Moment.h:287
double f64ZernikeImag
Definition Moment.h:319