#include "mfdefs.h"
#include "mfoutline.h"
#include "clusttool.h"
#include "const.h"
#include "intfx.h"
#include "normalis.h"
#include "params.h"
#include <math.h>
Go to the source code of this file.
◆ NormalizeAngle
#define NormalizeAngle |
( |
|
A | ) |
( (((A)<0)?((A)+2*PI):(A)) / (2*PI) ) |
◆ BlobMicroFeatures()
This routine extracts micro-features from the specified blob and returns a list of the micro-features. All micro-features are normalized according to the specified line statistics.
- Parameters
-
Blob | blob to extract micro-features from |
cn_denorm | control parameter to feature extractor |
- Returns
- List of micro-features extracted from the blob.
- Note
- Exceptions: none
-
History: 7/21/89, DSJ, Created.
Definition at line 72 of file mfx.cpp.
75 LIST RemainingOutlines;
81 RemainingOutlines = Outlines;
87 RemainingOutlines = Outlines;
MICROFEATURES ConvertToMicroFeatures(MFOUTLINE Outline, MICROFEATURES MicroFeatures)
void FreeOutlines(LIST Outlines)
void FindDirectionChanges(MFOUTLINE Outline, FLOAT32 MinSlope, FLOAT32 MaxSlope)
LIST ConvertBlob(TBLOB *blob)
void MarkDirectionChanges(MFOUTLINE Outline)
double classify_max_slope
void CharNormalizeOutline(MFOUTLINE Outline, const DENORM &cn_denorm)
double classify_min_slope
◆ ComputeOrientation()
This routine computes the orientation parameter of the specified micro-feature. The orientation is the angle of the vector from Start to End. It is normalized to a number between 0 and 1 where 0 corresponds to 0 degrees and 1 corresponds to 360 degrees. The actual range is [0,1), i.e. 1 is excluded from the range (since it is actual the same orientation as 0). This routine assumes that Start and End are not the same point.
- Parameters
-
Start | starting edge point of micro-feature |
End | ending edge point of micro-feature |
- Note
- Globals: none
- Returns
- Orientation parameter for the specified micro-feature.
- Note
- Exceptions: none
-
History: 7/27/89, DSJ, Created.
Definition at line 120 of file mfx.cpp.
#define NormalizeAngle(A)
◆ ConvertToMicroFeatures()
Convert Outline to MicroFeatures
- Parameters
-
Outline | outline to extract micro-features from |
MicroFeatures | list of micro-features to add to |
- Returns
- List of micro-features with new features added to front.
- Note
- Globals: none
-
Exceptions: none
-
History: 7/26/89, DSJ, Created.
Definition at line 140 of file mfx.cpp.
148 return (MicroFeatures);
154 if (!
PointAt(Current)->Hidden) {
161 while (Last != First);
163 return (MicroFeatures);
MICROFEATURE ExtractMicroFeature(MFOUTLINE Start, MFOUTLINE End)
#define DegenerateOutline(O)
LIST push(LIST list, void *element)
FEATURE NewFeature(const FEATURE_DESC_STRUCT *FeatureDesc)
MFOUTLINE NextExtremity(MFOUTLINE EdgePoint)
◆ ExtractMicroFeature()
This routine computes the feature parameters which describe the micro-feature that starts and Start and ends at End. A new micro-feature is allocated, filled with the feature parameters, and returned. The routine assumes that Start and End are not the same point. If they are the same point, NULL is returned, a warning message is printed, and the current outline is dumped to stdout.
- Parameters
-
Start | starting point of micro-feature |
End | ending point of micro-feature |
- Returns
- New micro-feature or NULL if the feature was rejected.
- Note
- Globals: none
-
Exceptions: none
-
History:
- 7/26/89, DSJ, Created.
- 11/17/89, DSJ, Added handling for Start and End same point.
Definition at line 183 of file mfx.cpp.
FLOAT32 NormalizedAngleFrom(FPOINT *Point1, FPOINT *Point2, FLOAT32 FullScale)
FLOAT32 DistanceBetween(FPOINT A, FPOINT B)
FEATURE NewFeature(const FEATURE_DESC_STRUCT *FeatureDesc)
MICROFEATURE NewMicroFeature()
◆ classify_max_slope
double classify_max_slope = 2.414213562 |
"Slope above which lines are called vertical"
Definition at line 39 of file mfx.cpp.
◆ classify_min_slope
double classify_min_slope = 0.414213562 |
"Slope below which lines are called horizontal"
Definition at line 37 of file mfx.cpp.