create_ocr_class_mlpT_create_ocr_class_mlpCreateOcrClassMlpCreateOcrClassMlpcreate_ocr_class_mlp (Operator)

Name

create_ocr_class_mlpT_create_ocr_class_mlpCreateOcrClassMlpCreateOcrClassMlpcreate_ocr_class_mlp — Erzeugen eines OCR-Klassifikators unter Verwendung eines mehrschichtigen Perzeptrons.

Signatur

create_ocr_class_mlp( : : WidthCharacter, HeightCharacter, Interpolation, Features, Characters, NumHidden, Preprocessing, NumComponents, RandSeed : OCRHandle)

Herror T_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, Htuple* OCRHandle)

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::HOCRMlp(Hlong WidthCharacter, Hlong HeightCharacter, const wchar_t* Interpolation, const wchar_t* Features, const HTuple& Characters, Hlong NumHidden, const wchar_t* Preprocessing, Hlong NumComponents, Hlong RandSeed)   (Nur Windows)

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 HOCRMlp::CreateOcrClassMlp(Hlong WidthCharacter, Hlong HeightCharacter, const wchar_t* Interpolation, const wchar_t* Features, const HTuple& Characters, Hlong NumHidden, const wchar_t* Preprocessing, Hlong NumComponents, Hlong RandSeed)   (Nur Windows)

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)

def create_ocr_class_mlp(width_character: int, height_character: int, interpolation: str, features: MaybeSequence[str], characters: Sequence[str], num_hidden: int, preprocessing: str, num_components: int, rand_seed: int) -> HHandle

Beschreibung

create_ocr_class_mlpcreate_ocr_class_mlpCreateOcrClassMlpCreateOcrClassMlpCreateOcrClassMlpcreate_ocr_class_mlp 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_mlpCreateClassMlpCreateClassMlpCreateClassMlpcreate_class_mlp. create_ocr_class_mlpcreate_ocr_class_mlpCreateOcrClassMlpCreateOcrClassMlpCreateOcrClassMlpcreate_ocr_class_mlp erzeugt ein MLP mit OutputFunction = 'softmax'"softmax""softmax""softmax""softmax""softmax". Die Länge des Merkmalsvektors des MLP (NumInput in create_class_mlpcreate_class_mlpCreateClassMlpCreateClassMlpCreateClassMlpcreate_class_mlp) 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 NumHiddenNumHiddenNumHiddenNumHiddennumHiddennum_hidden festgelegt. Die Anzahl der Ausgabevariablen des MLP (NumOutput in create_class_mlpcreate_class_mlpCreateClassMlpCreateClassMlpCreateClassMlpcreate_class_mlp) wird aus den für die OCR zu verwendenden Namen der Zeichen, die in CharactersCharactersCharactersCharacterscharacterscharacters übergeben werden, festgelegt. Wie bei create_class_mlpcreate_class_mlpCreateClassMlpCreateClassMlpCreateClassMlpcreate_class_mlp beschrieben, kann mit PreprocessingPreprocessingPreprocessingPreprocessingpreprocessingpreprocessing und NumComponentsNumComponentsNumComponentsNumComponentsnumComponentsnum_components 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 RandSeedRandSeedRandSeedRandSeedrandSeedrand_seed hat dieselbe Bedeutung wie bei create_class_mlpcreate_class_mlpCreateClassMlpCreateClassMlpCreateClassMlpcreate_class_mlp. Weiterhin kann es wie bei allgemeinen MLP-Klassifikatoren (siehe create_class_mlpcreate_class_mlpCreateClassMlpCreateClassMlpCreateClassMlpcreate_class_mlp and set_regularization_params_class_mlpset_regularization_params_class_mlpSetRegularizationParamsClassMlpSetRegularizationParamsClassMlpSetRegularizationParamsClassMlpset_regularization_params_class_mlp) wünschenswert sein, einen OCR-Klassifikator zu regularisieren. Dies kann durch einen Aufruf von set_regularization_params_ocr_class_mlpset_regularization_params_ocr_class_mlpSetRegularizationParamsOcrClassMlpSetRegularizationParamsOcrClassMlpSetRegularizationParamsOcrClassMlpset_regularization_params_ocr_class_mlp vor dem Training des OCR-Klassifikators erreicht werden. Zusätzlich kann es wie bei allgemeinen MLP-Klassifikatoren (siehe create_class_mlpcreate_class_mlpCreateClassMlpCreateClassMlpCreateClassMlpcreate_class_mlp and set_rejection_params_class_mlpset_rejection_params_class_mlpSetRejectionParamsClassMlpSetRejectionParamsClassMlpSetRejectionParamsClassMlpset_rejection_params_class_mlp) 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_mlpSetRejectionParamsOcrClassMlpSetRejectionParamsOcrClassMlpSetRejectionParamsOcrClassMlpset_rejection_params_ocr_class_mlp 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 WidthCharacterWidthCharacterWidthCharacterWidthCharacterwidthCharacterwidth_character und HeightCharacterHeightCharacterHeightCharacterHeightCharacterheightCharacterheight_character festgelegt wird. Die bei der Transformation anzuwendende Interpolation wird mit InterpolationInterpolationInterpolationInterpolationinterpolationinterpolation festgelegt. Sie hat dieselbe Bedeutung wie bei affine_trans_imageaffine_trans_imageAffineTransImageAffineTransImageAffineTransImageaffine_trans_image. 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 (WidthCharacterWidthCharacterWidthCharacterWidthCharacterwidthCharacterwidth_character x HeightCharacterHeightCharacterHeightCharacterHeightCharacterheightCharacterheight_character Merkmale).

