#include <intfeaturedist.h>
Definition at line 38 of file intfeaturedist.h.
◆ IntFeatureDist()
tesseract::IntFeatureDist::IntFeatureDist |
( |
| ) |
|
Definition at line 24 of file intfeaturedist.cpp.
26 , total_feature_weight_(0.0)
27 , feature_map_(
nullptr)
29 , features_delta_one_(
nullptr)
30 , features_delta_two_(
nullptr) {}
◆ ~IntFeatureDist()
tesseract::IntFeatureDist::~IntFeatureDist |
( |
| ) |
|
◆ DebugFeatureDistance()
double tesseract::IntFeatureDist::DebugFeatureDistance |
( |
const std::vector< int > & |
features | ) |
const |
Definition at line 102 of file intfeaturedist.cpp.
103 const int num_test_features = features.size();
104 const double denominator = total_feature_weight_ + num_test_features;
105 double misses = denominator;
106 for (
int i = 0; i < num_test_features; ++i) {
107 const int index = features[i];
108 const double weight = 1.0;
110 tprintf(
"Testing feature weight %g:", weight);
112 if (features_[index]) {
114 misses -= 2.0 * weight;
116 }
else if (features_delta_one_[index]) {
117 misses -= 1.5 * weight;
119 }
else if (features_delta_two_[index]) {
121 misses -= 1.0 * weight;
128 for (
int i = 0; i < size_; ++i) {
134 tprintf(
"\nMinus one features:");
135 for (
int i = 0; i < size_; ++i) {
136 if (features_delta_one_[i]) {
141 tprintf(
"\nMinus two features:");
142 for (
int i = 0; i < size_; ++i) {
143 if (features_delta_two_[i]) {
149 return misses / denominator;
void tprintf(const char *format,...)
INT_FEATURE_STRUCT InverseMapFeature(int map_feature) const
◆ FeatureDistance()
double tesseract::IntFeatureDist::FeatureDistance |
( |
const std::vector< int > & |
features | ) |
const |
Definition at line 80 of file intfeaturedist.cpp.
81 const int num_test_features = features.size();
82 const double denominator = total_feature_weight_ + num_test_features;
83 double misses = denominator;
84 for (
int i = 0; i < num_test_features; ++i) {
85 const int index = features[i];
86 const double weight = 1.0;
87 if (features_[index]) {
89 misses -= 2.0 * weight;
90 }
else if (features_delta_one_[index]) {
91 misses -= 1.5 * weight;
92 }
else if (features_delta_two_[index]) {
94 misses -= 1.0 * weight;
97 return misses / denominator;
◆ Init()
void tesseract::IntFeatureDist::Init |
( |
const IntFeatureMap * |
feature_map | ) |
|
Definition at line 37 of file intfeaturedist.cpp.
38 size_ = feature_map->sparse_size();
40 feature_map_ = feature_map;
41 features_ =
new bool[size_];
42 features_delta_one_ =
new bool[size_];
43 features_delta_two_ =
new bool[size_];
44 memset(features_,
false, size_ *
sizeof(features_[0]));
45 memset(features_delta_one_,
false, size_ *
sizeof(features_delta_one_[0]));
46 memset(features_delta_two_,
false, size_ *
sizeof(features_delta_two_[0]));
47 total_feature_weight_ = 0.0;
◆ Set()
void tesseract::IntFeatureDist::Set |
( |
const std::vector< int > & |
indexed_features, |
|
|
int |
canonical_count, |
|
|
bool |
value |
|
) |
| |
Definition at line 52 of file intfeaturedist.cpp.
54 total_feature_weight_ = canonical_count;
55 for (
int f : indexed_features) {
57 for (
int dir = -kNumOffsetMaps; dir <= kNumOffsetMaps; ++dir) {
63 features_delta_one_[mapped_f] = value;
64 for (
int dir2 = -kNumOffsetMaps; dir2 <= kNumOffsetMaps; ++dir2) {
68 const int mapped_f2 = feature_map_->
OffsetFeature(mapped_f, dir2);
70 features_delta_two_[mapped_f2] = value;
int OffsetFeature(int index_feature, int dir) const
The documentation for this class was generated from the following files: