create_ocr_class_svmT_create_ocr_class_svmCreateOcrClassSvmCreateOcrClassSvm (Operator)
Name
create_ocr_class_svmT_create_ocr_class_svmCreateOcrClassSvmCreateOcrClassSvm
— Erzeugen eines OCR-Klassifikators unter Verwendung einer
Support-Vektor-Maschine.
Signatur
create_ocr_class_svm( : : WidthCharacter, HeightCharacter, Interpolation, Features, Characters, KernelType, KernelParam, Nu, Mode, Preprocessing, NumComponents : OCRHandle)
Herror T_create_ocr_class_svm(const Htuple WidthCharacter, const Htuple HeightCharacter, const Htuple Interpolation, const Htuple Features, const Htuple Characters, const Htuple KernelType, const Htuple KernelParam, const Htuple Nu, const Htuple Mode, const Htuple Preprocessing, const Htuple NumComponents, Htuple* OCRHandle)
void CreateOcrClassSvm(const HTuple& WidthCharacter, const HTuple& HeightCharacter, const HTuple& Interpolation, const HTuple& Features, const HTuple& Characters, const HTuple& KernelType, const HTuple& KernelParam, const HTuple& Nu, const HTuple& Mode, const HTuple& Preprocessing, const HTuple& NumComponents, HTuple* OCRHandle)
void HOCRSvm::HOCRSvm(Hlong WidthCharacter, Hlong HeightCharacter, const HString& Interpolation, const HTuple& Features, const HTuple& Characters, const HString& KernelType, double KernelParam, double Nu, const HString& Mode, const HString& Preprocessing, Hlong NumComponents)
void HOCRSvm::HOCRSvm(Hlong WidthCharacter, Hlong HeightCharacter, const HString& Interpolation, const HString& Features, const HTuple& Characters, const HString& KernelType, double KernelParam, double Nu, const HString& Mode, const HString& Preprocessing, Hlong NumComponents)
void HOCRSvm::HOCRSvm(Hlong WidthCharacter, Hlong HeightCharacter, const char* Interpolation, const char* Features, const HTuple& Characters, const char* KernelType, double KernelParam, double Nu, const char* Mode, const char* Preprocessing, Hlong NumComponents)
void HOCRSvm::HOCRSvm(Hlong WidthCharacter, Hlong HeightCharacter, const wchar_t* Interpolation, const wchar_t* Features, const HTuple& Characters, const wchar_t* KernelType, double KernelParam, double Nu, const wchar_t* Mode, const wchar_t* Preprocessing, Hlong NumComponents)
(Nur Windows)
void HOCRSvm::CreateOcrClassSvm(Hlong WidthCharacter, Hlong HeightCharacter, const HString& Interpolation, const HTuple& Features, const HTuple& Characters, const HString& KernelType, double KernelParam, double Nu, const HString& Mode, const HString& Preprocessing, Hlong NumComponents)
void HOCRSvm::CreateOcrClassSvm(Hlong WidthCharacter, Hlong HeightCharacter, const HString& Interpolation, const HString& Features, const HTuple& Characters, const HString& KernelType, double KernelParam, double Nu, const HString& Mode, const HString& Preprocessing, Hlong NumComponents)
void HOCRSvm::CreateOcrClassSvm(Hlong WidthCharacter, Hlong HeightCharacter, const char* Interpolation, const char* Features, const HTuple& Characters, const char* KernelType, double KernelParam, double Nu, const char* Mode, const char* Preprocessing, Hlong NumComponents)
void HOCRSvm::CreateOcrClassSvm(Hlong WidthCharacter, Hlong HeightCharacter, const wchar_t* Interpolation, const wchar_t* Features, const HTuple& Characters, const wchar_t* KernelType, double KernelParam, double Nu, const wchar_t* Mode, const wchar_t* Preprocessing, Hlong NumComponents)
(Nur Windows)
static void HOperatorSet.CreateOcrClassSvm(HTuple widthCharacter, HTuple heightCharacter, HTuple interpolation, HTuple features, HTuple characters, HTuple kernelType, HTuple kernelParam, HTuple nu, HTuple mode, HTuple preprocessing, HTuple numComponents, out HTuple OCRHandle)
public HOCRSvm(int widthCharacter, int heightCharacter, string interpolation, HTuple features, HTuple characters, string kernelType, double kernelParam, double nu, string mode, string preprocessing, int numComponents)
public HOCRSvm(int widthCharacter, int heightCharacter, string interpolation, string features, HTuple characters, string kernelType, double kernelParam, double nu, string mode, string preprocessing, int numComponents)
void HOCRSvm.CreateOcrClassSvm(int widthCharacter, int heightCharacter, string interpolation, HTuple features, HTuple characters, string kernelType, double kernelParam, double nu, string mode, string preprocessing, int numComponents)
void HOCRSvm.CreateOcrClassSvm(int widthCharacter, int heightCharacter, string interpolation, string features, HTuple characters, string kernelType, double kernelParam, double nu, string mode, string preprocessing, int numComponents)
Beschreibung
create_ocr_class_svmcreate_ocr_class_svmCreateOcrClassSvmCreateOcrClassSvmCreateOcrClassSvm
erzeugt einen OCR-Klassifikator unter
Verwendung einer Support-Vektor-Maschine (SVM). Der Handle des
OCR-Klassifikators wird in OCRHandleOCRHandleOCRHandleOCRHandleOCRHandle
zurückgegeben.
Für eine Beschreibung der Funktionsweise einer SVM siehe
create_class_svmcreate_class_svmCreateClassSvmCreateClassSvmCreateClassSvm
. create_ocr_class_svmcreate_ocr_class_svmCreateOcrClassSvmCreateOcrClassSvmCreateOcrClassSvm
erzeugt eine
SVM für die Klassifikation mit dem Modus ModeModeModeModemode
. Die Länge
des Merkmalsvektors der SVM (NumFeatures
in
create_class_svmcreate_class_svmCreateClassSvmCreateClassSvmCreateClassSvm
) wird aus den für die OCR zu verwendenden
Merkmalen, die in FeaturesFeaturesFeaturesFeaturesfeatures
übergeben werden, festgelegt.
Die Merkmale sind unten beschrieben. Die Kernelfunktion und ihre
Parametrisierung wird in KernelTypeKernelTypeKernelTypeKernelTypekernelType
, KernelParamKernelParamKernelParamKernelParamkernelParam
und NuNuNuNunu
analog zu create_class_svmcreate_class_svmCreateClassSvmCreateClassSvmCreateClassSvm
angegeben. Die
Anzahl der Klassen der SVM (NumClasses
in
create_class_svmcreate_class_svmCreateClassSvmCreateClassSvmCreateClassSvm
) wird aus den für die OCR zu verwendenden
Namen der Zeichen, die in CharactersCharactersCharactersCharacterscharacters
übergeben werden,
festgelegt. Wie bei create_class_svmcreate_class_svmCreateClassSvmCreateClassSvmCreateClassSvm
beschrieben, kann mit
PreprocessingPreprocessingPreprocessingPreprocessingpreprocessing
und NumComponentsNumComponentsNumComponentsNumComponentsnumComponents
eine
Vorverarbeitung der Daten (Merkmalsvektoren) festgelegt werden. Um
die numerische Stabilität zu erhöhen, soll hier im Normalfall
'normalization'"normalization""normalization""normalization""normalization" angegeben werden. Um die
Klassifikationszeit zu beschleunigen, eignet sich insbesondere
'principal_components'"principal_components""principal_components""principal_components""principal_components", da die Anzahl der Eingabefeatures
in den Klassifikator deutlich reduziert werden kann, ohne dass sich die
Erkennungsrate verschlechtert.
Die zur Klassifikation zu verwendenden Merkmale werden in
FeaturesFeaturesFeaturesFeaturesfeatures
angegeben. Dabei kann FeaturesFeaturesFeaturesFeaturesfeatures
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"). Da ein Klassifikator immer eine
konstante Anzahl von Merkmalen (Eingabevariablen) benötigt, wird
ein zu klassifizierendes Zeichen auf eine Standardgröße
transformiert, die durch WidthCharacterWidthCharacterWidthCharacterWidthCharacterwidthCharacter
und
HeightCharacterHeightCharacterHeightCharacterHeightCharacterheightCharacter
festgelegt wird. Die bei der
Transformation anzuwendende Interpolation wird mit
InterpolationInterpolationInterpolationInterpolationinterpolation
festgelegt. Sie hat dieselbe Bedeutung wie
bei affine_trans_imageaffine_trans_imageAffineTransImageAffineTransImageAffineTransImage
. Die Interpolation sollte so
gewählt werden, dass bei der Transformation keine Aliasing-Effekte
auftreten. Im Normalfall sollte InterpolationInterpolationInterpolationInterpolationinterpolation
=
'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 FeaturesFeaturesFeaturesFeaturesfeatures
können die folgenden Merkmalsnamen zur
Erkennung der Zeichen ausgewählt werden.
- 'default'"default""default""default""default"
-
'ratio'"ratio""ratio""ratio""ratio" und 'pixel_invar'"pixel_invar""pixel_invar""pixel_invar""pixel_invar" werden ausgewählt.
- 'pixel'"pixel""pixel""pixel""pixel"
-
Grauwerte des Zeichens (WidthCharacterWidthCharacterWidthCharacterWidthCharacterwidthCharacter
x
HeightCharacterHeightCharacterHeightCharacterHeightCharacterheightCharacter
Merkmale).
- 'pixel_invar'"pixel_invar""pixel_invar""pixel_invar""pixel_invar"
-
Grauwerte des Zeichens mit automatischer maximaler
Grauwertspreizung (WidthCharacterWidthCharacterWidthCharacterWidthCharacterwidthCharacter
x
HeightCharacterHeightCharacterHeightCharacterHeightCharacterheightCharacter
Merkmale).
- 'pixel_binary'"pixel_binary""pixel_binary""pixel_binary""pixel_binary"
-
Region des Zeichens als Binärbild auf eine Größe von
WidthCharacterWidthCharacterWidthCharacterWidthCharacterwidthCharacter
x HeightCharacterHeightCharacterHeightCharacterHeightCharacterheightCharacter
skaliert. (WidthCharacterWidthCharacterWidthCharacterWidthCharacterwidthCharacter
x
HeightCharacterHeightCharacterHeightCharacterHeightCharacterheightCharacter
Merkmale).
- '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"
-
Horizontale Projektion der Grauwerte (siehe
gray_projectionsgray_projectionsGrayProjectionsGrayProjectionsGrayProjections
, HeightCharacterHeightCharacterHeightCharacterHeightCharacterheightCharacter
Merkmale).
- 'projection_horizontal_invar'"projection_horizontal_invar""projection_horizontal_invar""projection_horizontal_invar""projection_horizontal_invar"
-
Horizontale Projektion der Grauwerte, die maximal gespreizt sind
(HeightCharacterHeightCharacterHeightCharacterHeightCharacterheightCharacter
Merkmale).
- 'projection_vertical'"projection_vertical""projection_vertical""projection_vertical""projection_vertical"
-
Vertikale Projektion der Grauwerte (siehe
gray_projectionsgray_projectionsGrayProjectionsGrayProjectionsGrayProjections
, WidthCharacterWidthCharacterWidthCharacterWidthCharacterwidthCharacter
Merkmale).
- 'projection_vertical_invar'"projection_vertical_invar""projection_vertical_invar""projection_vertical_invar""projection_vertical_invar"
-
Vertikale Projektion der Grauwerte, die maximal gespreizt sind
(WidthCharacterWidthCharacterWidthCharacterWidthCharacterwidthCharacter
Merkmale).
- 'ratio'"ratio""ratio""ratio""ratio"
-
Seitenverhältnis des Zeichens (siehe
height_width_ratioheight_width_ratioHeightWidthRatioHeightWidthRatioHeightWidthRatio
, 1 Merkmal).
- 'anisometry'"anisometry""anisometry""anisometry""anisometry"
-
Formmerkmal Anisometrie (siehe eccentricityeccentricityEccentricityEccentricityEccentricity
, 1 Merkmal).
- 'width'"width""width""width""width"
-
Breite des Zeichens vor der Normierung auf die Standardgröße
(nicht skalierungsinvariant, siehe
height_width_ratioheight_width_ratioHeightWidthRatioHeightWidthRatioHeightWidthRatio
, 1 Merkmal).
- 'height'"height""height""height""height"
-
Höhe des Zeichens vor der Normierung auf die Standardgröße (nicht
skalierungsinvariant, siehe height_width_ratioheight_width_ratioHeightWidthRatioHeightWidthRatioHeightWidthRatio
, 1
Merkmal).
- 'zoom_factor'"zoom_factor""zoom_factor""zoom_factor""zoom_factor"
-
Größenunterschied zwischen aktuellem Zeichen und den Werten von
WidthCharacterWidthCharacterWidthCharacterWidthCharacterwidthCharacter
und HeightCharacterHeightCharacterHeightCharacterHeightCharacterheightCharacter
(nicht
skalierungsinvariant, 1 Merkmal).
- '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"
-
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"
-
Relativer Anteil der Vordergrund-Pixel in einem 4x4
Raster innerhalb des umschließenden Rechtecks des Zeichens (16
Merkmale).
- 'compactness'"compactness""compactness""compactness""compactness"
-
Formmerkmal Kompaktheit (siehe compactnesscompactnessCompactnessCompactnessCompactness
, 1 Merkmal).
- 'convexity'"convexity""convexity""convexity""convexity"
-
Formmerkmal Konvexität (siehe convexityconvexityConvexityConvexityConvexity
, 1 Merkmal).
- '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_invarMomentsRegion2ndInvarMomentsRegion2ndInvarMomentsRegion2ndInvar
, 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"
-
Normierte zweite relative geometrische Momente der Region (siehe
moments_region_2nd_rel_invarmoments_region_2nd_rel_invarMomentsRegion2ndRelInvarMomentsRegion2ndRelInvarMomentsRegion2ndRelInvar
, 2 Merkmale).
- '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_invarMomentsRegion3rdInvarMomentsRegion3rdInvarMomentsRegion3rdInvar
, 4 Merkmale).
- 'moments_central'"moments_central""moments_central""moments_central""moments_central"
-
Normierte zentrale geometrische Momente der Region (siehe
moments_region_centralmoments_region_centralMomentsRegionCentralMomentsRegionCentralMomentsRegionCentral
, 4 Merkmale).
- '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_planeMomentsGrayPlaneMomentsGrayPlaneMomentsGrayPlane
, 4 Merkmale)
- 'phi'"phi""phi""phi""phi"
-
Orientierung (Winkel) des Zeichens (siehe elliptic_axiselliptic_axisEllipticAxisEllipticAxisEllipticAxis
, 1
Merkmal).
- 'num_connect'"num_connect""num_connect""num_connect""num_connect"
-
Anzahl der Zusammenhangskomponenten (siehe
connect_and_holesconnect_and_holesConnectAndHolesConnectAndHolesConnectAndHoles
, 1 Merkmal).
- 'num_holes'"num_holes""num_holes""num_holes""num_holes"
-
Anzahl der Hohlflächen (siehe connect_and_holesconnect_and_holesConnectAndHolesConnectAndHolesConnectAndHoles
, 1
Merkmal).
- 'cooc'"cooc""cooc""cooc""cooc"
-
Werte der binären Cooccurrence-Matrix (siehe
gen_cooc_matrixgen_cooc_matrixGenCoocMatrixGenCoocMatrixGenCoocMatrix
, 12 Merkmale).
- '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"
-
Häufigkeit der Sehnen pro Zeile (nicht skalierungsinvariant,
HeightCharacterHeightCharacterHeightCharacterHeightCharacterheightCharacter
Merkmale).
Nachdem der Klassifikator erzeugt wurde, wird er mit
trainf_ocr_class_svmtrainf_ocr_class_svmTrainfOcrClassSvmTrainfOcrClassSvmTrainfOcrClassSvm
trainiert. Daraufhin kann der
Klassifikator mit write_ocr_class_svmwrite_ocr_class_svmWriteOcrClassSvmWriteOcrClassSvmWriteOcrClassSvm
abgespeichert werden.
Alternativ können auch sofort nach dem Training Zeichen mit
do_ocr_single_class_svmdo_ocr_single_class_svmDoOcrSingleClassSvmDoOcrSingleClassSvmDoOcrSingleClassSvm
oder do_ocr_multi_class_svmdo_ocr_multi_class_svmDoOcrMultiClassSvmDoOcrMultiClassSvmDoOcrMultiClassSvm
klassifiziert werden.
Ein Vergleich zwischen SVM und mehrschichtigem Perzeptron (engl.:
multilayer perceptron, MLP; siehe create_ocr_class_mlpcreate_ocr_class_mlpCreateOcrClassMlpCreateOcrClassMlpCreateOcrClassMlp
)
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
- 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.
Parameter
WidthCharacterWidthCharacterWidthCharacterWidthCharacterwidthCharacter
(input_control) integer →
HTupleHTupleHtuple (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
≤
20
HeightCharacterHeightCharacterHeightCharacterHeightCharacterheightCharacter
(input_control) integer →
HTupleHTupleHtuple (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
≤
20
InterpolationInterpolationInterpolationInterpolationinterpolation
(input_control) string →
HTupleHTupleHtuple (string) (string) (HString) (char*)
Interpolationsmodus bei der Skalierung der Zeichen.
Defaultwert:
'constant'
"constant"
"constant"
"constant"
"constant"
Werteliste: 'bicubic'"bicubic""bicubic""bicubic""bicubic", 'bilinear'"bilinear""bilinear""bilinear""bilinear", 'constant'"constant""constant""constant""constant", 'nearest_neighbor'"nearest_neighbor""nearest_neighbor""nearest_neighbor""nearest_neighbor", 'weighted'"weighted""weighted""weighted""weighted"
FeaturesFeaturesFeaturesFeaturesfeatures
(input_control) string(-array) →
HTupleHTupleHtuple (string) (string) (HString) (char*)
Merkmale, die zur Klassifikation verwendet werden.
Defaultwert:
'default'
"default"
"default"
"default"
"default"
Werteliste: 'anisometry'"anisometry""anisometry""anisometry""anisometry", 'chord_histo'"chord_histo""chord_histo""chord_histo""chord_histo", 'compactness'"compactness""compactness""compactness""compactness", 'convexity'"convexity""convexity""convexity""convexity", 'cooc'"cooc""cooc""cooc""cooc", 'default'"default""default""default""default", 'foreground'"foreground""foreground""foreground""foreground", '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", 'gradient_8dir'"gradient_8dir""gradient_8dir""gradient_8dir""gradient_8dir", 'height'"height""height""height""height", '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_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_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_holes'"num_holes""num_holes""num_holes""num_holes", 'num_runs'"num_runs""num_runs""num_runs""num_runs", 'phi'"phi""phi""phi""phi", 'pixel'"pixel""pixel""pixel""pixel", 'pixel_binary'"pixel_binary""pixel_binary""pixel_binary""pixel_binary", 'pixel_invar'"pixel_invar""pixel_invar""pixel_invar""pixel_invar", '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_vertical'"projection_vertical""projection_vertical""projection_vertical""projection_vertical", 'projection_vertical_invar'"projection_vertical_invar""projection_vertical_invar""projection_vertical_invar""projection_vertical_invar", 'ratio'"ratio""ratio""ratio""ratio", 'width'"width""width""width""width", 'zoom_factor'"zoom_factor""zoom_factor""zoom_factor""zoom_factor"
CharactersCharactersCharactersCharacterscharacters
(input_control) string-array →
HTupleHTupleHtuple (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"]
KernelTypeKernelTypeKernelTypeKernelTypekernelType
(input_control) string →
HTupleHTupleHtuple (string) (string) (HString) (char*)
Art des Kernels.
Defaultwert:
'rbf'
"rbf"
"rbf"
"rbf"
"rbf"
Werteliste: 'linear'"linear""linear""linear""linear", 'polynomial_homogeneous'"polynomial_homogeneous""polynomial_homogeneous""polynomial_homogeneous""polynomial_homogeneous", 'polynomial_inhomogeneous'"polynomial_inhomogeneous""polynomial_inhomogeneous""polynomial_inhomogeneous""polynomial_inhomogeneous", 'rbf'"rbf""rbf""rbf""rbf"
KernelParamKernelParamKernelParamKernelParamkernelParam
(input_control) real →
HTupleHTupleHtuple (real) (double) (double) (double)
Zusätzlicher Parameter für die Kernelfunktion.
Defaultwert: 0.02
Wertevorschläge: 0.01, 0.02, 0.05, 0.1, 0.5
NuNuNuNunu
(input_control) real →
HTupleHTupleHtuple (real) (double) (double) (double)
Regularisierungskonstante der SVM.
Defaultwert: 0.05
Wertevorschläge: 0.0001, 0.001, 0.01, 0.05, 0.1, 0.2, 0.3
Restriktion: Nu > 0.0 && Nu < 1.0
ModeModeModeModemode
(input_control) string →
HTupleHTupleHtuple (string) (string) (HString) (char*)
Modus der SVM.
Defaultwert:
'one-versus-one'
"one-versus-one"
"one-versus-one"
"one-versus-one"
"one-versus-one"
Werteliste: 'one-versus-all'"one-versus-all""one-versus-all""one-versus-all""one-versus-all", 'one-versus-one'"one-versus-one""one-versus-one""one-versus-one""one-versus-one"
PreprocessingPreprocessingPreprocessingPreprocessingpreprocessing
(input_control) string →
HTupleHTupleHtuple (string) (string) (HString) (char*)
Art der Vorverarbeitung (Transformation) der
Merkmalsvektoren.
Defaultwert:
'normalization'
"normalization"
"normalization"
"normalization"
"normalization"
Werteliste: 'canonical_variates'"canonical_variates""canonical_variates""canonical_variates""canonical_variates", 'none'"none""none""none""none", 'normalization'"normalization""normalization""normalization""normalization", 'principal_components'"principal_components""principal_components""principal_components""principal_components"
NumComponentsNumComponentsNumComponentsNumComponentsnumComponents
(input_control) integer →
HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Parameter der Vorverarbeitung: Anzahl der
transformierten Merkmale (ignoriert bei
PreprocessingPreprocessingPreprocessingPreprocessingpreprocessing
= 'none'"none""none""none""none" und
PreprocessingPreprocessingPreprocessingPreprocessingpreprocessing
= '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
OCRHandleOCRHandleOCRHandleOCRHandleOCRHandle
(output_control) ocr_svm →
HOCRSvm, HTupleHTupleHtuple (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_svm (8, 10, 'constant', 'default', CharacterNames, \
'rbf', 0.01, 0.01, 'one-versus-all', \
'principal_components', 10, OCRHandle)
trainf_ocr_class_svm (OCRHandle, 'letters.trf', 0.001, 'default')
* Re-classify the characters in the image.
do_ocr_multi_class_svm (Characters, Image, OCRHandle, Class)
Ergebnis
Sind die Parameterwerte korrekt, dann liefert
create_ocr_class_svmcreate_ocr_class_svmCreateOcrClassSvmCreateOcrClassSvmCreateOcrClassSvm
den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird
eine Fehlerbehandlung durchgeführt.
Nachfolger
trainf_ocr_class_svmtrainf_ocr_class_svmTrainfOcrClassSvmTrainfOcrClassSvmTrainfOcrClassSvm
Alternativen
create_ocr_class_mlpcreate_ocr_class_mlpCreateOcrClassMlpCreateOcrClassMlpCreateOcrClassMlp
Siehe auch
do_ocr_single_class_svmdo_ocr_single_class_svmDoOcrSingleClassSvmDoOcrSingleClassSvmDoOcrSingleClassSvm
,
do_ocr_multi_class_svmdo_ocr_multi_class_svmDoOcrMultiClassSvmDoOcrMultiClassSvmDoOcrMultiClassSvm
,
clear_ocr_class_svmclear_ocr_class_svmClearOcrClassSvmClearOcrClassSvmClearOcrClassSvm
,
create_class_svmcreate_class_svmCreateClassSvmCreateClassSvmCreateClassSvm
,
train_class_svmtrain_class_svmTrainClassSvmTrainClassSvmTrainClassSvm
,
classify_class_svmclassify_class_svmClassifyClassSvmClassifyClassSvmClassifyClassSvm
Modul
OCR/OCV