Tesseract 3.02

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Macros | Typedefs | Functions
ocrfeatures.h File Reference
`#include "blobs.h"`
`#include <stdio.h>`

Go to the source code of this file.

## Classes
struct | PARAM_DESC
struct | FEATURE_DESC_STRUCT
struct | FEATURE_STRUCT
struct | FEATURE_SET_STRUCT
struct | FEATURE_EXT_STRUCT

## Macros
#define | FEAT_NAME_SIZE 80
#define | ILLEGAL_FEATURE_PARAM 1000
#define | ILLEGAL_NUM_FEATURES 1001
#define | StartParamDesc(Name) const PARAM_DESC Name[] = {
#define | DefineParam(Circular, NonEssential, Min, Max)
#define | EndParamDesc };
#define | DefineFeature(Name, NL, NC, SN, PN)

## Typedefs
typedef FEATURE_DESC_STRUCT * | FEATURE_DESC
typedef FEATURE_STRUCT * | FEATURE
typedef FEATURE_SET_STRUCT * | FEATURE_SET
typedef char * | CHAR_FEATURES
typedef FEATURE_SET(* | FX_FUNC )(TBLOB *, const DENORM &)

## Functions
BOOL8 | AddFeature (FEATURE_SET FeatureSet, FEATURE Feature)
void | FreeFeature (FEATURE Feature)
void | FreeFeatureSet (FEATURE_SET FeatureSet)
FEATURE | NewFeature (const FEATURE_DESC_STRUCT *FeatureDesc)
FEATURE_SET | NewFeatureSet (int NumFeatures)
FEATURE | ReadFeature (FILE *File, const FEATURE_DESC_STRUCT *FeatureDesc)
FEATURE_SET | ReadFeatureSet (FILE *File, const FEATURE_DESC_STRUCT *FeatureDesc)
void | WriteFeature (FILE *File, FEATURE Feature)
void | WriteFeatureSet (FILE *File, FEATURE_SET FeatureSet)
void | WriteOldParamDesc (FILE *File, const FEATURE_DESC_STRUCT *FeatureDesc)

## Macro Definition Documentation

#define DefineFeature | ( |  | Name,
|  |  | NL,
|  |  | NC,
|  |  | SN,
|  |  | PN
| ) |  |

Value:
const FEATURE_DESC_STRUCT Name = { \
((NL) + (NC)), SN, PN};

Definition at line 105 of file ocrfeatures.h.

#define DefineParam | ( |  | Circular,
|  |  | NonEssential,
|  |  | Min,
|  |  | Max
| ) |  |

Value:
{Circular, NonEssential, Min, Max, \
(Max) - (Min), (((Max) - (Min))/2.0), (((Max) + (Min))/2.0)},

Definition at line 93 of file ocrfeatures.h.

#define EndParamDesc };

Definition at line 97 of file ocrfeatures.h.

#define FEAT_NAME_SIZE 80

Definition at line 32 of file ocrfeatures.h.

#define ILLEGAL_FEATURE_PARAM 1000

Definition at line 35 of file ocrfeatures.h.

#define ILLEGAL_NUM_FEATURES 1001

Definition at line 36 of file ocrfeatures.h.

#define StartParamDesc | ( |  | Name | ) | const PARAM_DESC Name[] = {

Definition at line 90 of file ocrfeatures.h.

## Typedef Documentation

typedef char* CHAR_FEATURES

Definition at line 79 of file ocrfeatures.h.

typedef FEATURE_STRUCT* FEATURE

Definition at line 66 of file ocrfeatures.h.

typedef FEATURE_DESC_STRUCT* FEATURE_DESC

Definition at line 60 of file ocrfeatures.h.

typedef FEATURE_SET_STRUCT* FEATURE_SET

Definition at line 73 of file ocrfeatures.h.

typedef FEATURE_SET(* FX_FUNC)(TBLOB *, const DENORM &)

Definition at line 81 of file ocrfeatures.h.

## Function Documentation

BOOL8 AddFeature | ( | FEATURE_SET | FeatureSet,
|  | FEATURE | Feature
| ) |  |

Include Files and Type Defines —————————————————————————- ---------------------------------------------------------------------------- Public Code —————————————————————————-

Definition at line 35 of file ocrfeatures.cpp.

