diff --git a/runtime_data/config/au.conf b/runtime_data/config/au.conf index 6022e86..db6c071 100644 --- a/runtime_data/config/au.conf +++ b/runtime_data/config/au.conf @@ -4,6 +4,7 @@ char_analysis_height_range = 0.15 char_analysis_height_step_size = 0.10 char_analysis_height_num_steps = 5 +segmentation_min_speckle_height_percent = 0.3 segmentation_min_box_width_px = 4 segmentation_min_charheight_percent = 0.4; segmentation_max_segment_width_percent_vs_average = 1.6; diff --git a/runtime_data/config/eu.conf b/runtime_data/config/eu.conf index 7365404..1f8e693 100644 --- a/runtime_data/config/eu.conf +++ b/runtime_data/config/eu.conf @@ -6,6 +6,7 @@ char_analysis_height_range = 0.15 char_analysis_height_step_size = 0.10 char_analysis_height_num_steps = 5 +segmentation_min_speckle_height_percent = 0.2 segmentation_min_box_width_px = 5 segmentation_min_charheight_percent = 0.4; segmentation_max_segment_width_percent_vs_average = 2.0; diff --git a/runtime_data/config/kr.conf b/runtime_data/config/kr.conf index babaae0..8eed2f6 100644 --- a/runtime_data/config/kr.conf +++ b/runtime_data/config/kr.conf @@ -5,6 +5,7 @@ char_analysis_height_range = 0.15 char_analysis_height_step_size = 0.10 char_analysis_height_num_steps = 5 +segmentation_min_speckle_height_percent = 0.15 segmentation_min_box_width_px = 4 segmentation_min_charheight_percent = 0.4; segmentation_max_segment_width_percent_vs_average = 2.0; diff --git a/runtime_data/config/us.conf b/runtime_data/config/us.conf index 1c63944..19add48 100644 --- a/runtime_data/config/us.conf +++ b/runtime_data/config/us.conf @@ -4,6 +4,7 @@ char_analysis_height_range = 0.20 char_analysis_height_step_size = 0.10 char_analysis_height_num_steps = 4 +segmentation_min_speckle_height_percent = 0.3 segmentation_min_box_width_px = 4 segmentation_min_charheight_percent = 0.5; segmentation_max_segment_width_percent_vs_average = 1.35; diff --git a/src/openalpr/config.cpp b/src/openalpr/config.cpp index 4ce8fbb..e2f228c 100644 --- a/src/openalpr/config.cpp +++ b/src/openalpr/config.cpp @@ -270,6 +270,7 @@ namespace alpr charAnalysisHeightStepSize = getFloat(ini, "", "char_analysis_height_step_size", 0); charAnalysisNumSteps = getInt(ini, "", "char_analysis_height_num_steps", 0); + segmentationMinSpeckleHeightPercent = getFloat(ini, "", "segmentation_min_speckle_height_percent", 0); segmentationMinBoxWidthPx = getInt(ini, "", "segmentation_min_box_width_px", 0); segmentationMinCharHeightPercent = getFloat(ini, "", "segmentation_min_charheight_percent", 0); segmentationMaxCharWidthvsAverage = getFloat(ini, "", "segmentation_max_segment_width_percent_vs_average", 0); diff --git a/src/openalpr/config.h b/src/openalpr/config.h index 47ef75e..1dd0962 100644 --- a/src/openalpr/config.h +++ b/src/openalpr/config.h @@ -97,6 +97,7 @@ namespace alpr float plateLinesSensitivityVertical; float plateLinesSensitivityHorizontal; + float segmentationMinSpeckleHeightPercent; int segmentationMinBoxWidthPx; float segmentationMinCharHeightPercent; float segmentationMaxCharWidthvsAverage; diff --git a/src/openalpr/segmentation/charactersegmenter.cpp b/src/openalpr/segmentation/charactersegmenter.cpp index 491d0f0..5311fa4 100644 --- a/src/openalpr/segmentation/charactersegmenter.cpp +++ b/src/openalpr/segmentation/charactersegmenter.cpp @@ -379,7 +379,7 @@ namespace alpr void CharacterSegmenter::removeSmallContours(vector thresholds, float avgCharHeight, TextLine textLine) { //const float MIN_CHAR_AREA = 0.02 * avgCharWidth * avgCharHeight; // To clear out the tiny specks - const float MIN_CONTOUR_HEIGHT = 0.3 * avgCharHeight; + const float MIN_CONTOUR_HEIGHT = config->segmentationMinSpeckleHeightPercent * avgCharHeight; Mat textLineMask = Mat::zeros(thresholds[0].size(), CV_8U); fillConvexPoly(textLineMask, textLine.linePolygon.data(), textLine.linePolygon.size(), Scalar(255,255,255));