Tesseract
3.02
|
#include <osdetect.h>
Public Member Functions | |
OrientationDetector (OSResults *) | |
bool | detect_blob (BLOB_CHOICE_LIST *scores) |
int | get_orientation () |
Definition at line 82 of file osdetect.h.
OrientationDetector::OrientationDetector | ( | OSResults * | osr | ) |
Definition at line 370 of file osdetect.cpp.
{ osr_ = osr; }
bool OrientationDetector::detect_blob | ( | BLOB_CHOICE_LIST * | scores | ) |
Definition at line 376 of file osdetect.cpp.
{ float blob_o_score[4] = {0.0, 0.0, 0.0, 0.0}; float total_blob_o_score = 0.0; for (int i = 0; i < 4; ++i) { BLOB_CHOICE_IT choice_it; choice_it.set_to_list(scores + i); if (!choice_it.empty()) { // The certainty score ranges between [-20,0]. This is converted here to // [0,1], with 1 indicating best match. blob_o_score[i] = 1 + 0.05 * choice_it.data()->certainty(); total_blob_o_score += blob_o_score[i]; } } // Normalize the orientation scores for the blob and use them to // update the aggregated orientation score. for (int i = 0; total_blob_o_score != 0 && i < 4; ++i) { osr_->orientations[i] += log(blob_o_score[i] / total_blob_o_score); } float first = -1; float second = -1; int idx = -1; for (int i = 0; i < 4; ++i) { if (osr_->orientations[i] > first) { idx = i; second = first; first = osr_->orientations[i]; } else if (osr_->orientations[i] > second) { second = osr_->orientations[i]; } } return first / second > kOrientationAcceptRatio; }
int OrientationDetector::get_orientation | ( | ) |
Definition at line 413 of file osdetect.cpp.
{ osr_->update_best_orientation(); return osr_->best_result.orientation_id; }