{
/*
** Parameters:
** FeatureSet set of features to add Feature to
** Feature feature to be added to FeatureSet
** Globals: none
** Operation: Add a feature to a feature set. If the feature set is
** already full, FALSE is returned to indicate that the
** feature could not be added to the set; otherwise, TRUE is
** returned.
** Return: TRUE if feature added to set, FALSE if set is already full.
** Exceptions: none
** History: Tue May 22 17:22:23 1990, DSJ, Created.
*/
if (FeatureSet->NumFeatures >= FeatureSet->MaxNumFeatures) {
FreeFeature(Feature);
return FALSE;
}
FeatureSet->Features[FeatureSet->NumFeatures++] = Feature;
return TRUE;
} /* AddFeature */

void FreeFeature | ( | FEATURE | Feature | ) |

Definition at line 59 of file ocrfeatures.cpp.

{
/*
** Parameters:
** Feature feature to be deallocated.
** Globals: none
** Operation: Release the memory consumed by the specified feature.
** Return: none
** Exceptions: none
** History: Mon May 21 13:33:27 1990, DSJ, Created.
*/
if (Feature) {
free_struct (Feature, sizeof (FEATURE_STRUCT)
+ sizeof (FLOAT32) * (Feature->Type->NumParams - 1),
"sizeof(FEATURE_STRUCT)+sizeof(FLOAT32)*(NumParamsIn(Feature)-1)");
}
} /* FreeFeature */

void FreeFeatureSet | ( | FEATURE_SET | FeatureSet | ) |

Definition at line 79 of file ocrfeatures.cpp.

{
/*
** Parameters:
** FeatureSet set of features to be freed
** Globals: none
** Operation: Release the memory consumed by the specified feature
** set. This routine also frees the memory consumed by the
** features contained in the set.
** Return: none
** Exceptions: none
** History: Mon May 21 13:59:46 1990, DSJ, Created.
*/
int i;
if (FeatureSet) {
for (i = 0; i < FeatureSet->NumFeatures; i++)
FreeFeature(FeatureSet->Features[i]);
memfree(FeatureSet);
}
} /* FreeFeatureSet */

FEATURE NewFeature | ( | const FEATURE_DESC_STRUCT * | FeatureDesc | ) |

Definition at line 102 of file ocrfeatures.cpp.

{
/*
** Parameters:
** FeatureDesc description of feature to be created.
** Globals: none
** Operation: Allocate and return a new feature of the specified
** type.
** Return: New feature.
** Exceptions: none
** History: Mon May 21 14:06:42 1990, DSJ, Created.
*/
FEATURE Feature;
Feature = (FEATURE) alloc_struct (sizeof (FEATURE_STRUCT) +
(FeatureDesc->NumParams - 1) *
sizeof (FLOAT32),
"sizeof(FEATURE_STRUCT)+sizeof(FLOAT32)*(NumParamsIn(Feature)-1)");
Feature->Type = FeatureDesc;
return (Feature);
} /* NewFeature */

FEATURE_SET NewFeatureSet | ( | int | NumFeatures | ) |

Definition at line 126 of file ocrfeatures.cpp.

{
/*
** Parameters:
** NumFeatures maximum # of features to be put in feature set
** Globals: none
** Operation: Allocate and return a new feature set large enough to
** hold the specified number of features.
** Return: New feature set.
** Exceptions: none
** History: Mon May 21 14:22:40 1990, DSJ, Created.
*/
FEATURE_SET FeatureSet;
FeatureSet = (FEATURE_SET) Emalloc (sizeof (FEATURE_SET_STRUCT) +
(NumFeatures - 1) * sizeof (FEATURE));
FeatureSet->MaxNumFeatures = NumFeatures;
FeatureSet->NumFeatures = 0;
return (FeatureSet);
} /* NewFeatureSet */

FEATURE ReadFeature | ( | FILE * | File,
|  | const FEATURE_DESC_STRUCT * | FeatureDesc
| ) |  |

Definition at line 149 of file ocrfeatures.cpp.

{
/*
** Parameters:
** File open text file to read feature from
** FeatureDesc specifies type of feature to read from File
** Globals: none
** Operation: Create a new feature of the specified type and read in
** the value of its parameters from File. The extra penalty
** for the feature is also computed by calling the appropriate
** function for the specified feature type. The correct text
** representation for a feature is a list of N floats where
** N is the number of parameters in the feature.
** Return: New feature read from File.
** Exceptions: ILLEGAL_FEATURE_PARAM if text file doesn't match expected format
** History: Wed May 23 08:53:16 1990, DSJ, Created.
*/
FEATURE Feature;
int i;
Feature = NewFeature (FeatureDesc);
for (i = 0; i < Feature->Type->NumParams; i++) {
if (fscanf (File, "%f", &(Feature->Params[i])) != 1)
DoError (ILLEGAL_FEATURE_PARAM, "Illegal feature parameter spec");
#ifndef _WIN32
assert (!isnan(Feature->Params[i]));
#endif
}
return (Feature);
} /* ReadFeature */

