Parameterized min_confidence and skip_level

This commit is contained in:
Matt Hill
2016-07-02 09:01:27 -04:00
parent f215f92a82
commit 075472a948
3 changed files with 21 additions and 8 deletions

View File

@@ -18,6 +18,7 @@
*/ */
#include "tesseract_ocr.h" #include "tesseract_ocr.h"
#include "config.h"
using namespace std; using namespace std;
using namespace cv; using namespace cv;
@@ -31,6 +32,7 @@ namespace alpr
{ {
const string MINIMUM_TESSERACT_VERSION = "3.03"; const string MINIMUM_TESSERACT_VERSION = "3.03";
this->postProcessor.setConfidenceThreshold(config->postProcessMinConfidence, config->postProcessConfidenceSkipLevel);
if (cmpVersion(tesseract.Version(), MINIMUM_TESSERACT_VERSION.c_str()) < 0) if (cmpVersion(tesseract.Version(), MINIMUM_TESSERACT_VERSION.c_str()) < 0)
{ {

View File

@@ -28,6 +28,9 @@ namespace alpr
{ {
this->config = config; this->config = config;
this->min_confidence = 0;
this->skip_level = 0;
stringstream filename; stringstream filename;
filename << config->getPostProcessRuntimeDir() << "/" << config->country << ".patterns"; filename << config->getPostProcessRuntimeDir() << "/" << config->country << ".patterns";
@@ -53,9 +56,6 @@ namespace alpr
} }
} }
//vector<RegexRule> test = rules["base"];
//for (int i = 0; i < test.size(); i++)
// cout << "Rule: " << test[i].regex << endl;
} }
PostProcess::~PostProcess() PostProcess::~PostProcess()
@@ -71,17 +71,23 @@ namespace alpr
} }
} }
} }
void PostProcess::setConfidenceThreshold(float min_confidence, float skip_level) {
this->min_confidence = min_confidence;
this->skip_level = skip_level;
}
void PostProcess::addLetter(string letter, int line_index, int charposition, float score) void PostProcess::addLetter(string letter, int line_index, int charposition, float score)
{ {
if (score < config->postProcessMinConfidence) if (score < min_confidence)
return; return;
insertLetter(letter, line_index, charposition, score); insertLetter(letter, line_index, charposition, score);
if (score < config->postProcessConfidenceSkipLevel) if (score < skip_level)
{ {
float adjustedScore = abs(config->postProcessConfidenceSkipLevel - score) + config->postProcessMinConfidence; float adjustedScore = abs(skip_level - score) + min_confidence;
insertLetter(SKIP_CHAR, line_index, charposition, adjustedScore ); insertLetter(SKIP_CHAR, line_index, charposition, adjustedScore );
} }
@@ -93,7 +99,7 @@ namespace alpr
void PostProcess::insertLetter(string letter, int line_index, int charposition, float score) void PostProcess::insertLetter(string letter, int line_index, int charposition, float score)
{ {
score = score - config->postProcessMinConfidence; score = score - min_confidence;
int existingIndex = -1; int existingIndex = -1;
if (letters.size() < charposition + 1) if (letters.size() < charposition + 1)
@@ -260,7 +266,7 @@ namespace alpr
{ {
if (letters[i].size() > 0) if (letters[i].size() > 0)
{ {
totalScore += (letters[i][0].totalscore / letters[i][0].occurrences) + config->postProcessMinConfidence; totalScore += (letters[i][0].totalscore / letters[i][0].occurrences) + min_confidence;
numScores++; numScores++;
} }
} }

View File

@@ -77,6 +77,8 @@ namespace alpr
std::vector<std::string> getPatterns(); std::vector<std::string> getPatterns();
void setConfidenceThreshold(float min_confidence, float skip_level);
private: private:
Config* config; Config* config;
@@ -94,6 +96,9 @@ namespace alpr
std::vector<PPResult> allPossibilities; std::vector<PPResult> allPossibilities;
std::set<std::string> allPossibilitiesLetters; std::set<std::string> allPossibilitiesLetters;
float min_confidence;
float skip_level;
}; };
} }