Decode Unreadable Barcodes with Dynamsoft Barcode Reader's Custom Scan Parameters
Binarized image produced by Dynamsoft Barcode Reader:
JSON Template (help):
Issue:
Blurry QR codes and barcodes pose a significant challenge to effective scanning. The images of the codes may be taken in low resolution or motion.
Solution:
There are some parameters we can adjust to improve the reading rate.
- Set DeblurModes to
null
to let the program decide which deblur algorithms to use to read blurred barcodes. - Set the ExpectedBarcodesCount to a higher value like
999
so that it will try all the available image processing methods. - Set GrayscaleEnhancementModes to enhance the image.
- Set ScaleUpModes to scale up modules if their size is too small.
{ "BarcodeReaderTaskSettingOptions" : [ { "BarcodeColourModes" : null, "BarcodeComplementModes" : [ { "Mode" : "BCM_SKIP" } ], "BarcodeFormatIds" : [ "BF_DEFAULT", "BF_PATCHCODE" ], "BaseBarcodeReaderTaskSettingName" : "", "DPMCodeReadingModes" : [ { "BarcodeFormat" : "BF_DATAMATRIX", "Mode" : "DPMCRM_SKIP" } ], "DeblurModes" : null, "DeformationResistingModes" : [ { "BinarizationMode" : { "BinarizationThreshold" : -1, "BlockSizeX" : 0, "BlockSizeY" : 0, "EnableFillBinaryVacancy" : 1, "GrayscaleEnhancementModesIndex" : -1, "Mode" : "BM_LOCAL_BLOCK", "MorphOperation" : "Close", "MorphOperationKernelSizeX" : -1, "MorphOperationKernelSizeY" : -1, "MorphShape" : "Rectangle", "ThresholdCompensation" : 10 }, "GrayscaleEnhancementMode" : { "Mode" : "GEM_AUTO", "Sensitivity" : -1, "SharpenBlockSizeX" : -1, "SharpenBlockSizeY" : -1, "SmoothBlockSizeX" : -1, "SmoothBlockSizeY" : -1 }, "Level" : 5, "Mode" : "DRM_SKIP" } ], "ExpectedBarcodesCount" : 999, "LocalizationModes" : [ { "ConfidenceThreshold" : 60, "IsOneDStacked" : 0, "Mode" : "LM_CONNECTED_BLOCKS", "ModuleSize" : 0, "ScanDirection" : 0, "ScanStride" : 0 }, { "ConfidenceThreshold" : 60, "IsOneDStacked" : 0, "Mode" : "LM_SCAN_DIRECTLY", "ModuleSize" : 0, "ScanDirection" : 0, "ScanStride" : 0 }, { "ConfidenceThreshold" : 60, "IsOneDStacked" : 0, "Mode" : "LM_STATISTICS", "ModuleSize" : 0, "ScanDirection" : 0, "ScanStride" : 0 }, { "ConfidenceThreshold" : 60, "IsOneDStacked" : 0, "Mode" : "LM_LINES", "ModuleSize" : 0, "ScanDirection" : 0, "ScanStride" : 0 } ], "MaxThreadsInOneTask" : 4, "Name" : "BR_1", "ReturnBarcodeZoneClarity" : 0, "SectionImageParameterArray" : [ { "ContinueWhenPartialResultsGenerated" : 1, "ImageParameterName" : "IP_1", "Section" : "ST_REGION_PREDETECTION" }, { "ContinueWhenPartialResultsGenerated" : 1, "ImageParameterName" : "IP_1", "Section" : "ST_BARCODE_LOCALIZATION" }, { "ContinueWhenPartialResultsGenerated" : 1, "ImageParameterName" : "IP_Decode", "Section" : "ST_BARCODE_DECODING" } ], "StartSection" : "ST_REGION_PREDETECTION", "TerminateSetting" : { "Section" : "ST_NULL", "Stage" : "IRUT_NULL" }, "TextResultOrderModes" : [ { "Mode" : "TROM_CONFIDENCE" }, { "Mode" : "TROM_POSITION" }, { "Mode" : "TROM_FORMAT" } ] } ], "CaptureVisionTemplates" : [ { "ImageROIProcessingNameArray" : [ "roi_default" ], "ImageSource" : "", "MaxParallelTasks" : 4, "MinImageCaptureInterval" : 0, "Name" : "Default_1", "OutputOriginalImage" : 0, "SemanticProcessingNameArray" : null, "Timeout" : 99999 } ], "GlobalParameter" : { "MaxTotalImageDimension" : 0 }, "ImageParameterOptions" : [ { "BaseImageParameterName" : "", "BinarizationModes" : [ { "BinarizationThreshold" : -1, "BlockSizeX" : 0, "BlockSizeY" : 0, "EnableFillBinaryVacancy" : 1, "GrayscaleEnhancementModesIndex" : -1, "Mode" : "BM_LOCAL_BLOCK", "MorphOperation" : "Close", "MorphOperationKernelSizeX" : -1, "MorphOperationKernelSizeY" : -1, "MorphShape" : "Rectangle", "ThresholdCompensation" : 10 } ], "ColourConversionModes" : [ { "BlueChannelWeight" : -1, "GreenChannelWeight" : -1, "Mode" : "CICM_GENERAL", "RedChannelWeight" : -1, "ReferChannel" : "H_CHANNEL" } ], "GrayscaleEnhancementModes" : [ { "Mode" : "GEM_GENERAL", "Sensitivity" : -1, "SharpenBlockSizeX" : -1, "SharpenBlockSizeY" : -1, "SmoothBlockSizeX" : -1, "SmoothBlockSizeY" : -1 }, { "Mode" : "GEM_GRAY_EQUALIZE", "Sensitivity" : 5, "SharpenBlockSizeX" : -1, "SharpenBlockSizeY" : -1, "SmoothBlockSizeX" : -1, "SmoothBlockSizeY" : -1 }, { "Mode" : "GEM_GRAY_SMOOTH", "Sensitivity" : -1, "SharpenBlockSizeX" : -1, "SharpenBlockSizeY" : -1, "SmoothBlockSizeX" : 3, "SmoothBlockSizeY" : 3 } ], "GrayscaleTransformationModes" : [ { "Mode" : "GTM_ORIGINAL" } ], "IfEraseTextZone" : 1, "Name" : "IP_1", "RegionPredetectionModes" : [ { "AspectRatioRange" : "[]", "FindAccurateBoundary" : 0, "ForeAndBackgroundColours" : "[]", "HeightRange" : "[]", "ImageParameterName" : "", "MeasuredByPercentage" : 1, "MinImageDimension" : 262144, "Mode" : "RPM_GENERAL", "RelativeRegions" : "[]", "Sensitivity" : 1, "SpatialIndexBlockSize" : 5, "WidthRange" : "[]" } ], "ScaleDownThreshold" : 2300, "ScaleUpModes" : [ { "AcuteAngleWithXThreshold" : 0, "LetterHeightThreshold" : 0, "Mode" : "SUM_LINEAR_INTERPOLATION", "ModuleSizeThreshold" : 4, "TargetLetterHeight" : 0, "TargetModuleSize" : 6 } ], "TextDetectionMode" : { "CharHeightRange" : [ 1, 1000, 1 ], "Direction" : "UNKNOWN", "MaxSpacingInALine" : -1, "Mode" : "TTDM_LINE", "Sensitivity" : 3, "StringLengthRange" : null }, "TextureDetectionModes" : [ { "Mode" : "TDM_GENERAL_WIDTH_CONCENTRATION", "Sensitivity" : 5 } ] }, { "BaseImageParameterName" : "", "BinarizationModes" : [ { "BinarizationThreshold" : -1, "BlockSizeX" : 0, "BlockSizeY" : 0, "EnableFillBinaryVacancy" : 1, "GrayscaleEnhancementModesIndex" : -1, "Mode" : "BM_LOCAL_BLOCK", "MorphOperation" : "Close", "MorphOperationKernelSizeX" : -1, "MorphOperationKernelSizeY" : -1, "MorphShape" : "Rectangle", "ThresholdCompensation" : 10 } ], "ColourConversionModes" : [ { "BlueChannelWeight" : -1, "GreenChannelWeight" : -1, "Mode" : "CICM_GENERAL", "RedChannelWeight" : -1, "ReferChannel" : "H_CHANNEL" } ], "GrayscaleEnhancementModes" : [ { "Mode" : "GEM_GENERAL", "Sensitivity" : -1, "SharpenBlockSizeX" : -1, "SharpenBlockSizeY" : -1, "SmoothBlockSizeX" : -1, "SmoothBlockSizeY" : -1 } ], "GrayscaleTransformationModes" : [ { "Mode" : "GTM_ORIGINAL" } ], "IfEraseTextZone" : 1, "Name" : "IP_Decode", "RegionPredetectionModes" : [ { "AspectRatioRange" : "[]", "FindAccurateBoundary" : 0, "ForeAndBackgroundColours" : "[]", "HeightRange" : "[]", "ImageParameterName" : "", "MeasuredByPercentage" : 1, "MinImageDimension" : 262144, "Mode" : "RPM_GENERAL", "RelativeRegions" : "[]", "Sensitivity" : 1, "SpatialIndexBlockSize" : 5, "WidthRange" : "[]" } ], "ScaleDownThreshold" : 99999, "ScaleUpModes" : [ { "AcuteAngleWithXThreshold" : -1, "LetterHeightThreshold" : 0, "Mode" : "SUM_AUTO", "ModuleSizeThreshold" : 0, "TargetLetterHeight" : 0, "TargetModuleSize" : 0 } ], "TextDetectionMode" : { "CharHeightRange" : [ 1, 1000, 1 ], "Direction" : "UNKNOWN", "MaxSpacingInALine" : -1, "Mode" : "TTDM_LINE", "Sensitivity" : 3, "StringLengthRange" : null }, "TextureDetectionModes" : [ { "Mode" : "TDM_GENERAL_WIDTH_CONCENTRATION", "Sensitivity" : 5 } ] } ], "TargetROIDefOptions" : [ { "BaseTargetROIDefName" : "", "Location" : { "Offset" : { "FirstPoint" : [ 0, 0, 1, 1 ], "FourthPoint" : [ 0, 100, 1, 1 ], "MeasuredByPercentage" : 1, "ReferenceObjectOriginIndex" : 0, "ReferenceObjectType" : "ROT_ATOMIC_OBJECT", "ReferenceXAxis" : { "AxisType" : "AT_MIDPOINT_EDGE", "EdgeIndex" : 0, "LengthReference" : "LR_X", "RotationAngle" : 90 }, "ReferenceYAxis" : { "AxisType" : "AT_MIDPOINT_EDGE", "EdgeIndex" : 1, "LengthReference" : "LR_Y", "RotationAngle" : 90 }, "SecondPoint" : [ 100, 0, 1, 1 ], "ThirdPoint" : [ 100, 100, 1, 1 ] } }, "Name" : "roi_default", "PauseFlag" : 0, "TaskSettingNameArray" : [ "BR_1" ] } ] }
Image Source:
https://boofcv.org/index.php?title=Performance:QrCode
Multiple
Blur
Curved
Other
OneD