FEATURE_SET ReadFeatureSet | ( | FILE * | File,
|  | const FEATURE_DESC_STRUCT * | FeatureDesc
| ) |  |

Definition at line 182 of file ocrfeatures.cpp.

{
/*
** Parameters:
** File open text file to read new feature set from
** FeatureDesc specifies type of feature to read from File
** Globals: none
** Operation: Create a new feature set of the specified type and read in
** the features from File. The correct text representation
** for a feature set is an integer which specifies the number (N)
** of features in a set followed by a list of N feature
** descriptions.
** Return: New feature set read from File.
** Exceptions: none
** History: Wed May 23 09:17:31 1990, DSJ, Created.
*/
FEATURE_SET FeatureSet;
int NumFeatures;
int i;
if (fscanf (File, "%d", &NumFeatures) != 1 || NumFeatures < 0)
DoError (ILLEGAL_NUM_FEATURES, "Illegal number of features in set");
FeatureSet = NewFeatureSet (NumFeatures);
for (i = 0; i < NumFeatures; i++)
AddFeature (FeatureSet, ReadFeature (File, FeatureDesc));
return (FeatureSet);
} /* ReadFeatureSet */

void WriteFeature | ( | FILE * | File,
|  | FEATURE | Feature
| ) |  |

Definition at line 214 of file ocrfeatures.cpp.

{
/*
** Parameters:
** File open text file to write Feature to
** Feature feature to write out to File
** Globals: none
** Operation: Write a textual representation of Feature to File.
** This representation is simply a list of the N parameters
** of the feature, terminated with a newline. It is assumed
** that the ExtraPenalty field can be reconstructed from the
** parameters of the feature. It is also assumed that the
** feature type information is specified or assumed elsewhere.
** Return: none
** Exceptions: none
** History: Wed May 23 09:28:18 1990, DSJ, Created.
*/
int i;
for (i = 0; i < Feature->Type->NumParams; i++) {
#ifndef _WIN32
assert(!isnan(Feature->Params[i]));
#endif
fprintf(File, " %g", Feature->Params[i]);
}
fprintf(File, "\n");
} /* WriteFeature */

void WriteFeatureSet | ( | FILE * | File,
|  | FEATURE_SET | FeatureSet
| ) |  |

Definition at line 243 of file ocrfeatures.cpp.

{
/*
** Parameters:
** File open text file to write FeatureSet to
** FeatureSet feature set to write to File
** Globals: none
** Operation: Write a textual representation of FeatureSet to File.
** This representation is an integer specifying the number of
** features in the set, followed by a newline, followed by
** text representations for each feature in the set.
** Return: none
** Exceptions: none
** History: Wed May 23 10:06:03 1990, DSJ, Created.
*/
int i;
if (FeatureSet) {
fprintf (File, "%d\n", FeatureSet->NumFeatures);
for (i = 0; i < FeatureSet->NumFeatures; i++)
WriteFeature (File, FeatureSet->Features[i]);
}
} /* WriteFeatureSet */

void WriteOldParamDesc | ( | FILE * | File,
|  | const FEATURE_DESC_STRUCT * | FeatureDesc
| ) |  |

Definition at line 268 of file ocrfeatures.cpp.

{
/*
** Parameters:
** File open text file to write FeatureDesc to
** FeatureDesc feature descriptor to write to File
** Globals: none
** Operation: Write a textual representation of FeatureDesc to File
** in the old format (i.e. the format used by the clusterer).
** This format is:
** Number of Params
** Description of Param 1
** ...
** Return: none
** Exceptions: none
** History: Fri May 25 15:27:18 1990, DSJ, Created.
*/
int i;
fprintf (File, "%d\n", FeatureDesc->NumParams);
for (i = 0; i < FeatureDesc->NumParams; i++) {
if (FeatureDesc->ParamDesc[i].Circular)
fprintf (File, "circular ");
else
fprintf (File, "linear ");
if (FeatureDesc->ParamDesc[i].NonEssential)
fprintf (File, "non-essential ");
else
fprintf (File, "essential ");
fprintf (File, "%f %f\n",
FeatureDesc->ParamDesc[i].Min, FeatureDesc->ParamDesc[i].Max);
}
} /* WriteOldParamDesc */