Name
segment_charactersT_segment_charactersSegmentCharacterssegment_charactersSegmentCharactersSegmentCharacters — Segmentieren von Zeichen in einem gegebenen Bildbereich.
Herror T_segment_characters(const Hobject Region, const Hobject Image, Hobject* ImageForeground, Hobject* RegionForeground, const Htuple Method, const Htuple EliminateLines, const Htuple DotPrint, const Htuple StrokeWidth, const Htuple CharWidth, const Htuple CharHeight, const Htuple ThresholdOffset, const Htuple Contrast, Htuple* UsedThreshold)
Herror segment_characters(Hobject Region, Hobject Image, Hobject* ImageForeground, Hobject* RegionForeground, const HTuple& Method, const HTuple& EliminateLines, const HTuple& DotPrint, const HTuple& StrokeWidth, const HTuple& CharWidth, const HTuple& CharHeight, const HTuple& ThresholdOffset, const HTuple& Contrast, Hlong* UsedThreshold)
Herror segment_characters(Hobject Region, Hobject Image, Hobject* ImageForeground, Hobject* RegionForeground, const HTuple& Method, const HTuple& EliminateLines, const HTuple& DotPrint, const HTuple& StrokeWidth, const HTuple& CharWidth, const HTuple& CharHeight, const HTuple& ThresholdOffset, const HTuple& Contrast, HTuple* UsedThreshold)
HImage HRegion::SegmentCharacters(const HImage& Image, HRegion* RegionForeground, const HTuple& Method, const HTuple& EliminateLines, const HTuple& DotPrint, const HTuple& StrokeWidth, const HTuple& CharWidth, const HTuple& CharHeight, const HTuple& ThresholdOffset, const HTuple& Contrast, Hlong* UsedThreshold) const
HImageArray HRegionArray::SegmentCharacters(const HImage& Image, HRegionArray* RegionForeground, const HTuple& Method, const HTuple& EliminateLines, const HTuple& DotPrint, const HTuple& StrokeWidth, const HTuple& CharWidth, const HTuple& CharHeight, const HTuple& ThresholdOffset, const HTuple& Contrast, HTuple* UsedThreshold) const
void SegmentCharacters(const HObject& Region, const HObject& Image, HObject* ImageForeground, HObject* RegionForeground, const HTuple& Method, const HTuple& EliminateLines, const HTuple& DotPrint, const HTuple& StrokeWidth, const HTuple& CharWidth, const HTuple& CharHeight, const HTuple& ThresholdOffset, const HTuple& Contrast, HTuple* UsedThreshold)
HImage HRegion::SegmentCharacters(const HImage& Image, HRegion* RegionForeground, const HString& Method, const HString& EliminateLines, const HString& DotPrint, const HString& StrokeWidth, const HTuple& CharWidth, const HTuple& CharHeight, Hlong ThresholdOffset, Hlong Contrast, HTuple* UsedThreshold) const
HImage HRegion::SegmentCharacters(const HImage& Image, HRegion* RegionForeground, const HString& Method, const HString& EliminateLines, const HString& DotPrint, const HString& StrokeWidth, const HTuple& CharWidth, const HTuple& CharHeight, Hlong ThresholdOffset, Hlong Contrast, Hlong* UsedThreshold) const
HImage HRegion::SegmentCharacters(const HImage& Image, HRegion* RegionForeground, const char* Method, const char* EliminateLines, const char* DotPrint, const char* StrokeWidth, const HTuple& CharWidth, const HTuple& CharHeight, Hlong ThresholdOffset, Hlong Contrast, Hlong* UsedThreshold) const
void HOperatorSetX.SegmentCharacters(
[in] IHUntypedObjectX* Region, [in] IHUntypedObjectX* Image, [out] IHUntypedObjectX** ImageForeground, [out] IHUntypedObjectX** RegionForeground, [in] VARIANT Method, [in] VARIANT EliminateLines, [in] VARIANT DotPrint, [in] VARIANT StrokeWidth, [in] VARIANT CharWidth, [in] VARIANT CharHeight, [in] VARIANT ThresholdOffset, [in] VARIANT Contrast, [out] VARIANT* UsedThreshold)
IHImageX* HRegionX.SegmentCharacters(
[in] IHImageX* Image, [out] IHRegionX** RegionForeground, [in] BSTR Method, [in] BSTR EliminateLines, [in] BSTR DotPrint, [in] BSTR StrokeWidth, [in] VARIANT CharWidth, [in] VARIANT CharHeight, [in] Hlong ThresholdOffset, [in] Hlong Contrast, [out] VARIANT* UsedThreshold)
static void HOperatorSet.SegmentCharacters(HObject region, HObject image, out HObject imageForeground, out HObject regionForeground, HTuple method, HTuple eliminateLines, HTuple dotPrint, HTuple strokeWidth, HTuple charWidth, HTuple charHeight, HTuple thresholdOffset, HTuple contrast, out HTuple usedThreshold)
HImage HRegion.SegmentCharacters(HImage image, out HRegion regionForeground, string method, string eliminateLines, string dotPrint, string strokeWidth, HTuple charWidth, HTuple charHeight, int thresholdOffset, int contrast, out HTuple usedThreshold)
HImage HRegion.SegmentCharacters(HImage image, out HRegion regionForeground, string method, string eliminateLines, string dotPrint, string strokeWidth, HTuple charWidth, HTuple charHeight, int thresholdOffset, int contrast, out int usedThreshold)
Dieser Operator wird verwendet, um Zeichen aus einer RegionRegionRegionRegionRegionregion im Bild
ImageImageImageImageImageimage zu segmentieren. RegionRegionRegionRegionRegionregion wird lediglich zum
Einschränken des Verarbeitungsbereiches verwendet. Die segmentierten Zeichen
werden in RegionForegroundRegionForegroundRegionForegroundRegionForegroundRegionForegroundregionForeground zurückgeliefert.
Es stehen zwei unterschiedliche Methoden zur Verfügung, um die
Zeichen zu detektieren. Beide Methoden gehen davon aus, dass die
Zeichen dunkler als der Hintergrund sind. Sollte dies nicht
zutreffen, dann sollte das Bild mittels invert_imageinvert_imageInvertImageinvert_imageInvertImageInvertImage invertiert
werden.
Der Parameter MethodMethodMethodMethodMethodmethod bestimmt den Algorithmus der zur Segmentation
des Textes verwendet wird. Die möglichen Werte sind
- 'local_contrast_best'
-
Diese Methode extrahiert Text, der lokal von seinem
Hintergrund abweicht. Aus diesem Grund eignet er sich
für inhomogen beleuchtete Bilder. Die Hervorhebung der
Textränder führt zu einer genaueren Bestimmung des
Textes. Dies ist vor allem dann nützlich, wenn der
Hintergrund sehr texturiert ist. Der Parameter
ContrastContrastContrastContrastContrastcontrast definiert den minimalen Kontrast,
also die minimale Grauwertdifferenz zwischen dem
Text und dem Hintergrund. Das Verhalten dieses
Segmentationsverfahrens ist mit dem von
var_thresholdvar_thresholdVarThresholdvar_thresholdVarThresholdVarThreshold und dem Setzen von LightDark
auf 'dark'"dark""dark""dark""dark""dark" identisch.
- 'local_auto_shape'
-
Der minimale Kontrast wird automatisch so geschätzt,
dass die Zahl der winzigen Regionen reduziert wird.
Dieses Verfahren ist besonders für verrauschte Bilder
geeignet. Der Parameter ThresholdOffsetThresholdOffsetThresholdOffsetThresholdOffsetThresholdOffsetthresholdOffset kann
zum Anpassen des Schwellwerts verwendet werden.
Sei g(x,y) der Grauwert des Eingabebildes ImageImageImageImageImageimage
an der Position (x,y), dann wird die Schwellwertbedingung
bestimmt durch:
g(x,y) <= UsedThresholdUsedThresholdUsedThresholdUsedThresholdUsedThresholdusedThreshold + ThresholdOffsetThresholdOffsetThresholdOffsetThresholdOffsetThresholdOffsetthresholdOffset.
Falls zusätzlich zu den Zeichen horizontale oder vertikale Linien in
Richtung der Textzeilen segmentiert werden, so sollte
EliminateLinesEliminateLinesEliminateLinesEliminateLinesEliminateLineseliminateLines auf 'true'"true""true""true""true""true" gesetzt werden. Das Entfernen
der Linien wird durch den maximalen Wert von CharWidthCharWidthCharWidthCharWidthCharWidthcharWidth und den
maximalen Wert von CharHeightCharHeightCharHeightCharHeightCharHeightcharHeight beeinflusst. Weitere Informationen
findet man in deren Parameterbeschreibungen.
DotPrintDotPrintDotPrintDotPrintDotPrintdotPrint:
Sollte auf 'true'"true""true""true""true""true" gesetzt werden, wenn Dot-Prints gelesen
werden sollen, ansonsten auf 'false'"false""false""false""false""false".
StrokeWidthStrokeWidthStrokeWidthStrokeWidthStrokeWidthstrokeWidth:
Spezifiziert die Strichstärke des Textes und wird zur Bestimmung von
Filtergrößen für die Zeichendetektion verwendet. Die Filtergrößen werden
auch durch die Parameter DotPrintDotPrintDotPrintDotPrintDotPrintdotPrint, die durchschnittliche
Zeichenbreite CharWidthCharWidthCharWidthCharWidthCharWidthcharWidth und die durchschnittliche Zeichenhöhe
CharHeightCharHeightCharHeightCharHeightCharHeightcharHeight festgelegt.
CharWidthCharWidthCharWidthCharWidthCharWidthcharWidth:
Dieser Parameter kann durch ein Tupel, welches bis zu drei Werten besitzen
kann, gesetzt werden. Der erste Wert ist die durchschnittliche Breite,
der zweite ist die minimale und der dritte die maximale Zeichenbreite.
Wenn die minimale Zeichenbreite auf -1 gesetzt wird, berechnet der Operator
den Wert automatisch in Abhängigkeit von der durchschnittlichen
Zeichenbreite. Das gleiche gilt für den Fall, dass der maximale Wert nicht
gesetzt wird. Einige Beispiele:
[10] setzt die durchschnittliche Zeichenbreite auf 10, die minimale
und maximale Zeichenbreite werden vom Operator berechnet.
[10,-1,20] setzt die durchschnittliche Zeichenbreite auf 10, der
minimale Wert wird vom Operator bestimmt und der maximale Wert auf
20 gesetzt.
[10,5,20] setzt die durchschnittliche Zeichenbreite auf 10, der
minimale Wert wird auf 5 und der maximale Wert auf 20 gesetzt.
CharHeightCharHeightCharHeightCharHeightCharHeightcharHeight:
Dieser Parameter kann durch ein Tupel, welches bis zu drei Werten besitzen
kann, gesetzt werden. Der erste Wert ist die durchschnittliche Höhe,
der zweite ist die minimale und der dritte die maximale Zeichenhöhe.
Wenn die minimale Zeichenhöhe auf -1 gesetzt wird, berechnet der Operator
den Wert automatisch in Abhängigkeit von der durchschnittlichen Zeichenhöhe.
Das gleiche gilt für den Fall, dass der maximale Wert nicht gesetzt wird.
Einige Beispiele:
[10] setzt die durchschnittliche Zeichenhöhe auf 10, die minimale
und maximale Zeichenhöhe werden vom Operator berechnet.
[10,-1,20] setzt die durchschnittliche Zeichenhöhe auf 10, der minimale
Wert wird vom Operator bestimmt und der maximale Wert auf 20 gesetzt.
[10,5,20] setzt die durchschnittliche Zeichenhöhe auf 10, der minimale
Wert wird auf 5 und der maximale Wert auf 20 gesetzt.
ThresholdOffsetThresholdOffsetThresholdOffsetThresholdOffsetThresholdOffsetthresholdOffset:
Hiermit kann der Schwellwert angepasst werden, der verwendet wird, wenn die
Segmentierungsmethode MethodMethodMethodMethodMethodmethod auf den Wert
'local_auto_shape'"local_auto_shape""local_auto_shape""local_auto_shape""local_auto_shape""local_auto_shape" gesetzt wurde.
ContrastContrastContrastContrastContrastcontrast:
Definiert den minimalen Kontrast zwischen dem Text und dem Hintergrund.
Dieser Parameter wird verwendet, wenn MethodMethodMethodMethodMethodmethod auf
'local_contrast_best'"local_contrast_best""local_contrast_best""local_contrast_best""local_contrast_best""local_contrast_best" gesetzt wurde.
UsedThresholdUsedThresholdUsedThresholdUsedThresholdUsedThresholdusedThreshold:
Dieser Parameter enthält nach der Ausführung den Schwellwert, der zur
Segmentierung der Zeichen verwendet wurde.
ImageForegroundImageForegroundImageForegroundImageForegroundImageForegroundimageForeground enthält das Bild, das intern für die Segmentierung
verwendet wurde.
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Automatisch parallelisiert auf Tupelebene.
Bildbereich mit den Textzeilen.
Zur Segmentierung verwendetes Bild.
Methode zum Segmentieren der Textzeichen.
Defaultwert:
'local_auto_shape'
"local_auto_shape"
"local_auto_shape"
"local_auto_shape"
"local_auto_shape"
"local_auto_shape"
Werteliste: 'local_auto_shape'"local_auto_shape""local_auto_shape""local_auto_shape""local_auto_shape""local_auto_shape", 'local_contrast_best'"local_contrast_best""local_contrast_best""local_contrast_best""local_contrast_best""local_contrast_best"
Entfernen von horizontalen and vertikalen Linien?
Defaultwert:
'false'
"false"
"false"
"false"
"false"
"false"
Werteliste: 'false'"false""false""false""false""false", 'true'"true""true""true""true""true"
Sollen Dot-Print-Zeichen detektiert werden?
Defaultwert:
'false'
"false"
"false"
"false"
"false"
"false"
Werteliste: 'false'"false""false""false""false""false", 'true'"true""true""true""true""true"
Strichstärke der Zeichen.
Defaultwert:
'medium'
"medium"
"medium"
"medium"
"medium"
"medium"
Werteliste: 'bold'"bold""bold""bold""bold""bold", 'light'"light""light""light""light""light", 'medium'"medium""medium""medium""medium""medium", 'ultra_light'"ultra_light""ultra_light""ultra_light""ultra_light""ultra_light"
Breite eines Zeichens.
Defaultwert: 25
Typischer Wertebereich: 1
≤
CharWidth
CharWidth
CharWidth
CharWidth
CharWidth
charWidth
Restriktion: CharWidth >= 1
Höhe eines Zeichens.
Defaultwert: 25
Typischer Wertebereich: 1
≤
CharHeight
CharHeight
CharHeight
CharHeight
CharHeight
charHeight
Restriktion: CharHeight >= 1
Wert zur Anpassung der Segmentierung.
Defaultwert: 0
Minimale Grauwertdifferenz zwischen Text und
Hintergrund.
Defaultwert: 10
Typischer Wertebereich: 1
≤
Contrast
Contrast
Contrast
Contrast
Contrast
contrast
Restriktion: Contrast >= 1
Verwendete Schwellwert zur Segmentierung der Zeichen.
read_image (Image, 'dot_print_rotated/dot_print_rotated_'+J$'02d')
text_line_orientation (Image, Image, 50, rad(-30), rad(30), OrientationAngle)
rotate_image (Image, ImageRotate, -OrientationAngle/rad(180)*180, 'constant')
segment_characters (ImageRotate, ImageRotate, ImageForeground, \
RegionForeground, 'local_auto_shape', 0, 0, 'medium', \
25, 25, 0, 10, UsedThreshold)
Sind die Eingabeparameter korrekt besetzt, dann liefert
segment_characterssegment_charactersSegmentCharacterssegment_charactersSegmentCharactersSegmentCharacters den Wert 2 (H_MSG_TRUE). Andernfalls wird eine
Fehlerbehandlung durchgeführt.
text_line_orientationtext_line_orientationTextLineOrientationtext_line_orientationTextLineOrientationTextLineOrientation
select_charactersselect_charactersSelectCharactersselect_charactersSelectCharactersSelectCharacters,
connectionconnectionConnectionconnectionConnectionConnection
thresholdthresholdThresholdthresholdThresholdThreshold
Foundation