tesseract  4.00.00dev
mf.cpp
Go to the documentation of this file.
1 /******************************************************************************
2  ** Filename: mf.c
3  ** Purpose: Micro-feature interface to flexible feature extractor.
4  ** Author: Dan Johnson
5  ** History: Thu May 24 09:08:38 1990, DSJ, Created.
6  **
7  ** (c) Copyright Hewlett-Packard Company, 1988.
8  ** Licensed under the Apache License, Version 2.0 (the "License");
9  ** you may not use this file except in compliance with the License.
10  ** You may obtain a copy of the License at
11  ** http://www.apache.org/licenses/LICENSE-2.0
12  ** Unless required by applicable law or agreed to in writing, software
13  ** distributed under the License is distributed on an "AS IS" BASIS,
14  ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  ** See the License for the specific language governing permissions and
16  ** limitations under the License.
17  ******************************************************************************/
18 /*----------------------------------------------------------------------------
19  Include Files and Type Defines
20 ----------------------------------------------------------------------------*/
21 #include "mf.h"
22 
23 #include "featdefs.h"
24 #include "mfdefs.h"
25 #include "mfx.h"
26 
27 #include <math.h>
28 
29 /*----------------------------------------------------------------------------
30  Global Data Definitions and Declarations
31 ----------------------------------------------------------------------------*/
32 /*----------------------------------------------------------------------------
33  Private Code
34 ----------------------------------------------------------------------------*/
45 FEATURE_SET ExtractMicros(TBLOB* Blob, const DENORM& cn_denorm) {
46  int NumFeatures;
47  MICROFEATURES Features, OldFeatures;
48  FEATURE_SET FeatureSet;
49  FEATURE Feature;
50  MICROFEATURE OldFeature;
51 
52  OldFeatures = BlobMicroFeatures(Blob, cn_denorm);
53  if (OldFeatures == NULL)
54  return NULL;
55  NumFeatures = count (OldFeatures);
56  FeatureSet = NewFeatureSet (NumFeatures);
57 
58  Features = OldFeatures;
59  iterate(Features) {
60  OldFeature = (MICROFEATURE) first_node (Features);
61  Feature = NewFeature (&MicroFeatureDesc);
62  Feature->Params[MFDirection] = OldFeature[ORIENTATION];
63  Feature->Params[MFXPosition] = OldFeature[XPOSITION];
64  Feature->Params[MFYPosition] = OldFeature[YPOSITION];
65  Feature->Params[MFLength] = OldFeature[MFLENGTH];
66 
67  // Bulge features are deprecated and should not be used. Set to 0.
68  Feature->Params[MFBulge1] = 0.0f;
69  Feature->Params[MFBulge2] = 0.0f;
70 
71 #ifndef _WIN32
72  // Assert that feature parameters are well defined.
73  int i;
74  for (i = 0; i < Feature->Type->NumParams; i++) {
75  ASSERT_HOST(!isnan(Feature->Params[i]));
76  }
77 #endif
78 
79  AddFeature(FeatureSet, Feature);
80  }
81  FreeMicroFeatures(OldFeatures);
82  return FeatureSet;
83 } /* ExtractMicros */
FEATURE_SET NewFeatureSet(int NumFeatures)
#define XPOSITION
Definition: mfdefs.h:36
Definition: mf.h:29
Definition: mf.h:29
const FEATURE_DESC_STRUCT * Type
Definition: ocrfeatures.h:64
#define ASSERT_HOST(x)
Definition: errcode.h:84
const FEATURE_DESC_STRUCT MicroFeatureDesc
Definition: mf.h:28
FEATURE_SET ExtractMicros(TBLOB *Blob, const DENORM &cn_denorm)
Definition: mf.cpp:45
FEATURE NewFeature(const FEATURE_DESC_STRUCT *FeatureDesc)
Definition: ocrfeatures.cpp:88
#define isnan(x)
Definition: mathfix.h:31
#define first_node(l)
Definition: oldlist.h:139
void FreeMicroFeatures(MICROFEATURES MicroFeatures)
Definition: mfdefs.cpp:48
#define MFLENGTH
Definition: mfdefs.h:38
Definition: mf.h:29
Definition: blobs.h:261
Definition: mf.h:28
#define ORIENTATION
Definition: mfdefs.h:39
MICROFEATURES BlobMicroFeatures(TBLOB *Blob, const DENORM &cn_denorm)
Definition: mfx.cpp:72
FLOAT32 Params[1]
Definition: ocrfeatures.h:65
FLOAT32 * MICROFEATURE
Definition: mfdefs.h:33
#define iterate(l)
Definition: oldlist.h:159
#define YPOSITION
Definition: mfdefs.h:37
int count(LIST var_list)
Definition: oldlist.cpp:103
Definition: mf.h:29
BOOL8 AddFeature(FEATURE_SET FeatureSet, FEATURE Feature)
Definition: ocrfeatures.cpp:43