KlassenKlassenKlassenKlassen | | | | Operatoren

regiongrowingregiongrowingRegiongrowingregiongrowingRegiongrowingRegiongrowing (Operator)

Name

regiongrowingregiongrowingRegiongrowingregiongrowingRegiongrowingRegiongrowing — Segmentieren mit Hilfe von Flächenwachstum.

Signatur

regiongrowing(Image : Regions : Row, Column, Tolerance, MinSize : )

Herror regiongrowing(const Hobject Image, Hobject* Regions, const Hlong Row, const Hlong Column, double Tolerance, const Hlong MinSize)

Herror T_regiongrowing(const Hobject Image, Hobject* Regions, const Htuple Row, const Htuple Column, const Htuple Tolerance, const Htuple MinSize)

Herror regiongrowing(Hobject Image, Hobject* Regions, const HTuple& Row, const HTuple& Column, const HTuple& Tolerance, const HTuple& MinSize)

HRegionArray HImage::Regiongrowing(const HTuple& Row, const HTuple& Column, const HTuple& Tolerance, const HTuple& MinSize) const

HRegionArray HImageArray::Regiongrowing(const HTuple& Row, const HTuple& Column, const HTuple& Tolerance, const HTuple& MinSize) const

void Regiongrowing(const HObject& Image, HObject* Regions, const HTuple& Row, const HTuple& Column, const HTuple& Tolerance, const HTuple& MinSize)

HRegion HImage::Regiongrowing(Hlong Row, Hlong Column, const HTuple& Tolerance, Hlong MinSize) const

HRegion HImage::Regiongrowing(Hlong Row, Hlong Column, double Tolerance, Hlong MinSize) const

void HOperatorSetX.Regiongrowing(
[in] IHUntypedObjectX* Image, [out] IHUntypedObjectX*Regions, [in] VARIANT Row, [in] VARIANT Column, [in] VARIANT Tolerance, [in] VARIANT MinSize)

IHRegionX* HImageX.Regiongrowing(
[in] Hlong Row, [in] Hlong Column, [in] VARIANT Tolerance, [in] Hlong MinSize)

static void HOperatorSet.Regiongrowing(HObject image, out HObject regions, HTuple row, HTuple column, HTuple tolerance, HTuple minSize)

HRegion HImage.Regiongrowing(int row, int column, HTuple tolerance, int minSize)

HRegion HImage.Regiongrowing(int row, int column, double tolerance, int minSize)

Beschreibung

regiongrowingregiongrowingRegiongrowingregiongrowingRegiongrowingRegiongrowing liefert Bilder mit „gleicher“ Intensität --- gerastert in Rechtecken der Größe Row * Column. Zur Entscheidung, ob benachbarte Rasterfelder zum selben Bild gehören oder nicht, wird nur die Differenz der Grauwerte ihrer Zentren herangezogen. Ist die Grauwertdifferenz kleiner oder gleich ToleranceToleranceToleranceToleranceTolerancetolerance, werden die Rasterfelder zu einer Region verschmolzen.

Sind g_{1} und g_{2} zwei zu untersuchende Grauwerte, dann gehören sie zur gleichen Region, falls:

Bei Pixeln vom Typ cyclic wird folgende Formel verwendet:
Bei Schrittweiten größer als 1 ist ein typisches Vorgehen, die Eingabeobjekte vor dem Aufruf von regiongrowingregiongrowingRegiongrowingregiongrowingRegiongrowingRegiongrowing mit einem Tiefpassfilter der Größe Row * Column zu glätten (damit die ausgewerteten Schwerpunkte der Rasterfelder auch wirklich repräsentativ für das gesamte Rasterfeld sind). Ist das Bildmaterial nicht stark verrauscht und die Schrittweite klein, dann kann die vorherige Glättung in vielen Fällen auch entfallen.

In den Ergebnisbildern werden bei Schrittweiten größer als 1 nicht nur die untersuchten Punkte gesetzt, sondern es wird um jeden Punkt ein Rechteck der Größe Row * Column gesetzt. Es werden nur Regionen, die mindestens MinSizeMinSizeMinSizeMinSizeMinSizeminSize Punkte umfassen, ausgegeben.

Regiongrowing ist ein sehr schnelles Verfahren und ist daher für zeitkritische Anwendungen zu empfehlen.

Achtung

ColumnColumnColumnColumnColumncolumn und RowRowRowRowRowrow werden automatisch auf ungerade Werte konvertiert.

Parallelisierung

Parameter

ImageImageImageImageImageimage (input_object)  singlechannelimage(-array) objectHImageHImageHImageHImageXHobject (byte / direction / cyclic / int1 / int2 / int4 / real)

Eingabebild.

RegionsRegionsRegionsRegionsRegionsregions (output_object)  region-array objectHRegionHRegionHRegionArrayHRegionXHobject *

Segmentierte Regionen.

RowRowRowRowRowrow (input_control)  extent.y HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Vertikaler Abstand zwischen den Testpunkten (Höhe des Rasters).

Defaultwert: 3

Wertevorschläge: 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21

