segment_charactersT_segment_charactersSegmentCharactersSegmentCharacterssegment_characters (Operator)

Name

segment_charactersT_segment_charactersSegmentCharactersSegmentCharacterssegment_characters — Segmentieren von Zeichen in einem gegebenen Bildbereich.

Signatur

segment_characters(Region, Image : ImageForeground, RegionForeground : Method, EliminateLines, DotPrint, StrokeWidth, CharWidth, CharHeight, ThresholdOffset, Contrast : UsedThreshold)

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)

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

HImage HRegion::SegmentCharacters(const HImage& Image, HRegion* RegionForeground, const wchar_t* Method, const wchar_t* EliminateLines, const wchar_t* DotPrint, const wchar_t* StrokeWidth, const HTuple& CharWidth, const HTuple& CharHeight, Hlong ThresholdOffset, Hlong Contrast, Hlong* UsedThreshold) const   (Nur Windows)

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)

def segment_characters(region: HObject, image: HObject, method: str, eliminate_lines: str, dot_print: str, stroke_width: str, char_width: Sequence[int], char_height: Sequence[int], threshold_offset: int, contrast: int) -> Tuple[HObject, HObject, Sequence[int]]

def segment_characters_s(region: HObject, image: HObject, method: str, eliminate_lines: str, dot_print: str, stroke_width: str, char_width: Sequence[int], char_height: Sequence[int], threshold_offset: int, contrast: int) -> Tuple[HObject, HObject, int]

Beschreibung

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 RegionForegroundRegionForegroundRegionForegroundRegionForegroundregionForegroundregion_foreground 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_imageInvertImageInvertImageInvertImageinvert_image invertiert werden.

Der Parameter MethodMethodMethodMethodmethodmethod bestimmt den Algorithmus der zur Segmentierung 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 Segmentierungsverfahrens ist mit dem von var_thresholdvar_thresholdVarThresholdVarThresholdVarThresholdvar_threshold 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 ThresholdOffsetThresholdOffsetThresholdOffsetThresholdOffsetthresholdOffsetthreshold_offset kann zum Anpassen des Schwellenwerts verwendet werden. Sei g(x,y) der Grauwert des Eingabebildes ImageImageImageImageimageimage an der Position (x,y), dann wird die Schwellenwertbedingung bestimmt durch:

g(x,y) <= UsedThresholdUsedThresholdUsedThresholdUsedThresholdusedThresholdused_threshold + ThresholdOffsetThresholdOffsetThresholdOffsetThresholdOffsetthresholdOffsetthreshold_offset.

Falls zusätzlich zu den Zeichen horizontale oder vertikale Linien in Richtung der Textzeilen segmentiert werden, so sollte EliminateLinesEliminateLinesEliminateLinesEliminateLineseliminateLineseliminate_lines auf 'true'"true""true""true""true""true" gesetzt werden. Das Entfernen der Linien wird durch den maximalen Wert von CharWidthCharWidthCharWidthCharWidthcharWidthchar_width und den maximalen Wert von CharHeightCharHeightCharHeightCharHeightcharHeightchar_height beeinflusst. Weitere Informationen findet man in deren Parameterbeschreibungen.

DotPrintDotPrintDotPrintDotPrintdotPrintdot_print: Sollte auf 'true'"true""true""true""true""true" gesetzt werden, wenn Dot-Prints gelesen werden sollen, ansonsten auf 'false'"false""false""false""false""false".

StrokeWidthStrokeWidthStrokeWidthStrokeWidthstrokeWidthstroke_width: 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 DotPrintDotPrintDotPrintDotPrintdotPrintdot_print, die durchschnittliche Zeichenbreite CharWidthCharWidthCharWidthCharWidthcharWidthchar_width und die durchschnittliche Zeichenhöhe CharHeightCharHeightCharHeightCharHeightcharHeightchar_height festgelegt.