'pixel_invar'"pixel_invar""pixel_invar""pixel_invar""pixel_invar""pixel_invar"

Grauwerte des Zeichens mit automatischer maximaler Grauwertspreizung (WidthCharacterWidthCharacterWidthCharacterWidthCharacterwidthCharacterwidth_character x HeightCharacterHeightCharacterHeightCharacterHeightCharacterheightCharacterheight_character Merkmale).

'pixel_binary'"pixel_binary""pixel_binary""pixel_binary""pixel_binary""pixel_binary"

Region des Zeichens als Binärbild auf eine Größe von WidthCharacterWidthCharacterWidthCharacterWidthCharacterwidthCharacterwidth_character x HeightCharacterHeightCharacterHeightCharacterHeightCharacterheightCharacterheight_character skaliert. (WidthCharacterWidthCharacterWidthCharacterWidthCharacterwidthCharacterwidth_character x HeightCharacterHeightCharacterHeightCharacterHeightCharacterheightCharacterheight_character 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_projectionsGrayProjectionsGrayProjectionsGrayProjectionsgray_projections, HeightCharacterHeightCharacterHeightCharacterHeightCharacterheightCharacterheight_character 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 (HeightCharacterHeightCharacterHeightCharacterHeightCharacterheightCharacterheight_character Merkmale).

'projection_vertical'"projection_vertical""projection_vertical""projection_vertical""projection_vertical""projection_vertical"

Vertikale Projektion der Grauwerte (siehe gray_projectionsgray_projectionsGrayProjectionsGrayProjectionsGrayProjectionsgray_projections, WidthCharacterWidthCharacterWidthCharacterWidthCharacterwidthCharacterwidth_character 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 (WidthCharacterWidthCharacterWidthCharacterWidthCharacterwidthCharacterwidth_character Merkmale).

'ratio'"ratio""ratio""ratio""ratio""ratio"

Seitenverhältnis des Zeichens (siehe height_width_ratioheight_width_ratioHeightWidthRatioHeightWidthRatioHeightWidthRatioheight_width_ratio, 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 height_width_ratioheight_width_ratioHeightWidthRatioHeightWidthRatioHeightWidthRatioheight_width_ratio, 1 Merkmal).

'height'"height""height""height""height""height"

Höhe des Zeichens vor der Normierung auf die Standardgröße (nicht skalierungsinvariant, siehe height_width_ratioheight_width_ratioHeightWidthRatioHeightWidthRatioHeightWidthRatioheight_width_ratio, 1 Merkmal).

'zoom_factor'"zoom_factor""zoom_factor""zoom_factor""zoom_factor""zoom_factor"

Größenunterschied zwischen aktuellem Zeichen und den Werten von WidthCharacterWidthCharacterWidthCharacterWidthCharacterwidthCharacterwidth_character und HeightCharacterHeightCharacterHeightCharacterHeightCharacterheightCharacterheight_character (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_invarMomentsRegion2ndInvarMomentsRegion2ndInvarMomentsRegion2ndInvarmoments_region_2nd_invar, 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_invarMomentsRegion2ndRelInvarMomentsRegion2ndRelInvarMomentsRegion2ndRelInvarmoments_region_2nd_rel_invar, 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_invarMomentsRegion3rdInvarMomentsRegion3rdInvarMomentsRegion3rdInvarmoments_region_3rd_invar, 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_centralMomentsRegionCentralMomentsRegionCentralMomentsRegionCentralmoments_region_central, 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_planeMomentsGrayPlaneMomentsGrayPlaneMomentsGrayPlanemoments_gray_plane, 4 Merkmale)

'phi'"phi""phi""phi""phi""phi"

Sinus und Kosinus der Orientierung (Winkel) des Zeichens (siehe elliptic_axiselliptic_axisEllipticAxisEllipticAxisEllipticAxiselliptic_axis, 2 Merkmal).

'num_connect'"num_connect""num_connect""num_connect""num_connect""num_connect"

Anzahl der Zusammenhangskomponenten (siehe connect_and_holesconnect_and_holesConnectAndHolesConnectAndHolesConnectAndHolesconnect_and_holes, 1 Merkmal).

'num_holes'"num_holes""num_holes""num_holes""num_holes""num_holes"

Anzahl der Hohlflächen (siehe connect_and_holesconnect_and_holesConnectAndHolesConnectAndHolesConnectAndHolesconnect_and_holes, 1 Merkmal).

'cooc'"cooc""cooc""cooc""cooc""cooc"

Werte der binären Cooccurrence-Matrix (siehe gen_cooc_matrixgen_cooc_matrixGenCoocMatrixGenCoocMatrixGenCoocMatrixgen_cooc_matrix, 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 (nicht skalierungsinvariant, HeightCharacterHeightCharacterHeightCharacterHeightCharacterheightCharacterheight_character Merkmale).

Nachdem der Klassifikator erzeugt wurde, wird er mit trainf_ocr_class_mlptrainf_ocr_class_mlpTrainfOcrClassMlpTrainfOcrClassMlpTrainfOcrClassMlptrainf_ocr_class_mlp trainiert. Daraufhin kann der Klassifikator mit write_ocr_class_mlpwrite_ocr_class_mlpWriteOcrClassMlpWriteOcrClassMlpWriteOcrClassMlpwrite_ocr_class_mlp abgespeichert werden. Alternativ können auch sofort nach dem Training Zeichen mit do_ocr_single_class_mlpdo_ocr_single_class_mlpDoOcrSingleClassMlpDoOcrSingleClassMlpDoOcrSingleClassMlpdo_ocr_single_class_mlp oder do_ocr_multi_class_mlpdo_ocr_multi_class_mlpDoOcrMultiClassMlpDoOcrMultiClassMlpDoOcrMultiClassMlpdo_ocr_multi_class_mlp 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_mlpReadOcrClassMlpReadOcrClassMlpReadOcrClassMlpread_ocr_class_mlp 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_svmCreateOcrClassSvmCreateOcrClassSvmCreateOcrClassSvmcreate_ocr_class_svm) zeigt typischerweise, dass SVMs generell schneller trainiert 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.

Ausführungsinformationen

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.

Parameter

WidthCharacterWidthCharacterWidthCharacterWidthCharacterwidthCharacterwidth_character (input_control)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

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 width_character ≤ 20

HeightCharacterHeightCharacterHeightCharacterHeightCharacterheightCharacterheight_character (input_control)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

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 height_character ≤ 20

InterpolationInterpolationInterpolationInterpolationinterpolationinterpolation (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Interpolationsmodus bei der Skalierung der Zeichen.

Defaultwert: 'constant' "constant" "constant" "constant" "constant" "constant"

Werteliste: 'bicubic'"bicubic""bicubic""bicubic""bicubic""bicubic", '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"

FeaturesFeaturesFeaturesFeaturesfeaturesfeatures (input_control)  string(-array) HTupleMaybeSequence[str]HTupleHtuple (string) (string) (HString) (char*)

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"

CharactersCharactersCharactersCharacterscharacterscharacters (input_control)  string-array HTupleSequence[str]HTupleHtuple (string) (string) (HString) (char*)

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"]

NumHiddenNumHiddenNumHiddenNumHiddennumHiddennum_hidden (input_control)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

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

PreprocessingPreprocessingPreprocessingPreprocessingpreprocessingpreprocessing (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

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"

NumComponentsNumComponentsNumComponentsNumComponentsnumComponentsnum_components (input_control)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

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

RandSeedRandSeedRandSeedRandSeedrandSeedrand_seed (input_control)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Initialisierungswert des Zufallszahlengenerators, der zur Initialisierung des MLP mit zufälligen Werten verwendet wird.

Defaultwert: 42

OCRHandleOCRHandleOCRHandleOCRHandleOCRHandleocrhandle (output_control)  ocr_mlp HOCRMlp, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle des OCR-Klassifikators.

Beispiel (HDevelop)

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)

Ergebnis

Sind die Parameterwerte korrekt, dann liefert create_ocr_class_mlpcreate_ocr_class_mlpCreateOcrClassMlpCreateOcrClassMlpCreateOcrClassMlpcreate_ocr_class_mlp den Wert TRUE. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Nachfolger

trainf_ocr_class_mlptrainf_ocr_class_mlpTrainfOcrClassMlpTrainfOcrClassMlpTrainfOcrClassMlptrainf_ocr_class_mlp, set_regularization_params_ocr_class_mlpset_regularization_params_ocr_class_mlpSetRegularizationParamsOcrClassMlpSetRegularizationParamsOcrClassMlpSetRegularizationParamsOcrClassMlpset_regularization_params_ocr_class_mlp, set_rejection_params_ocr_class_mlpset_rejection_params_ocr_class_mlpSetRejectionParamsOcrClassMlpSetRejectionParamsOcrClassMlpSetRejectionParamsOcrClassMlpset_rejection_params_ocr_class_mlp

Alternativen

create_ocr_class_svmcreate_ocr_class_svmCreateOcrClassSvmCreateOcrClassSvmCreateOcrClassSvmcreate_ocr_class_svm

Siehe auch

do_ocr_single_class_mlpdo_ocr_single_class_mlpDoOcrSingleClassMlpDoOcrSingleClassMlpDoOcrSingleClassMlpdo_ocr_single_class_mlp, do_ocr_multi_class_mlpdo_ocr_multi_class_mlpDoOcrMultiClassMlpDoOcrMultiClassMlpDoOcrMultiClassMlpdo_ocr_multi_class_mlp, clear_ocr_class_mlpclear_ocr_class_mlpClearOcrClassMlpClearOcrClassMlpClearOcrClassMlpclear_ocr_class_mlp, create_class_mlpcreate_class_mlpCreateClassMlpCreateClassMlpCreateClassMlpcreate_class_mlp, train_class_mlptrain_class_mlpTrainClassMlpTrainClassMlpTrainClassMlptrain_class_mlp, classify_class_mlpclassify_class_mlpClassifyClassMlpClassifyClassMlpClassifyClassMlpclassify_class_mlp

Modul

OCR/OCV