Name
create_ocr_class_mlpT_create_ocr_class_mlpCreateOcrClassMlpcreate_ocr_class_mlpCreateOcrClassMlpCreateOcrClassMlp — Erzeugen eines OCR-Klassifikators unter Verwendung eines
mehrschichtigen Perzeptrons.
Herror create_ocr_class_mlp(const HTuple& WidthCharacter, const HTuple& HeightCharacter, const HTuple& Interpolation, const HTuple& Features, const HTuple& Characters, const HTuple& NumHidden, const HTuple& Preprocessing, const HTuple& NumComponents, const HTuple& RandSeed, Hlong* OCRHandle)
void HOCRMlp::CreateOcrClassMlp(const HTuple& WidthCharacter, const HTuple& HeightCharacter, const HTuple& Interpolation, const HTuple& Features, const HTuple& Characters, const HTuple& NumHidden, const HTuple& Preprocessing, const HTuple& NumComponents, const HTuple& RandSeed)
void CreateOcrClassMlp(const HTuple& WidthCharacter, const HTuple& HeightCharacter, const HTuple& Interpolation, const HTuple& Features, const HTuple& Characters, const HTuple& NumHidden, const HTuple& Preprocessing, const HTuple& NumComponents, const HTuple& RandSeed, HTuple* OCRHandle)
void HOCRMlp::HOCRMlp(Hlong WidthCharacter, Hlong HeightCharacter, const HString& Interpolation, const HTuple& Features, const HTuple& Characters, Hlong NumHidden, const HString& Preprocessing, Hlong NumComponents, Hlong RandSeed)
void HOCRMlp::HOCRMlp(Hlong WidthCharacter, Hlong HeightCharacter, const HString& Interpolation, const HString& Features, const HTuple& Characters, Hlong NumHidden, const HString& Preprocessing, Hlong NumComponents, Hlong RandSeed)
void HOCRMlp::HOCRMlp(Hlong WidthCharacter, Hlong HeightCharacter, const char* Interpolation, const char* Features, const HTuple& Characters, Hlong NumHidden, const char* Preprocessing, Hlong NumComponents, Hlong RandSeed)
void HOCRMlp::CreateOcrClassMlp(Hlong WidthCharacter, Hlong HeightCharacter, const HString& Interpolation, const HTuple& Features, const HTuple& Characters, Hlong NumHidden, const HString& Preprocessing, Hlong NumComponents, Hlong RandSeed)
void HOCRMlp::CreateOcrClassMlp(Hlong WidthCharacter, Hlong HeightCharacter, const HString& Interpolation, const HString& Features, const HTuple& Characters, Hlong NumHidden, const HString& Preprocessing, Hlong NumComponents, Hlong RandSeed)
void HOCRMlp::CreateOcrClassMlp(Hlong WidthCharacter, Hlong HeightCharacter, const char* Interpolation, const char* Features, const HTuple& Characters, Hlong NumHidden, const char* Preprocessing, Hlong NumComponents, Hlong RandSeed)
void HOperatorSetX.CreateOcrClassMlp(
[in] VARIANT WidthCharacter, [in] VARIANT HeightCharacter, [in] VARIANT Interpolation, [in] VARIANT Features, [in] VARIANT Characters, [in] VARIANT NumHidden, [in] VARIANT Preprocessing, [in] VARIANT NumComponents, [in] VARIANT RandSeed, [out] VARIANT* OCRHandle)
void HOCRMlpX.CreateOcrClassMlp(
[in] Hlong WidthCharacter, [in] Hlong HeightCharacter, [in] BSTR Interpolation, [in] VARIANT Features, [in] VARIANT Characters, [in] Hlong NumHidden, [in] BSTR Preprocessing, [in] Hlong NumComponents, [in] Hlong RandSeed)
static void HOperatorSet.CreateOcrClassMlp(HTuple widthCharacter, HTuple heightCharacter, HTuple interpolation, HTuple features, HTuple characters, HTuple numHidden, HTuple preprocessing, HTuple numComponents, HTuple randSeed, out HTuple OCRHandle)
public HOCRMlp(int widthCharacter, int heightCharacter, string interpolation, HTuple features, HTuple characters, int numHidden, string preprocessing, int numComponents, int randSeed)
public HOCRMlp(int widthCharacter, int heightCharacter, string interpolation, string features, HTuple characters, int numHidden, string preprocessing, int numComponents, int randSeed)
void HOCRMlp.CreateOcrClassMlp(int widthCharacter, int heightCharacter, string interpolation, HTuple features, HTuple characters, int numHidden, string preprocessing, int numComponents, int randSeed)
void HOCRMlp.CreateOcrClassMlp(int widthCharacter, int heightCharacter, string interpolation, string features, HTuple characters, int numHidden, string preprocessing, int numComponents, int randSeed)
create_ocr_class_mlpcreate_ocr_class_mlpCreateOcrClassMlpcreate_ocr_class_mlpCreateOcrClassMlpCreateOcrClassMlp erzeugt einen OCR-Klassifikator unter
Verwendung eines mehrschichtigen Perzeptrons (MLP). Der Handle des
OCR-Klassifikators wird in OCRHandleOCRHandleOCRHandleOCRHandleOCRHandleOCRHandle zurückgegeben.
Für eine Beschreibung der Funktionsweise eines MLP siehe
create_class_mlpcreate_class_mlpCreateClassMlpcreate_class_mlpCreateClassMlpCreateClassMlp. create_ocr_class_mlpcreate_ocr_class_mlpCreateOcrClassMlpcreate_ocr_class_mlpCreateOcrClassMlpCreateOcrClassMlp erzeugt ein
MLP mit OutputFunction = 'softmax'"softmax""softmax""softmax""softmax""softmax". Die Länge
des Merkmalsvektors des MLP (NumInput in
create_class_mlpcreate_class_mlpCreateClassMlpcreate_class_mlpCreateClassMlpCreateClassMlp) wird aus den für die OCR zu verwendenden
Merkmalen, die in FeaturesFeaturesFeaturesFeaturesFeaturesfeatures übergeben werden, festgelegt.
Die Merkmale sind unten beschrieben. Die Anzahl der Einheiten in
der versteckten Schicht wird durch NumHiddenNumHiddenNumHiddenNumHiddenNumHiddennumHidden festgelegt.
Die Anzahl der Ausgabevariablen des MLP (NumOutput in
create_class_mlpcreate_class_mlpCreateClassMlpcreate_class_mlpCreateClassMlpCreateClassMlp) wird aus den für die OCR zu verwendenden
Namen der Zeichen, die in CharactersCharactersCharactersCharactersCharacterscharacters übergeben werden,
festgelegt. Wie bei create_class_mlpcreate_class_mlpCreateClassMlpcreate_class_mlpCreateClassMlpCreateClassMlp beschrieben, kann mit
PreprocessingPreprocessingPreprocessingPreprocessingPreprocessingpreprocessing und NumComponentsNumComponentsNumComponentsNumComponentsNumComponentsnumComponents eine
Vorverarbeitung der Daten (Merkmalsvektoren) festgelegt werden. Bei
der OCR werden die Merkmale intern schon annähernd normalisiert, so
dass im Normalfall hier 'none'"none""none""none""none""none" angegeben werden kann. Der
Parameter RandSeedRandSeedRandSeedRandSeedRandSeedrandSeed hat dieselbe Bedeutung wie bei
create_class_mlpcreate_class_mlpCreateClassMlpcreate_class_mlpCreateClassMlpCreateClassMlp. Weiterhin kann es wie bei allgemeinen
MLP-Klassifikatoren (siehe create_class_mlpcreate_class_mlpCreateClassMlpcreate_class_mlpCreateClassMlpCreateClassMlp and
set_regularization_params_class_mlpset_regularization_params_class_mlpSetRegularizationParamsClassMlpset_regularization_params_class_mlpSetRegularizationParamsClassMlpSetRegularizationParamsClassMlp) wünschenswert sein,
einen OCR-Klassifikator zu regularisieren. Dies kann durch einen
Aufruf von set_regularization_params_ocr_class_mlpset_regularization_params_ocr_class_mlpSetRegularizationParamsOcrClassMlpset_regularization_params_ocr_class_mlpSetRegularizationParamsOcrClassMlpSetRegularizationParamsOcrClassMlp vor dem
Training des OCR-Klassifikators erreicht werden. Zusätzlich kann es
wie bei allgemeinen MLP-Klassifikatoren (siehe
create_class_mlpcreate_class_mlpCreateClassMlpcreate_class_mlpCreateClassMlpCreateClassMlp and set_rejection_params_class_mlpset_rejection_params_class_mlpSetRejectionParamsClassMlpset_rejection_params_class_mlpSetRejectionParamsClassMlpSetRejectionParamsClassMlp)
wünschenswert sein, den OCR-Klassifikator mit der Fähigkeit
auszustatten, unbekannte Zeichen zurückzuweisen. Die Rückweisungsklasse
ist bei Konvention das zusätzliche Symbol chr(26), dass in
CharactersCharactersCharactersCharactersCharacterscharacters übergeben werden muss. Die Parameter der
Rückweisungsklasse kann durch
einen Aufruf von set_rejection_params_ocr_class_mlpset_rejection_params_ocr_class_mlpSetRejectionParamsOcrClassMlpset_rejection_params_ocr_class_mlpSetRejectionParamsOcrClassMlpSetRejectionParamsOcrClassMlp vor dem
Training des OCR-Klassifikators gesetzt werden.
Die zur Klassifikation zu verwendenden Merkmale werden mit
FeaturesFeaturesFeaturesFeaturesFeaturesfeatures angegeben. Dabei kann FeaturesFeaturesFeaturesFeaturesFeaturesfeatures ein Tupel
mit mehreren Merkmalsnamen beinhalten. Jeder dieser Merkmalsnamen
führt zur Berechnung von einem oder mehreren Merkmalen für den
Klassifikator. Einige der Merkmalsnamen erzeugen Grauwertmerkmale
(z.B. 'pixel_invar'"pixel_invar""pixel_invar""pixel_invar""pixel_invar""pixel_invar"). Da ein Klassifikator immer eine
konstante Anzahl von Merkmalen (Eingabevariablen) benötigt, wird
ein zu klassifizierendes Zeichen auf eine Standardgröße
transformiert, die durch WidthCharacterWidthCharacterWidthCharacterWidthCharacterWidthCharacterwidthCharacter und
HeightCharacterHeightCharacterHeightCharacterHeightCharacterHeightCharacterheightCharacter festgelegt wird. Die bei der
Transformation anzuwendende Interpolation wird mit
InterpolationInterpolationInterpolationInterpolationInterpolationinterpolation festgelegt. Sie hat dieselbe Bedeutung wie
bei affine_trans_imageaffine_trans_imageAffineTransImageaffine_trans_imageAffineTransImageAffineTransImage. Die Interpolation sollte so
gewählt werden, dass bei der Transformation keine Aliasing-Effekte
auftreten. Im Normalfall sollte InterpolationInterpolationInterpolationInterpolationInterpolationinterpolation =
'constant'"constant""constant""constant""constant""constant" verwendet werden. Bei der Wahl der Größe des
transformierten Zeichens ist zu beachten, dass die Größe nicht zu
groß gewählt wird, da die Generalisierungseigenschaften des
Klassifikators sonst sehr schlecht werden können. Insbesondere
können bei großen Größen kleine Segmentierungsfehler einen
großen Einfluss auf die berechneten Merkmale haben, wenn
Grauwertmerkmale verwendet werden, da sich durch die
Segmentierungsfehler das umschließende Rechteck des Zeichens
ändern kann, was dazu führt, dass das Zeichen anders als trainiert
skaliert wird. Im Normalfall sollten Größen zwischen 6x8 und 10x14 verwendet werden.
Mit FeaturesFeaturesFeaturesFeaturesFeaturesfeatures können die folgenden Merkmalsnamen zur
Erkennung der Zeichen ausgewählt werden.
- 'default'"default""default""default""default""default"
-
'ratio'"ratio""ratio""ratio""ratio""ratio" und 'pixel_invar'"pixel_invar""pixel_invar""pixel_invar""pixel_invar""pixel_invar" werden ausgewählt.
- 'pixel'"pixel""pixel""pixel""pixel""pixel"
-
Grauwerte des Zeichens (WidthCharacterWidthCharacterWidthCharacterWidthCharacterWidthCharacterwidthCharacter x
HeightCharacterHeightCharacterHeightCharacterHeightCharacterHeightCharacterheightCharacter Merkmale).
- 'pixel_invar'"pixel_invar""pixel_invar""pixel_invar""pixel_invar""pixel_invar"
-
Grauwerte des Zeichens mit automatischer maximaler
Grauwertspreizung (WidthCharacterWidthCharacterWidthCharacterWidthCharacterWidthCharacterwidthCharacter x
HeightCharacterHeightCharacterHeightCharacterHeightCharacterHeightCharacterheightCharacter Merkmale).
- 'pixel_binary'"pixel_binary""pixel_binary""pixel_binary""pixel_binary""pixel_binary"
-
Region des Zeichens als Binärbild auf eine Größe von
WidthCharacterWidthCharacterWidthCharacterWidthCharacterWidthCharacterwidthCharacter x HeightCharacterHeightCharacterHeightCharacterHeightCharacterHeightCharacterheightCharacter
skaliert. (WidthCharacterWidthCharacterWidthCharacterWidthCharacterWidthCharacterwidthCharacter x
HeightCharacterHeightCharacterHeightCharacterHeightCharacterHeightCharacterheightCharacter Merkmale).
- 'gradient_8dir'"gradient_8dir""gradient_8dir""gradient_8dir""gradient_8dir""gradient_8dir"
-
Die Gradienten des Zeichens werden berechnet. Die
Gradientenrichtungen werden in 8 Richtungen diskretisiert. Das
Amplitudenbild wird entsprechend der diskretisierten Richtungen in
8 Kanäle aufgeteilt. In jedem der 8 Kanäle werden auf einem 5x5 Gitter Stichproben entnommen. Diese Stichproben bilden
die Merkmale (200 Merkmale).
- 'projection_horizontal'"projection_horizontal""projection_horizontal""projection_horizontal""projection_horizontal""projection_horizontal"
-
Horizontale Projektion der Grauwerte (siehe
gray_projectionsgray_projectionsGrayProjectionsgray_projectionsGrayProjectionsGrayProjections, HeightCharacterHeightCharacterHeightCharacterHeightCharacterHeightCharacterheightCharacter Merkmale).
- 'projection_horizontal_invar'"projection_horizontal_invar""projection_horizontal_invar""projection_horizontal_invar""projection_horizontal_invar""projection_horizontal_invar"
-
Horizontale Projektion der Grauwerte, die maximal gespreizt sind
(HeightCharacterHeightCharacterHeightCharacterHeightCharacterHeightCharacterheightCharacter Merkmale).
- 'projection_vertical'"projection_vertical""projection_vertical""projection_vertical""projection_vertical""projection_vertical"
-
Vertikale Projektion der Grauwerte (siehe
gray_projectionsgray_projectionsGrayProjectionsgray_projectionsGrayProjectionsGrayProjections, WidthCharacterWidthCharacterWidthCharacterWidthCharacterWidthCharacterwidthCharacter Merkmale).
- 'projection_vertical_invar'"projection_vertical_invar""projection_vertical_invar""projection_vertical_invar""projection_vertical_invar""projection_vertical_invar"
-
Vertikale Projektion der Grauwerte, die maximal gespreizt sind
(WidthCharacterWidthCharacterWidthCharacterWidthCharacterWidthCharacterwidthCharacter Merkmale).
- 'ratio'"ratio""ratio""ratio""ratio""ratio"
-
Seitenverhältnis des Zeichens (1 Merkmal).
- 'anisometry'"anisometry""anisometry""anisometry""anisometry""anisometry"
-
Formmerkmal Anisometrie (siehe eccentricityeccentricityEccentricityeccentricityEccentricityEccentricity, 1 Merkmal).
- 'width'"width""width""width""width""width"
-
Breite des Zeichens vor der Normierung auf die Standardgröße
(nicht skalierungsinvariant, siehe smallest_rectangle1smallest_rectangle1SmallestRectangle1smallest_rectangle1SmallestRectangle1SmallestRectangle1, 1
Merkmal).
- 'height'"height""height""height""height""height"
-
Höhe des Zeichens vor der Normierung auf die Standardgröße
(nicht skalierungsinvariant, siehe smallest_rectangle1smallest_rectangle1SmallestRectangle1smallest_rectangle1SmallestRectangle1SmallestRectangle1, 1
Merkmal).
- 'zoom_factor'"zoom_factor""zoom_factor""zoom_factor""zoom_factor""zoom_factor"
-
Größenunterschied zwischen aktuellem Zeichen und den Werten von
WidthCharacterWidthCharacterWidthCharacterWidthCharacterWidthCharacterwidthCharacter und HeightCharacterHeightCharacterHeightCharacterHeightCharacterHeightCharacterheightCharacter (nicht
skalierungsinvariant, 1 Merkmal).
- 'foreground'"foreground""foreground""foreground""foreground""foreground"
-
Relativer Anteil der Vordergrund-Pixel (1 Merkmal).
- 'foreground_grid_9'"foreground_grid_9""foreground_grid_9""foreground_grid_9""foreground_grid_9""foreground_grid_9"
-
Relativer Anteil der Vordergrund-Pixel in einem 3x3
Raster innerhalb des umschließenden Rechtecks des Zeichens (9
Merkmale).
- 'foreground_grid_16'"foreground_grid_16""foreground_grid_16""foreground_grid_16""foreground_grid_16""foreground_grid_16"
-
Relativer Anteil der Vordergrund-Pixel in einem 4x4
Raster innerhalb des umschließenden Rechtecks des Zeichens (16
Merkmale).
- 'compactness'"compactness""compactness""compactness""compactness""compactness"
-
Formmerkmal Kompaktheit (siehe compactnesscompactnessCompactnesscompactnessCompactnessCompactness, 1 Merkmal).
- 'convexity'"convexity""convexity""convexity""convexity""convexity"
-
Formmerkmal Konvexität (siehe convexityconvexityConvexityconvexityConvexityConvexity, 1 Merkmal).
- 'moments_region_2nd_invar'"moments_region_2nd_invar""moments_region_2nd_invar""moments_region_2nd_invar""moments_region_2nd_invar""moments_region_2nd_invar"
-
Normierte zweite geometrische Momente der Region (siehe
moments_region_2nd_invarmoments_region_2nd_invarMomentsRegion2ndInvarmoments_region_2nd_invarMomentsRegion2ndInvarMomentsRegion2ndInvar, 3 Merkmale).
- 'moments_region_2nd_rel_invar'"moments_region_2nd_rel_invar""moments_region_2nd_rel_invar""moments_region_2nd_rel_invar""moments_region_2nd_rel_invar""moments_region_2nd_rel_invar"
-
Normierte zweite relative geometrische Momente der Region (siehe
moments_region_2nd_rel_invarmoments_region_2nd_rel_invarMomentsRegion2ndRelInvarmoments_region_2nd_rel_invarMomentsRegion2ndRelInvarMomentsRegion2ndRelInvar, 2 Merkmale).
- 'moments_region_3rd_invar'"moments_region_3rd_invar""moments_region_3rd_invar""moments_region_3rd_invar""moments_region_3rd_invar""moments_region_3rd_invar"
-
Normierte dritte geometrische Momente der Region (siehe
moments_region_3rd_invarmoments_region_3rd_invarMomentsRegion3rdInvarmoments_region_3rd_invarMomentsRegion3rdInvarMomentsRegion3rdInvar, 4 Merkmale).
- 'moments_central'"moments_central""moments_central""moments_central""moments_central""moments_central"
-
Normierte zentrale geometrische Momente der Region (siehe
moments_region_centralmoments_region_centralMomentsRegionCentralmoments_region_centralMomentsRegionCentralMomentsRegionCentral, 4 Merkmale).
- 'moments_gray_plane'"moments_gray_plane""moments_gray_plane""moments_gray_plane""moments_gray_plane""moments_gray_plane"
-
Normierte Grauwertmomente und die Winkel der Grauwertebene (siehe
moments_gray_planemoments_gray_planeMomentsGrayPlanemoments_gray_planeMomentsGrayPlaneMomentsGrayPlane, 4 Merkmale)
- 'phi'"phi""phi""phi""phi""phi"
-
Sinus und Kosinus der Orientierung (Winkel) des Zeichens
(siehe elliptic_axiselliptic_axisEllipticAxiselliptic_axisEllipticAxisEllipticAxis, 2 Merkmal).
- 'num_connect'"num_connect""num_connect""num_connect""num_connect""num_connect"
-
Anzahl der Zusammenhangskomponenten (siehe
connect_and_holesconnect_and_holesConnectAndHolesconnect_and_holesConnectAndHolesConnectAndHoles, 1 Merkmal).
- 'num_holes'"num_holes""num_holes""num_holes""num_holes""num_holes"
-
Anzahl der Hohlflächen (siehe connect_and_holesconnect_and_holesConnectAndHolesconnect_and_holesConnectAndHolesConnectAndHoles, 1
Merkmal).
- 'cooc'"cooc""cooc""cooc""cooc""cooc"
-
Werte der binären Cooccurrence-Matrix (siehe
gen_cooc_matrixgen_cooc_matrixGenCoocMatrixgen_cooc_matrixGenCoocMatrixGenCoocMatrix, 8 Merkmale).
- 'num_runs'"num_runs""num_runs""num_runs""num_runs""num_runs"
-
Anzahl der Sehnen der Region normiert auf die Höhe (1
Merkmal).
- 'chord_histo'"chord_histo""chord_histo""chord_histo""chord_histo""chord_histo"
-
Häufigkeit der Sehnen pro Zeile (HeightCharacterHeightCharacterHeightCharacterHeightCharacterHeightCharacterheightCharacter
Merkmale).
Nachdem der Klassifikator erzeugt wurde, wird er mit
trainf_ocr_class_mlptrainf_ocr_class_mlpTrainfOcrClassMlptrainf_ocr_class_mlpTrainfOcrClassMlpTrainfOcrClassMlp trainiert. Daraufhin kann der
Klassifikator mit write_ocr_class_mlpwrite_ocr_class_mlpWriteOcrClassMlpwrite_ocr_class_mlpWriteOcrClassMlpWriteOcrClassMlp abgespeichert werden.
Alternativ können auch sofort nach dem Training Zeichen mit
do_ocr_single_class_mlpdo_ocr_single_class_mlpDoOcrSingleClassMlpdo_ocr_single_class_mlpDoOcrSingleClassMlpDoOcrSingleClassMlp oder do_ocr_multi_class_mlpdo_ocr_multi_class_mlpDoOcrMultiClassMlpdo_ocr_multi_class_mlpDoOcrMultiClassMlpDoOcrMultiClassMlp
klassifiziert werden.
HALCON stellt eine Anzahl vortrainierter OCR-Klassifikatoren zur
Verfügung (siehe Solution Guide I, Kapitel 'OCR', Abschnitt
'Pretrained OCR Fonts'). Diese vortrainierten OCR-Klassifikatoren
können direkt mit read_ocr_class_mlpread_ocr_class_mlpReadOcrClassMlpread_ocr_class_mlpReadOcrClassMlpReadOcrClassMlp eingelesen werden und
ermöglichen es, eine Vielzahl an Zeichensätzen zu lesen, ohne vorher
einen OCR-Klassifikator trainieren zu müssen. Es ist daher
empfehlenswert, zuerst zu testen, ob einer der vortrainierten
OCR-Klassifikatoren verwendet werden kann. Ist dies der Fall,
erspart man sich das Erzeugen und Trainieren des OCR-Klassifikators.
Ein Vergleich zwischen MLP und Support-Vektor-Maschinen (SVM) (siehe
create_ocr_class_svmcreate_ocr_class_svmCreateOcrClassSvmcreate_ocr_class_svmCreateOcrClassSvmCreateOcrClassSvm) zeigt typischerweise, dass SVMs
generell schneller traniert werden, insbesondere bei großen
Trainingsdatensätzen, und eine leicht verbesserte Erkennungsrate
haben. Das MLP weist schnellere Klassifikationszeiten auf und
sollte daher in zeitkritischen Anwendungen verwendet werden. Es ist
zu beachten, dass der Vergleich von optimal abgestimmten Parametern
ausgeht.
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
Dieser Operator liefert ein Handle zurück. Es ist zu beachten, dass der Zustand einer Instanz dieses Handletyps durch bestimmte Operatoren geändert werden kann, obwohl das Handle als Eingabeparameter in diesen Operatoren verwendet wird.
Breite des Rechtecks, auf die die Grauwerte des
segmentierten Zeichens skaliert werden.
Defaultwert: 8
Wertevorschläge: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 20
Typischer Wertebereich: 4
≤
WidthCharacter
WidthCharacter
WidthCharacter
WidthCharacter
WidthCharacter
widthCharacter
≤
20
Höhe des Rechtecks, auf die die Grauwerte des
segmentierten Zeichens skaliert werden.
Defaultwert: 10
Wertevorschläge: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 20
Typischer Wertebereich: 4
≤
HeightCharacter
HeightCharacter
HeightCharacter
HeightCharacter
HeightCharacter
heightCharacter
≤
20
Interpolationsmodus bei der Skalierung der Zeichen.
Defaultwert:
'constant'
"constant"
"constant"
"constant"
"constant"
"constant"
Werteliste: 'bilinear'"bilinear""bilinear""bilinear""bilinear""bilinear", 'constant'"constant""constant""constant""constant""constant", 'nearest_neighbor'"nearest_neighbor""nearest_neighbor""nearest_neighbor""nearest_neighbor""nearest_neighbor", 'weighted'"weighted""weighted""weighted""weighted""weighted"
Merkmale, die zur Klassifikation verwendet werden.
Defaultwert:
'default'
"default"
"default"
"default"
"default"
"default"
Werteliste: 'anisometry'"anisometry""anisometry""anisometry""anisometry""anisometry", 'chord_histo'"chord_histo""chord_histo""chord_histo""chord_histo""chord_histo", 'compactness'"compactness""compactness""compactness""compactness""compactness", 'convexity'"convexity""convexity""convexity""convexity""convexity", 'cooc'"cooc""cooc""cooc""cooc""cooc", 'default'"default""default""default""default""default", 'foreground'"foreground""foreground""foreground""foreground""foreground", 'foreground_grid_16'"foreground_grid_16""foreground_grid_16""foreground_grid_16""foreground_grid_16""foreground_grid_16", 'foreground_grid_9'"foreground_grid_9""foreground_grid_9""foreground_grid_9""foreground_grid_9""foreground_grid_9", 'gradient_8dir'"gradient_8dir""gradient_8dir""gradient_8dir""gradient_8dir""gradient_8dir", 'height'"height""height""height""height""height", 'moments_central'"moments_central""moments_central""moments_central""moments_central""moments_central", 'moments_gray_plane'"moments_gray_plane""moments_gray_plane""moments_gray_plane""moments_gray_plane""moments_gray_plane", 'moments_region_2nd_invar'"moments_region_2nd_invar""moments_region_2nd_invar""moments_region_2nd_invar""moments_region_2nd_invar""moments_region_2nd_invar", 'moments_region_2nd_rel_invar'"moments_region_2nd_rel_invar""moments_region_2nd_rel_invar""moments_region_2nd_rel_invar""moments_region_2nd_rel_invar""moments_region_2nd_rel_invar", 'moments_region_3rd_invar'"moments_region_3rd_invar""moments_region_3rd_invar""moments_region_3rd_invar""moments_region_3rd_invar""moments_region_3rd_invar", 'num_connect'"num_connect""num_connect""num_connect""num_connect""num_connect", 'num_holes'"num_holes""num_holes""num_holes""num_holes""num_holes", 'num_runs'"num_runs""num_runs""num_runs""num_runs""num_runs", 'phi'"phi""phi""phi""phi""phi", 'pixel'"pixel""pixel""pixel""pixel""pixel", 'pixel_binary'"pixel_binary""pixel_binary""pixel_binary""pixel_binary""pixel_binary", 'pixel_invar'"pixel_invar""pixel_invar""pixel_invar""pixel_invar""pixel_invar", 'projection_horizontal'"projection_horizontal""projection_horizontal""projection_horizontal""projection_horizontal""projection_horizontal", 'projection_horizontal_invar'"projection_horizontal_invar""projection_horizontal_invar""projection_horizontal_invar""projection_horizontal_invar""projection_horizontal_invar", 'projection_vertical'"projection_vertical""projection_vertical""projection_vertical""projection_vertical""projection_vertical", 'projection_vertical_invar'"projection_vertical_invar""projection_vertical_invar""projection_vertical_invar""projection_vertical_invar""projection_vertical_invar", 'ratio'"ratio""ratio""ratio""ratio""ratio", 'width'"width""width""width""width""width", 'zoom_factor'"zoom_factor""zoom_factor""zoom_factor""zoom_factor""zoom_factor"
Alle Zeichen des zu lesenden Zeichensatzes.
Defaultwert:
['0','1','2','3','4','5','6','7','8','9']
["0","1","2","3","4","5","6","7","8","9"]
["0","1","2","3","4","5","6","7","8","9"]
["0","1","2","3","4","5","6","7","8","9"]
["0","1","2","3","4","5","6","7","8","9"]
["0","1","2","3","4","5","6","7","8","9"]
Anzahl der versteckten Einheiten des MLP.
Defaultwert: 80
Wertevorschläge: 1, 2, 3, 4, 5, 8, 10, 15, 20, 30, 40, 50, 60, 70, 80, 90, 100, 120, 150
Restriktion: NumHidden >= 1
Art der Vorverarbeitung (Transformation) der
Merkmalsvektoren.
Defaultwert:
'none'
"none"
"none"
"none"
"none"
"none"
Werteliste: 'canonical_variates'"canonical_variates""canonical_variates""canonical_variates""canonical_variates""canonical_variates", 'none'"none""none""none""none""none", 'normalization'"normalization""normalization""normalization""normalization""normalization", 'principal_components'"principal_components""principal_components""principal_components""principal_components""principal_components"
Parameter der Vorverarbeitung: Anzahl der
transformierten Merkmale (ignoriert bei
PreprocessingPreprocessingPreprocessingPreprocessingPreprocessingpreprocessing = 'none'"none""none""none""none""none" und
PreprocessingPreprocessingPreprocessingPreprocessingPreprocessingpreprocessing = 'normalization'"normalization""normalization""normalization""normalization""normalization").
Defaultwert: 10
Wertevorschläge: 1, 2, 3, 4, 5, 8, 10, 15, 20, 30, 40, 50, 60, 70, 80, 90, 100
Restriktion: NumComponents >= 1
Initialisierungswert des Zufallszahlengenerators,
der zur Initialisierung des MLP mit zufälligen
Werten verwendet wird.
Defaultwert: 42
Handle des OCR-Klassifikators.
read_image (Image, 'letters')
* Segment the image.
binary_threshold(Image,&Region, 'otsu', 'dark', &UsedThreshold);
dilation_circle (Region, RegionDilation, 3.5)
connection (RegionDilation, ConnectedRegions)
intersection (ConnectedRegions, Region, RegionIntersection)
sort_region (RegionIntersection, Characters, 'character', 'true', 'row')
* Generate the training file.
count_obj (Characters, Number)
Classes := []
for J := 0 to 25 by 1
Classes := [Classes,gen_tuple_const(20,chr(ord('a')+J))]
endfor
Classes := [Classes,gen_tuple_const(20,'.')]
write_ocr_trainf (Characters, Image, Classes, 'letters.trf')
* Generate and train the classifier.
read_ocr_trainf_names ('letters.trf', CharacterNames, CharacterCount)
create_ocr_class_mlp (8, 10, 'constant', 'default', CharacterNames, 20, \
'none', 81, 42, OCRHandle)
trainf_ocr_class_mlp (OCRHandle, 'letters.trf', 100, 0.01, 0.01, Error, \
ErrorLog)
* Re-classify the characters in the image.
do_ocr_multi_class_mlp (Characters, Image, OCRHandle, Class, Confidence)
clear_ocr_class_mlp (OCRHandle)
Sind die Parameterwerte korrekt, dann liefert
create_ocr_class_mlpcreate_ocr_class_mlpCreateOcrClassMlpcreate_ocr_class_mlpCreateOcrClassMlpCreateOcrClassMlp den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird
eine Fehlerbehandlung durchgeführt.
trainf_ocr_class_mlptrainf_ocr_class_mlpTrainfOcrClassMlptrainf_ocr_class_mlpTrainfOcrClassMlpTrainfOcrClassMlp,
set_regularization_params_ocr_class_mlpset_regularization_params_ocr_class_mlpSetRegularizationParamsOcrClassMlpset_regularization_params_ocr_class_mlpSetRegularizationParamsOcrClassMlpSetRegularizationParamsOcrClassMlp,
set_rejection_params_ocr_class_mlpset_rejection_params_ocr_class_mlpSetRejectionParamsOcrClassMlpset_rejection_params_ocr_class_mlpSetRejectionParamsOcrClassMlpSetRejectionParamsOcrClassMlp
create_ocr_class_svmcreate_ocr_class_svmCreateOcrClassSvmcreate_ocr_class_svmCreateOcrClassSvmCreateOcrClassSvm,
create_ocr_class_boxcreate_ocr_class_boxCreateOcrClassBoxcreate_ocr_class_boxCreateOcrClassBoxCreateOcrClassBox
do_ocr_single_class_mlpdo_ocr_single_class_mlpDoOcrSingleClassMlpdo_ocr_single_class_mlpDoOcrSingleClassMlpDoOcrSingleClassMlp,
do_ocr_multi_class_mlpdo_ocr_multi_class_mlpDoOcrMultiClassMlpdo_ocr_multi_class_mlpDoOcrMultiClassMlpDoOcrMultiClassMlp,
clear_ocr_class_mlpclear_ocr_class_mlpClearOcrClassMlpclear_ocr_class_mlpClearOcrClassMlpClearOcrClassMlp,
create_class_mlpcreate_class_mlpCreateClassMlpcreate_class_mlpCreateClassMlpCreateClassMlp,
train_class_mlptrain_class_mlpTrainClassMlptrain_class_mlpTrainClassMlpTrainClassMlp,
classify_class_mlpclassify_class_mlpClassifyClassMlpclassify_class_mlpClassifyClassMlpClassifyClassMlp
OCR/OCV