mirror of
https://github.com/tesseract-ocr/tesseract.git
synced 2025-01-18 14:41:36 +08:00
modernise classify/ocrfeatures.cpp
This commit is contained in:
parent
8eeb053542
commit
52e4c77df8
@ -15,9 +15,9 @@
|
||||
** See the License for the specific language governing permissions and
|
||||
** limitations under the License.
|
||||
******************************************************************************/
|
||||
/**----------------------------------------------------------------------------
|
||||
/*----------------------------------------------------------------------------
|
||||
Include Files and Type Defines
|
||||
----------------------------------------------------------------------------**/
|
||||
----------------------------------------------------------------------------*/
|
||||
#include "ocrfeatures.h"
|
||||
#include "emalloc.h"
|
||||
#include "callcpp.h"
|
||||
@ -28,24 +28,20 @@
|
||||
#include <assert.h>
|
||||
#include <math.h>
|
||||
|
||||
/**----------------------------------------------------------------------------
|
||||
/*----------------------------------------------------------------------------
|
||||
Public Code
|
||||
----------------------------------------------------------------------------**/
|
||||
/*---------------------------------------------------------------------------*/
|
||||
BOOL8 AddFeature(FEATURE_SET FeatureSet, FEATURE Feature) {
|
||||
/*
|
||||
** 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.
|
||||
----------------------------------------------------------------------------*/
|
||||
/**
|
||||
* 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.
|
||||
* @param FeatureSet set of features to add Feature to
|
||||
* @param Feature feature to be added to FeatureSet
|
||||
* @return TRUE if feature added to set, FALSE if set is already full.
|
||||
* @note History: Tue May 22 17:22:23 1990, DSJ, Created.
|
||||
*/
|
||||
BOOL8 AddFeature(FEATURE_SET FeatureSet, FEATURE Feature) {
|
||||
if (FeatureSet->NumFeatures >= FeatureSet->MaxNumFeatures) {
|
||||
FreeFeature(Feature);
|
||||
return FALSE;
|
||||
@ -55,17 +51,13 @@ BOOL8 AddFeature(FEATURE_SET FeatureSet, FEATURE Feature) {
|
||||
return TRUE;
|
||||
} /* AddFeature */
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
void FreeFeature(FEATURE Feature) {
|
||||
/*
|
||||
** 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.
|
||||
/**
|
||||
* Release the memory consumed by the specified feature.
|
||||
* @param Feature feature to be deallocated.
|
||||
* @return none
|
||||
* @note History: Mon May 21 13:33:27 1990, DSJ, Created.
|
||||
*/
|
||||
void FreeFeature(FEATURE Feature) {
|
||||
if (Feature) {
|
||||
free_struct (Feature, sizeof (FEATURE_STRUCT)
|
||||
+ sizeof (FLOAT32) * (Feature->Type->NumParams - 1),
|
||||
@ -75,19 +67,15 @@ void FreeFeature(FEATURE Feature) {
|
||||
} /* FreeFeature */
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
void FreeFeatureSet(FEATURE_SET FeatureSet) {
|
||||
/*
|
||||
** 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.
|
||||
/**
|
||||
* Release the memory consumed by the specified feature
|
||||
* set. This routine also frees the memory consumed by the
|
||||
* features contained in the set.
|
||||
* @param FeatureSet set of features to be freed
|
||||
* @return none
|
||||
* @note History: Mon May 21 13:59:46 1990, DSJ, Created.
|
||||
*/
|
||||
void FreeFeatureSet(FEATURE_SET FeatureSet) {
|
||||
int i;
|
||||
|
||||
if (FeatureSet) {
|
||||
@ -98,18 +86,14 @@ void FreeFeatureSet(FEATURE_SET FeatureSet) {
|
||||
} /* FreeFeatureSet */
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
FEATURE NewFeature(const FEATURE_DESC_STRUCT* FeatureDesc) {
|
||||
/*
|
||||
** 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.
|
||||
/**
|
||||
* Allocate and return a new feature of the specified
|
||||
* type.
|
||||
* @param FeatureDesc description of feature to be created.
|
||||
* @return New #FEATURE.
|
||||
* @note History: Mon May 21 14:06:42 1990, DSJ, Created.
|
||||
*/
|
||||
FEATURE NewFeature(const FEATURE_DESC_STRUCT* FeatureDesc) {
|
||||
FEATURE Feature;
|
||||
|
||||
Feature = (FEATURE) alloc_struct (sizeof (FEATURE_STRUCT) +
|
||||
@ -122,18 +106,14 @@ FEATURE NewFeature(const FEATURE_DESC_STRUCT* FeatureDesc) {
|
||||
} /* NewFeature */
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
FEATURE_SET NewFeatureSet(int NumFeatures) {
|
||||
/*
|
||||
** 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.
|
||||
/**
|
||||
* Allocate and return a new feature set large enough to
|
||||
* hold the specified number of features.
|
||||
* @param NumFeatures maximum # of features to be put in feature set
|
||||
* @return New #FEATURE_SET.
|
||||
* @note History: Mon May 21 14:22:40 1990, DSJ, Created.
|
||||
*/
|
||||
FEATURE_SET NewFeatureSet(int NumFeatures) {
|
||||
FEATURE_SET FeatureSet;
|
||||
|
||||
FeatureSet = (FEATURE_SET) Emalloc (sizeof (FEATURE_SET_STRUCT) +
|
||||
@ -145,23 +125,20 @@ FEATURE_SET NewFeatureSet(int NumFeatures) {
|
||||
} /* NewFeatureSet */
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
FEATURE ReadFeature(FILE *File, const FEATURE_DESC_STRUCT* FeatureDesc) {
|
||||
/*
|
||||
** 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.
|
||||
/**
|
||||
* 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.
|
||||
* @param File open text file to read feature from
|
||||
* @param FeatureDesc specifies type of feature to read from File
|
||||
* @return New #FEATURE read from File.
|
||||
* @note Exceptions: #ILLEGAL_FEATURE_PARAM if text file doesn't match expected format
|
||||
* @note History: Wed May 23 08:53:16 1990, DSJ, Created.
|
||||
*/
|
||||
FEATURE ReadFeature(FILE *File, const FEATURE_DESC_STRUCT* FeatureDesc) {
|
||||
FEATURE Feature;
|
||||
int i;
|
||||
|
||||
@ -177,22 +154,18 @@ FEATURE ReadFeature(FILE *File, const FEATURE_DESC_STRUCT* FeatureDesc) {
|
||||
} /* ReadFeature */
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
FEATURE_SET ReadFeatureSet(FILE *File, const FEATURE_DESC_STRUCT* FeatureDesc) {
|
||||
/*
|
||||
** 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.
|
||||
/**
|
||||
* 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.
|
||||
* @param File open text file to read new feature set from
|
||||
* @param FeatureDesc specifies type of feature to read from File
|
||||
* @return New feature set read from File.
|
||||
* @note History: Wed May 23 09:17:31 1990, DSJ, Created.
|
||||
*/
|
||||
FEATURE_SET ReadFeatureSet(FILE *File, const FEATURE_DESC_STRUCT* FeatureDesc) {
|
||||
FEATURE_SET FeatureSet;
|
||||
int NumFeatures;
|
||||
int i;
|
||||
@ -208,20 +181,17 @@ FEATURE_SET ReadFeatureSet(FILE *File, const FEATURE_DESC_STRUCT* FeatureDesc) {
|
||||
} /* ReadFeatureSet */
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/*
|
||||
** Parameters:
|
||||
** Feature: feature to write out to str
|
||||
** str: string to write Feature to
|
||||
** Operation: Appends a textual representation of Feature to str.
|
||||
** 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.
|
||||
/**
|
||||
* Appends a textual representation of Feature to str.
|
||||
* 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.
|
||||
* @param Feature feature to write out to str
|
||||
* @param str string to write Feature to
|
||||
* @return none
|
||||
* @note History: Wed May 23 09:28:18 1990, DSJ, Created.
|
||||
*/
|
||||
void WriteFeature(FEATURE Feature, STRING* str) {
|
||||
for (int i = 0; i < Feature->Type->NumParams; i++) {
|
||||
@ -234,19 +204,15 @@ void WriteFeature(FEATURE Feature, STRING* str) {
|
||||
} /* WriteFeature */
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/*
|
||||
** Parameters:
|
||||
** FeatureSet: feature set to write to File
|
||||
** str: string to write Feature to
|
||||
** 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.
|
||||
/**
|
||||
* 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.
|
||||
* @param FeatureSet feature set to write to File
|
||||
* @param str string to write Feature to
|
||||
* @return none
|
||||
* @note History: Wed May 23 10:06:03 1990, DSJ, Created.
|
||||
*/
|
||||
void WriteFeatureSet(FEATURE_SET FeatureSet, STRING* str) {
|
||||
if (FeatureSet) {
|
||||
@ -259,23 +225,22 @@ void WriteFeatureSet(FEATURE_SET FeatureSet, STRING* str) {
|
||||
} /* WriteFeatureSet */
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
void WriteOldParamDesc(FILE *File, const FEATURE_DESC_STRUCT* FeatureDesc) {
|
||||
/*
|
||||
** 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.
|
||||
/**
|
||||
* Write a textual representation of FeatureDesc to File
|
||||
* in the old format (i.e. the format used by the clusterer).
|
||||
*
|
||||
* This format is:
|
||||
* @verbatim
|
||||
* Number of Params
|
||||
* Description of Param 1
|
||||
* ...
|
||||
* @endverbatim
|
||||
* @param File open text file to write FeatureDesc to
|
||||
* @param FeatureDesc feature descriptor to write to File
|
||||
* @return none
|
||||
* @note History: Fri May 25 15:27:18 1990, DSJ, Created.
|
||||
*/
|
||||
void WriteOldParamDesc(FILE *File, const FEATURE_DESC_STRUCT* FeatureDesc) {
|
||||
int i;
|
||||
|
||||
fprintf (File, "%d\n", FeatureDesc->NumParams);
|
||||
|
Loading…
Reference in New Issue
Block a user