min_max_graymin_max_grayMinMaxGrayMinMaxGraymin_max_gray (Operator)

Name

min_max_graymin_max_grayMinMaxGrayMinMaxGraymin_max_gray — Minimale und maximale Grauwerte innerhalb von Regionen.

Signatur

min_max_gray(Regions, Image : : Percent : Min, Max, Range)

Herror min_max_gray(const Hobject Regions, const Hobject Image, double Percent, double* Min, double* Max, double* Range)

Herror T_min_max_gray(const Hobject Regions, const Hobject Image, const Htuple Percent, Htuple* Min, Htuple* Max, Htuple* Range)

void MinMaxGray(const HObject& Regions, const HObject& Image, const HTuple& Percent, HTuple* Min, HTuple* Max, HTuple* Range)

void HImage::MinMaxGray(const HRegion& Regions, const HTuple& Percent, HTuple* Min, HTuple* Max, HTuple* Range) const

void HImage::MinMaxGray(const HRegion& Regions, double Percent, double* Min, double* Max, double* Range) const

void HRegion::MinMaxGray(const HImage& Image, const HTuple& Percent, HTuple* Min, HTuple* Max, HTuple* Range) const

void HRegion::MinMaxGray(const HImage& Image, double Percent, double* Min, double* Max, double* Range) const

static void HOperatorSet.MinMaxGray(HObject regions, HObject image, HTuple percent, out HTuple min, out HTuple max, out HTuple range)

void HImage.MinMaxGray(HRegion regions, HTuple percent, out HTuple min, out HTuple max, out HTuple range)

void HImage.MinMaxGray(HRegion regions, double percent, out double min, out double max, out double range)

void HRegion.MinMaxGray(HImage image, HTuple percent, out HTuple min, out HTuple max, out HTuple range)

void HRegion.MinMaxGray(HImage image, double percent, out double min, out double max, out double range)

def min_max_gray(regions: HObject, image: HObject, percent: Union[int, float]) -> Tuple[Sequence[float], Sequence[float], Sequence[float]]

def min_max_gray_s(regions: HObject, image: HObject, percent: Union[int, float]) -> Tuple[float, float, float]

Beschreibung

min_max_graymin_max_grayMinMaxGrayMinMaxGraymin_max_gray erstellt das Histogramm der absoluten Häufigkeiten der Grauwerte innerhalb von RegionsRegionsRegionsregionsregions im Eingabebild ImageImageImageimageimage (siehe gray_histogray_histoGrayHistoGrayHistogray_histo) und berechnet die Anzahl der Bildpunkte, die PercentPercentPercentpercentpercent der Fläche des Eingabebildes entspricht. Daraufhin wird auf beiden Seiten des Histogramms um diese Anzahl von Bildpunkten nach innen gegangen und der kleinste und größte Grauwert bestimmt:

Beispiel:

Mit Fläche = 60, PercentPercentPercentpercentpercent = 5, d.h. 3 Bildpunkte, Histogramm = [2,8,0,7,13,0,0,...,0,10,10,5,3,1,1],

Minimum = 0, Maximum = 255, Spanne = 255

min_max_graymin_max_grayMinMaxGrayMinMaxGraymin_max_gray liefert: MinMinMinminmin = 1, MaxMaxMaxmaxmax = 253, RangeRangeRangerangerange = 252.

Für Bilder vom Typ int4, int8 und real wird die obige Berechnung nicht über Histogramme sondern über Selektion des entsprechenden Grauwertes durchgeführt. Wird PercentPercentPercentpercentpercent auf 50 gesetzt, dann ist MinMinMinminmin = MaxMaxMaxmaxmax = Median. Wenn PercentPercentPercentpercentpercent gleich 0 ist, dann wird kein Histogramm berechnet, um die Laufzeit zu verbessern.

Achtung

Der Operator min_max_graymin_max_grayMinMaxGrayMinMaxGraymin_max_gray berücksichtigt nur die mittels RegionsRegionsRegionsregionsregions übergebenen Regionen und ignoriert jede Domäne, die zuvor für das Eingabebild ImageImageImageimageimage festgelegt wurde.

Ausführungsinformationen

Parameter

RegionsRegionsRegionsregionsregions (input_object)  region(-array) objectHRegionHObjectHObjectHobject

Regionen, deren Merkmale berechnet werden sollen.

ImageImageImageimageimage (input_object)  singlechannelimage objectHImageHObjectHObjectHobject (byte / direction / cyclic / int1 / int2 / uint2 / int4 / int8 / real)

Grauwertdaten.

PercentPercentPercentpercentpercent (input_control)  number HTupleUnion[int, float]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Prozentsatz unterhalb (oberhalb) des absoluten Maximums (Minimums).

Default: 0

Wertevorschläge: 0, 1, 2, 5, 7, 10, 15, 20, 30, 40, 50

Restriktion: 0 <= Percent && Percent <= 50

MinMinMinminmin (output_control)  real(-array) HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

„Minimaler“ Grauwert.

MaxMaxMaxmaxmax (output_control)  real(-array) HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

„Maximaler“ Grauwert.

Zusicherung: Max >= Min

RangeRangeRangerangerange (output_control)  real(-array) HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Differenz aus Max und Min.

Zusicherung: Range >= 0

Beispiel (HDevelop)

* Threshold segmentation with training region:
read_image(Image,'fabrik')
draw_region(Region,WindowHandle)
min_max_gray(Region,Image,5,Min,Max,Range)
threshold(Image,SegmentedRegion,Min,Max)
dev_display(SegmentedRegion)

Beispiel (C)

/* Threshold segmentation with training region: */
read_image(&Image,"fabrik");
draw_region(&Region,WindowHandle);
min_max_gray(Region,Image,5.0,&Min,&Max,NULL);
threshold(Image,&SegmentedRegion,Min,Max);
disp_region(SegmentedRegion,WindowHandle);

Beispiel (C++)

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

main()
{
  HImage   img ("fabrik");
  HWindow  w;

  Htuple   range, max;

  img.Display (w);
  w.Click ();

  HRegion   reg = w.DrawRegion ();
  HImage    rdd = img.ReduceDomain (reg);

  Htuple min = reg.MinMaxGray (rdd, 5, &max, &range);

  HRegionArray imgseg = ((img >= min[0].I()).Connection() &
                         (img <= max[0].I()).Connection());

  cout << "Min = " << min[0].I() << endl;
  cout << "Max = " << max[0].I() << endl;

  imgseg.Display (w);
  w.Click ();
  return(0);
}

Beispiel (HDevelop)

* Threshold segmentation with training region:
read_image(Image,'fabrik')
draw_region(Region,WindowHandle)
min_max_gray(Region,Image,5,Min,Max,Range)
threshold(Image,SegmentedRegion,Min,Max)
dev_display(SegmentedRegion)

Ergebnis

min_max_graymin_max_grayMinMaxGrayMinMaxGraymin_max_gray liefert den Wert 2 ( H_MSG_TRUE) , falls das Eingabebild definierte Grauwerte besitzt und die Parameter korrekt sind. Das Verhalten bei leerer Eingabe (keine Eingabebilder) wird mit set_system(::'no_object_result',<Result>:)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)set_system("no_object_result",<Result>), das bei leerer Region mit set_system(::'empty_region_result',<Result>:)set_system("empty_region_result",<Result>)SetSystem("empty_region_result",<Result>)SetSystem("empty_region_result",<Result>)set_system("empty_region_result",<Result>) festgelegt. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

draw_regiondraw_regionDrawRegionDrawRegiondraw_region, gen_circlegen_circleGenCircleGenCirclegen_circle, gen_ellipsegen_ellipseGenEllipseGenEllipsegen_ellipse, gen_rectangle1gen_rectangle1GenRectangle1GenRectangle1gen_rectangle1, thresholdthresholdThresholdThresholdthreshold, regiongrowingregiongrowingRegiongrowingRegiongrowingregiongrowing

Nachfolger

thresholdthresholdThresholdThresholdthreshold

Alternativen

select_grayselect_graySelectGraySelectGrayselect_gray, intensityintensityIntensityIntensityintensity

Siehe auch

gray_histogray_histoGrayHistoGrayHistogray_histo, scale_imagescale_imageScaleImageScaleImagescale_image, scale_image_maxscale_image_maxScaleImageMaxScaleImageMaxscale_image_max, learn_ndim_normlearn_ndim_normLearnNdimNormLearnNdimNormlearn_ndim_norm

Modul

Foundation