DataMatrixDetectionParams

Description

Specifies how data matrix codes are being detected.

Structure fields and default values (if defined) are described below:

  • int ContrastThreshold = 10 - Guaranteed gray level difference between dark and bright modules
  • int ContrastHysteresis = 0 - A value dynamically subtracted from ContrastThreshold to improve local segmentation
  • int ContrastPerturbations = 0 - Number of perturbations applied to ContrastThreshold for improving possibility of detection when lighting conditions are highly variable
  • int DynamicSNRatio - Signal-to-Noise Ratio that dynamically increases ContrastThreshold; use with low values of ContrastThreshold
  • Bool NonBinarySegmentation - Assumes that there might be pixels significantly brighter or darker than the foreground or the background modules in near proximity of the quiet zone; use with DetectionMethod=FinderPattern
  • Bool ForceIsotropy - Switches to image preprocessing methods that give more stable results for different code rotations
  • DataMatrixDetectionMethod DetectionMethod = QuietZone - Specifies which feature is used for code detection: the shape of the finder pattern or the blob of the quiet zone
  • DataMatrixPyramidStrategy PyramidStrategy = Fast - Specifies the step of image downsampling used for finding codes at different scales
  • DataMatrixOutlineStrategy OutlineStrategy = Fast - Specifies precision of outline detection
struct DataMatrixDetectionParams
{
	int							ContrastThreshold;
	int							ContrastHysteresis;
	int							ContrastPerturbations;
	int							DynamicSNRatio;
	Bool						NonBinarySegmentation;
	Bool						ForceIsotropy;
	DataMatrixDetectionMethod	DetectionMethod;
	DataMatrixPyramidStrategy	PyramidStrategy;
	DataMatrixOutlineStrategy	OutlineStrategy;

	explicit DataMatrixDetectionParams
	(
		int ContrastThreshold_ = 10,
		int ContrastHysteresis_ = 0,
		int ContrastPerturbations_ = 0,
		DataMatrixDetectionMethod DetectionMethod_ = QuietZone,
		DataMatrixPyramidStrategy PyramidStrategy_ = Fast,
		DataMatrixOutlineStrategy OutlineStrategy_ = Fast 
	) :
		 ContrastThreshold(ContrastThreshold_),
		 ContrastHysteresis(ContrastHysteresis_),
		 ContrastPerturbations(ContrastPerturbations_),
		 DetectionMethod(DetectionMethod_),
		 PyramidStrategy(PyramidStrategy_),
		 OutlineStrategy(OutlineStrategy_) 
	{}

	int ContrastThreshold() const						{ return ContrastThreshold;		};
	int ContrastHysteresis() const						{ return ContrastHysteresis;	};
	int ContrastPerturbations() const					{ return ContrastPerturbations;	};
	int DynamicSNRatio() const							{ return DynamicSNRatio;		};
	Bool NonBinarySegmentation() const					{ return NonBinarySegmentation;	};
	Bool ForceIsotropy() const							{ return ForceIsotropy;			};
	DataMatrixDetectionMethod DetectionMethod() const	{ return DetectionMethod;		};
	DataMatrixPyramidStrategy PyramidStrategy() const	{ return PyramidStrategy;		};
	DataMatrixOutlineStrategy OutlineStrategy() const	{ return OutlineStrategy;		};

	bool operator == ( const avl::DataMatrixDetectionParams& rhs ) const
	{
		return ContrastThreshold == rhs.ContrastThreshold && 
			ContrastHysteresis == rhs.ContrastHysteresis && 
			ContrastPerturbations == rhs.ContrastPerturbations && 
			DynamicSNRatio == rhs.DynamicSNRatio && 
			NonBinarySegmentation == rhs.NonBinarySegmentation && 
			ForceIsotropy == rhs.ForceIsotropy && 
			DetectionMethod == rhs.DetectionMethod && 
			PyramidStrategy == rhs.PyramidStrategy && 
			OutlineStrategy == rhs.OutlineStrategy;
	}

	bool operator != ( const avl::DataMatrixDetectionParams& rhs ) const
	{
		return !(operator==(rhs));
	}

};