CharWidthCharWidthCharWidthCharWidthcharWidthchar_width: 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.

CharHeightCharHeightCharHeightCharHeightcharHeightchar_height: 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.

ThresholdOffsetThresholdOffsetThresholdOffsetThresholdOffsetthresholdOffsetthreshold_offset: Hiermit kann der Schwellenwert 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.

UsedThresholdUsedThresholdUsedThresholdUsedThresholdusedThresholdused_threshold: Dieser Parameter enthält nach der Ausführung den Schwellenwert, der zur Segmentierung der Zeichen verwendet wurde.

ImageForegroundImageForegroundImageForegroundImageForegroundimageForegroundimage_foreground enthält das Bild, das intern für die Segmentierung verwendet wurde.

Ausführungsinformationen

Parameter

RegionRegionRegionRegionregionregion (input_object)  region(-array) objectHRegionHObjectHRegionHobject

Bildbereich mit den Textzeilen.

ImageImageImageImageimageimage (input_object)  singlechannelimage objectHImageHObjectHImageHobject (byte / uint2)

Eingabebild.

ImageForegroundImageForegroundImageForegroundImageForegroundimageForegroundimage_foreground (output_object)  image(-array) objectHImageHObjectHImageHobject * (byte / uint2)

Zur Segmentierung verwendetes Bild.

RegionForegroundRegionForegroundRegionForegroundRegionForegroundregionForegroundregion_foreground (output_object)  singlechannelregion(-array) objectHRegionHObjectHRegionHobject *

Region der Zeichen.

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

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"

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

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"

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

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"

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

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"

CharWidthCharWidthCharWidthCharWidthcharWidthchar_width (input_control)  integer-array HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Breite eines Zeichens.

Defaultwert: 25

Typischer Wertebereich: 1 ≤ CharWidth CharWidth CharWidth CharWidth charWidth char_width

Restriktion: CharWidth >= 1

CharHeightCharHeightCharHeightCharHeightcharHeightchar_height (input_control)  integer-array HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Höhe eines Zeichens.

Defaultwert: 25

Typischer Wertebereich: 1 ≤ CharHeight CharHeight CharHeight CharHeight charHeight char_height

Restriktion: CharHeight >= 1

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

Wert zur Anpassung der Segmentierung.

Defaultwert: 0

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

Minimale Grauwertdifferenz zwischen Text und Hintergrund.

Defaultwert: 10

Typischer Wertebereich: 1 ≤ Contrast Contrast Contrast Contrast contrast contrast

Restriktion: Contrast >= 1

UsedThresholdUsedThresholdUsedThresholdUsedThresholdusedThresholdused_threshold (output_control)  integer(-array) HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Verwendete Schwellenwert zur Segmentierung der Zeichen.

Beispiel (HDevelop)

for Index := 1 to 5 by 1
  read_image (Image, 'dot_print_rotated/dot_print_rotated_'+Index$'02d')
  text_line_orientation (Image, Image, 50, rad(-30), rad(30), OrientationAngle)
  rotate_image (Image, ImageRotate, deg(-OrientationAngle), 'constant')
  segment_characters (ImageRotate, ImageRotate, ImageForeground, \
                      RegionForeground, 'local_auto_shape', 'false', 'false', 'medium', \
                      25, 25, 0, 10, UsedThreshold)
endfor

Ergebnis

Sind die Eingabeparameter korrekt besetzt, dann liefert segment_characterssegment_charactersSegmentCharactersSegmentCharactersSegmentCharacterssegment_characters den Wert TRUE. Andernfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

text_line_orientationtext_line_orientationTextLineOrientationTextLineOrientationTextLineOrientationtext_line_orientation

Nachfolger

select_charactersselect_charactersSelectCharactersSelectCharactersSelectCharactersselect_characters, connectionconnectionConnectionConnectionConnectionconnection

Alternativen

thresholdthresholdThresholdThresholdThresholdthreshold

Modul

Foundation