Typischer Wertebereich: 1 ≤ Row Row Row Row Row row ≤ 99 (lin)

Minimale Schrittweite: 2

Empfohlene Schrittweite: 2

Restriktion: Row >= 1 && odd(Row)

ColumnColumnColumnColumnColumncolumn (input_control)  extent.x HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Horizontaler Abstand zwischen den Testpunkten (Breite des Rasters).

Defaultwert: 3

Wertevorschläge: 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21

Typischer Wertebereich: 1 ≤ Column Column Column Column Column column ≤ 99 (lin)

Minimale Schrittweite: 2

Empfohlene Schrittweite: 2

Restriktion: Column >= 1 && odd(Column)

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

Punkte mit Grauwertdifferenz kleiner oder gleich Tolerance werden zum selben Objekt gezählt.

Defaultwert: 6.0

Wertevorschläge: 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 12.0, 14.0, 18.0, 25.0

Typischer Wertebereich: 1.0 ≤ Tolerance Tolerance Tolerance Tolerance Tolerance tolerance ≤ 127.0 (lin)

Minimale Schrittweite: 0.01

Empfohlene Schrittweite: 1.0

Restriktion: 0 <= Tolerance && Tolerance < 127

MinSizeMinSizeMinSizeMinSizeMinSizeminSize (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Mindestgröße der Ausgaberegionen.

Defaultwert: 100

Wertevorschläge: 1, 5, 10, 20, 50, 100, 200, 500, 1000

Typischer Wertebereich: 1 ≤ MinSize MinSize MinSize MinSize MinSize minSize

Minimale Schrittweite: 1

Empfohlene Schrittweite: 5

Restriktion: MinSize >= 1

Beispiel (HDevelop)

read_image(Image,'fabrik')
mean_image(Image,Mean,Row,Column)
regiongrowing(Mean,Result,Row,Column,6.0,100)

Beispiel (C)

read_image(&Image,"fabrik");
mean_image(Image,&Mean,Row,Column);
regiongrowing(Mean,&Result,Row,Column,6,100);

Beispiel (HDevelop)

read_image(Image,'fabrik')
mean_image(Image,Mean,Row,Column)
regiongrowing(Mean,Result,Row,Column,6.0,100)

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] << " <name of the image>" << endl;
    return (-1);
  }

  HImage   image (argv[1]),
           mean;
  HWindow  win;

  mean = image.MeanImage (5, 5);

  HRegionArray reg = mean.Regiongrowing (5, 5, 6, 100);

  reg.Display (win);
  win.Click ();

  return (0);
}

Beispiel (HDevelop)

read_image(Image,'fabrik')
mean_image(Image,Mean,Row,Column)
regiongrowing(Mean,Result,Row,Column,6.0,100)

Beispiel (HDevelop)

read_image(Image,'fabrik')
mean_image(Image,Mean,Row,Column)
regiongrowing(Mean,Result,Row,Column,6.0,100)

Komplexität

Sei N die Anzahl der gefundenen Regionen und M die Anzahl der untersuchten Punkte in einer solchen Region, dann ist die Laufzeitkomplexität O(N * log(M) * M).

Ergebnis

regiongrowingregiongrowingRegiongrowingregiongrowingRegiongrowingRegiongrowing liefert den Wert 2 (H_MSG_TRUE), falls die Parameter korrekt sind. Für das Verhalten bzgl. der Eingabebilder und Ausgaberegionen sind die Flags 'no_object_result'"no_object_result""no_object_result""no_object_result""no_object_result""no_object_result", 'empty_region_result'"empty_region_result""empty_region_result""empty_region_result""empty_region_result""empty_region_result" und 'store_empty_region'"store_empty_region""store_empty_region""store_empty_region""store_empty_region""store_empty_region" einstellbar (siehe set_systemset_systemSetSystemset_systemSetSystemSetSystem). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

binomial_filterbinomial_filterBinomialFilterbinomial_filterBinomialFilterBinomialFilter, mean_imagemean_imageMeanImagemean_imageMeanImageMeanImage, gauss_filtergauss_filterGaussFiltergauss_filterGaussFilterGaussFilter, smooth_imagesmooth_imageSmoothImagesmooth_imageSmoothImageSmoothImage, median_imagemedian_imageMedianImagemedian_imageMedianImageMedianImage, anisotropic_diffusionanisotropic_diffusionAnisotropicDiffusionanisotropic_diffusionAnisotropicDiffusionAnisotropicDiffusion

Nachfolger

select_shapeselect_shapeSelectShapeselect_shapeSelectShapeSelectShape, reduce_domainreduce_domainReduceDomainreduce_domainReduceDomainReduceDomain, select_grayselect_graySelectGrayselect_graySelectGraySelectGray

Alternativen

regiongrowing_nregiongrowing_nRegiongrowingNregiongrowing_nRegiongrowingNRegiongrowingN, regiongrowing_meanregiongrowing_meanRegiongrowingMeanregiongrowing_meanRegiongrowingMeanRegiongrowingMean, label_to_regionlabel_to_regionLabelToRegionlabel_to_regionLabelToRegionLabelToRegion

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren