KlassenKlassenKlassenKlassen | | | | Operatoren

char_thresholdchar_thresholdCharThresholdchar_thresholdCharThresholdCharThreshold (Operator)

Name

char_thresholdchar_thresholdCharThresholdchar_thresholdCharThresholdCharThreshold — Segmentieren mit Schwellen für Texte.

Signatur

char_threshold(Image, HistoRegion : Characters : Sigma, Percent : Threshold)

Herror char_threshold(const Hobject Image, const Hobject HistoRegion, Hobject* Characters, double Sigma, double Percent, Hlong* Threshold)

Herror T_char_threshold(const Hobject Image, const Hobject HistoRegion, Hobject* Characters, const Htuple Sigma, const Htuple Percent, Htuple* Threshold)

Herror char_threshold(Hobject Image, Hobject HistoRegion, Hobject* Characters, const HTuple& Sigma, const HTuple& Percent, Hlong* Threshold)

Herror char_threshold(Hobject Image, Hobject HistoRegion, Hobject* Characters, const HTuple& Sigma, const HTuple& Percent, HTuple* Threshold)

HRegion HImage::CharThreshold(const HRegion& HistoRegion, const HTuple& Sigma, const HTuple& Percent, Hlong* Threshold) const

HRegionArray HImageArray::CharThreshold(const HRegion& HistoRegion, const HTuple& Sigma, const HTuple& Percent, HTuple* Threshold) const

void CharThreshold(const HObject& Image, const HObject& HistoRegion, HObject* Characters, const HTuple& Sigma, const HTuple& Percent, HTuple* Threshold)

HRegion HImage::CharThreshold(const HRegion& HistoRegion, double Sigma, const HTuple& Percent, HTuple* Threshold) const

HRegion HImage::CharThreshold(const HRegion& HistoRegion, double Sigma, double Percent, Hlong* Threshold) const

void HOperatorSetX.CharThreshold(
[in] IHUntypedObjectX* Image, [in] IHUntypedObjectX* HistoRegion, [out] IHUntypedObjectX*Characters, [in] VARIANT Sigma, [in] VARIANT Percent, [out] VARIANT* Threshold)

IHRegionX* HImageX.CharThreshold(
[in] IHRegionX* HistoRegion, [in] double Sigma, [in] VARIANT Percent, [out] VARIANT* Threshold)

static void HOperatorSet.CharThreshold(HObject image, HObject histoRegion, out HObject characters, HTuple sigma, HTuple percent, out HTuple threshold)

HRegion HImage.CharThreshold(HRegion histoRegion, double sigma, HTuple percent, out HTuple threshold)

HRegion HImage.CharThreshold(HRegion histoRegion, double sigma, double percent, out int threshold)

Beschreibung

char_thresholdchar_thresholdCharThresholdchar_thresholdCharThresholdCharThreshold ist darauf spezialisiert, in einkanaligen Bildern dunkle Schriftzeichen von hellem Hintergrund zu segmentieren. Die Vorgehensweise ist dabei wie folgt: Zuerst wird das Histogramm der Grauwerte des Bildes ImageImageImageImageImageimage für die Punkte der Region HistoRegionHistoRegionHistoRegionHistoRegionHistoRegionhistoRegion ermittelt und zur Rauschunterdrückung mit einer Gaußmaske (Parameter SigmaSigmaSigmaSigmaSigmasigma) geglättet. In diesem Histogramm kennzeichnet das Maximum den Hintergrund (weißes Papier), während die Schriftzeichen ein kleines lokales Maximum bei niedrigen Grauwerten verursachen. Im Gegensatz zum Operator binary_thresholdbinary_thresholdBinaryThresholdbinary_thresholdBinaryThresholdBinaryThreshold wird nun nicht nach dem Minimum zwischen den beiden Maxima gesucht; der Schwellenwert wird stattdessen in Relation zum Maximum des Histogramms, also zum Hintergrund, nach folgender Bedingung bestimmt:


       Histogramm[Schwellenwert] * 100.0 < Histogramm[Maximum] * (100.0 - PercentPercentPercentPercentPercentpercent)

Falls z.B. PercentPercentPercentPercentPercentpercent = 95 gewählt wird, sucht der Operator den Grauwert, dessen Häufigkeit höchstens 5 Prozent der maximalen Häufigkeit beträgt. Da char_thresholdchar_thresholdCharThresholdchar_thresholdCharThresholdCharThreshold annimmt, dass die Schriftzeichen dunkler sind als der Hintergrund, wird der Schwellenwert links vom Maximum gesucht.

Im Vergleich zu binary_thresholdbinary_thresholdBinaryThresholdbinary_thresholdBinaryThresholdBinaryThreshold sollte char_thresholdchar_thresholdCharThresholdchar_thresholdCharThresholdCharThreshold dann eingesetzt werden, wenn kein deutliches Minimum zwischen den beiden zu den Schriftzeichen bzw. zum Hintergrund gehörenden Maxima besteht oder die Schriftzeichen gar kein lokales Maximum verursachen. Dies tritt z.B. bei ungleichmäßiger Beleuchtung auf, oder wenn das Bild nur wenige Schriftzeichen enthält.

Parallelisierung

Parameter

ImageImageImageImageImageimage (input_object)  singlechannelimage(-array) objectHImageHImageHImageHImageXHobject (byte)

Eingabebild.

HistoRegionHistoRegionHistoRegionHistoRegionHistoRegionhistoRegion (input_object)  region objectHRegionHRegionHRegionHRegionXHobject

Region, in der das Histogramm berechnet wird.

CharactersCharactersCharactersCharactersCharacterscharacters (output_object)  region(-array) objectHRegionHRegionHRegionHRegionXHobject *

Dunkle Bereiche des Bildes (Buchstaben).

SigmaSigmaSigmaSigmaSigmasigma (input_control)  number HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Sigma für Glättung des Histogramms.

Defaultwert: 2.0

Wertevorschläge: 0.0, 0.5, 1.0, 2.0, 3.0, 4.0, 5.0

Typischer Wertebereich: 0.0 ≤ Sigma Sigma Sigma Sigma Sigma sigma ≤ 50.0 (lin)

Minimale Schrittweite: 0.01

Empfohlene Schrittweite: 0.2

PercentPercentPercentPercentPercentpercent (input_control)  number HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Prozentwert für Grauwertunterschied.

Defaultwert: 95

Wertevorschläge: 90, 92, 95, 96, 97, 98, 99, 99.5, 100

Typischer Wertebereich: 0.0 ≤ Percent Percent Percent Percent Percent percent ≤ 100.0 (lin)

Minimale Schrittweite: 0.1

Empfohlene Schrittweite: 0.5

ThresholdThresholdThresholdThresholdThresholdthreshold (output_control)  integer(-array) HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Verwendeter Schwellenwert.

Beispiel (HDevelop)

read_image (Image, 'letters')
char_threshold (Image, Image, Seg, 0.0, 5.0, Threshold)
connection (Seg, Connected)

Beispiel (C)

read_image(&Image,"letters");
char_threshold(Image,Image,&Seg,0.0,5.0,&Threshold);
connection(Seg,&Connected);
set_colored(WindowHandle,12);
set_shape(WindowHandle,"rectangle1");
disp_region(Connected,WindowHandle);

Beispiel (HDevelop)

read_image (Image, 'letters')
char_threshold (Image, Image, Seg, 0.0, 5.0, Threshold)
connection (Seg, Connected)

Beispiel (C++ (HALCON 5.0-10.0))

#include "HIOStream.h"
#if !defined(USE_IOSTREAM_H)
using namespace std;
#endif
#include "HalconCpp.h"
using namespace Halcon;

int main (int argc, char *argv[])
{
  if (argc != 2)
  {
    cout << "Usage : " << argv[0] << " 'image' " << endl;
    return -1;
  }

  HImage       image(argv[1]);
  HWindow      w;
  HTuple       threshold;

  w.SetDraw("margin");
  w.SetShape("rectangle1");
  w.SetColored(12);

  image.Display(w);

  HRegionArray reg = image.CharThreshold(image,0,5,&threshold);
  HRegionArray con = reg.Connection();

  cout << "Display image after CharThreshold segmentation " << endl;
  con.Display(w);
  w.Click();

  return 0;
}

Beispiel (HDevelop)

read_image (Image, 'letters')
char_threshold (Image, Image, Seg, 0.0, 5.0, Threshold)
connection (Seg, Connected)

Beispiel (HDevelop)

read_image (Image, 'letters')
char_threshold (Image, Image, Seg, 0.0, 5.0, Threshold)
connection (Seg, Connected)

Vorgänger

anisotropic_diffusionanisotropic_diffusionAnisotropicDiffusionanisotropic_diffusionAnisotropicDiffusionAnisotropicDiffusion, median_imagemedian_imageMedianImagemedian_imageMedianImageMedianImage, illuminateilluminateIlluminateilluminateIlluminateIlluminate

Nachfolger

connectionconnectionConnectionconnectionConnectionConnection, select_shapeselect_shapeSelectShapeselect_shapeSelectShapeSelectShape, select_grayselect_graySelectGrayselect_graySelectGraySelectGray

Alternativen

binary_thresholdbinary_thresholdBinaryThresholdbinary_thresholdBinaryThresholdBinaryThreshold, auto_thresholdauto_thresholdAutoThresholdauto_thresholdAutoThresholdAutoThreshold, gray_histogray_histoGrayHistogray_histoGrayHistoGrayHisto, smooth_funct_1d_gausssmooth_funct_1d_gaussSmoothFunct1dGausssmooth_funct_1d_gaussSmoothFunct1dGaussSmoothFunct1dGauss, thresholdthresholdThresholdthresholdThresholdThreshold

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren