min_max_graymin_max_grayMinMaxGrayMinMaxGraymin_max_gray (Operator)
Name
min_max_graymin_max_grayMinMaxGrayMinMaxGraymin_max_gray — Minimale und maximale Grauwerte innerhalb von Regionen.
Signatur
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_grayMinMaxGrayMinMaxGrayMinMaxGraymin_max_gray erstellt das Histogramm der absoluten
Häufigkeiten der Grauwerte innerhalb von RegionsRegionsRegionsRegionsregionsregions im
Eingabebild ImageImageImageImageimageimage (siehe gray_histogray_histoGrayHistoGrayHistoGrayHistogray_histo) und
berechnet die Anzahl der Bildpunkte, die PercentPercentPercentPercentpercentpercent 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, PercentPercentPercentPercentpercentpercent = 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_grayMinMaxGrayMinMaxGrayMinMaxGraymin_max_gray liefert:
MinMinMinMinminmin = 1,
MaxMaxMaxMaxmaxmax = 253,
RangeRangeRangeRangerangerange = 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 PercentPercentPercentPercentpercentpercent auf 50 gesetzt, dann
ist MinMinMinMinminmin = MaxMaxMaxMaxmaxmax = Median. Wenn PercentPercentPercentPercentpercentpercent
gleich 0 ist, dann wird kein Histogramm berechnet, um die Laufzeit
zu verbessern.
Achtung
Der Operator min_max_graymin_max_grayMinMaxGrayMinMaxGrayMinMaxGraymin_max_gray berücksichtigt nur die mittels
RegionsRegionsRegionsRegionsregionsregions übergebenen Regionen und ignoriert jede Domäne, die zuvor
für das Eingabebild ImageImageImageImageimageimage festgelegt wurde.
Ausführungsinformationen
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Automatisch parallelisiert auf Tupelebene.
Parameter
RegionsRegionsRegionsRegionsregionsregions (input_object) region(-array) → objectHRegionHObjectHRegionHobject
Regionen, deren Merkmale berechnet werden sollen.
ImageImageImageImageimageimage (input_object) singlechannelimage → objectHImageHObjectHImageHobject (byte / direction / cyclic / int1 / int2 / uint2 / int4 / int8 / real)
Grauwertdaten.
PercentPercentPercentPercentpercentpercent (input_control) number → HTupleUnion[int, float]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Prozentsatz unterhalb (oberhalb) des absoluten
Maximums (Minimums).
Defaultwert: 0
Wertevorschläge: 0, 1, 2, 5, 7, 10, 15, 20, 30, 40, 50
Restriktion: 0 <= Percent && Percent <= 50
MinMinMinMinminmin (output_control) real(-array) → HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)
„Minimaler“ Grauwert.
MaxMaxMaxMaxmaxmax (output_control) real(-array) → HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)
„Maximaler“ Grauwert.
Zusicherung: Max >= Min
RangeRangeRangeRangerangerange (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)
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_grayMinMaxGrayMinMaxGrayMinMaxGraymin_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>)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>)SetSystem("empty_region_result",<Result>)set_system("empty_region_result",<Result>) festgelegt.
Gegebenenfalls wird eine Fehlerbehandlung
durchgeführt.
Vorgänger
draw_regiondraw_regionDrawRegionDrawRegionDrawRegiondraw_region,
gen_circlegen_circleGenCircleGenCircleGenCirclegen_circle,
gen_ellipsegen_ellipseGenEllipseGenEllipseGenEllipsegen_ellipse,
gen_rectangle1gen_rectangle1GenRectangle1GenRectangle1GenRectangle1gen_rectangle1,
thresholdthresholdThresholdThresholdThresholdthreshold,
regiongrowingregiongrowingRegiongrowingRegiongrowingRegiongrowingregiongrowing
Nachfolger
thresholdthresholdThresholdThresholdThresholdthreshold
Alternativen
select_grayselect_graySelectGraySelectGraySelectGrayselect_gray,
intensityintensityIntensityIntensityIntensityintensity
Siehe auch
gray_histogray_histoGrayHistoGrayHistoGrayHistogray_histo,
scale_imagescale_imageScaleImageScaleImageScaleImagescale_image,
scale_image_maxscale_image_maxScaleImageMaxScaleImageMaxScaleImageMaxscale_image_max,
learn_ndim_normlearn_ndim_normLearnNdimNormLearnNdimNormLearnNdimNormlearn_ndim_norm
Modul
Foundation