KlassenKlassenKlassenKlassen | | | | Operatoren

class_2dim_unsupclass_2dim_unsupClass2dimUnsupclass_2dim_unsupClass2dimUnsupClass2dimUnsup (Operator)

Name

class_2dim_unsupclass_2dim_unsupClass2dimUnsupclass_2dim_unsupClass2dimUnsupClass2dimUnsup — Segmentieren zweier Bilder mittels Clustering.

Signatur

class_2dim_unsup(Image1, Image2 : Classes : Threshold, NumClasses : )

Herror class_2dim_unsup(const Hobject Image1, const Hobject Image2, Hobject* Classes, const Hlong Threshold, const Hlong NumClasses)

Herror T_class_2dim_unsup(const Hobject Image1, const Hobject Image2, Hobject* Classes, const Htuple Threshold, const Htuple NumClasses)

Herror class_2dim_unsup(Hobject Image1, Hobject Image2, Hobject* Classes, const HTuple& Threshold, const HTuple& NumClasses)

HRegionArray HImage::Class2dimUnsup(const HImage& Image2, const HTuple& Threshold, const HTuple& NumClasses) const

void Class2dimUnsup(const HObject& Image1, const HObject& Image2, HObject* Classes, const HTuple& Threshold, const HTuple& NumClasses)

HRegion HImage::Class2dimUnsup(const HImage& Image2, Hlong Threshold, Hlong NumClasses) const

void HOperatorSetX.Class2dimUnsup(
[in] IHUntypedObjectX* Image1, [in] IHUntypedObjectX* Image2, [out] IHUntypedObjectX*Classes, [in] VARIANT Threshold, [in] VARIANT NumClasses)

IHRegionX* HImageX.Class2dimUnsup(
[in] IHImageX* Image2, [in] Hlong Threshold, [in] Hlong NumClasses)

static void HOperatorSet.Class2dimUnsup(HObject image1, HObject image2, out HObject classes, HTuple threshold, HTuple numClasses)

HRegion HImage.Class2dimUnsup(HImage image2, int threshold, int numClasses)

Beschreibung

class_2dim_unsupclass_2dim_unsupClass2dimUnsupclass_2dim_unsupClass2dimUnsupClass2dimUnsup führt eine Klassifikation mit zwei einkanaligen Bildern durch. Als erstes wird ein zweidimensionales Histogramm über die zwei gegebenen Bilder aufgestellt (histo_2dimhisto_2dimHisto2dimhisto_2dimHisto2dimHisto2dim). In diesem zweidimensionalen Histogramm wird das erste Maximum gesucht. Es stellt das erste Clusterzentrum dar. Das Histogramm wird mit den Bildpunkten berechnet, die in beiden Bildern definiert sind (siehe reduce_domainreduce_domainReduceDomainreduce_domainReduceDomainReduceDomain). Danach werden im Bild alle Pixel gesucht, die sich höchstens um ThresholdThresholdThresholdThresholdThresholdthreshold von den Grauwerten der des Clusterzentrums unterscheiden (Maximumsabstand vom Zentrum). Die gefundenen Pixel bilden eine Region. Anschließend werden die zu den gefundenen Pixel gehörenden Punkte im Histogramm gelöscht, damit sie bei der nächsten Klassenbildung nicht mehr berücksichtigt werden müssen. In diesem modifizierten Histogramm wird wiederum das Maximum gesucht; es bildet das neue Clusterzentrum. Die obigen genannten Schritte werden wiederholt. Insgesamt werden die Schritte NumClassesNumClassesNumClassesNumClassesNumClassesnumClasses-mal, wiederholt; es ergeben sich also NumClassesNumClassesNumClassesNumClassesNumClassesnumClasses-Ausgaberegionen. Es werden nur Punkte ausgegeben, die in beiden Bildern definiert sind.

Achtung

Die beiden Eingabebilder müssen die gleiche Größe haben.

Parallelisierung

Parameter

Image1Image1Image1Image1Image1image1 (input_object)  singlechannelimage objectHImageHImageHImageHImageXHobject (byte)

Erstes Eingabebild.

Image2Image2Image2Image2Image2image2 (input_object)  singlechannelimage objectHImageHImageHImageHImageXHobject (byte)

Zweites Eingabebild.

ClassesClassesClassesClassesClassesclasses (output_object)  region-array objectHRegionHRegionHRegionArrayHRegionXHobject *

Ergebnis der Klassifikation.

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

Schwellenwert (maximaler Abstand vom Clusterzentrum).

Defaultwert: 15

Wertevorschläge: 0, 2, 5, 8, 12, 17, 20, 30, 50, 70

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

Anzahl der Klassen (Clusterzentren).

Defaultwert: 5

Wertevorschläge: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 15, 20, 30, 40, 50

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   colimg (argv[1]),
           green, blue;

  HWindow  w;
  Hlong     nc;

  if ((nc = colimg.CountChannels ()) != 3)
  {
    cout << argv[1] << " is not a rgb-image " << endl;
    return (-2);
  }

  colimg.Display (w);

  HImage        red = colimg.Decompose3 (&green, &blue);
  HRegionArray  seg = red.Class2dimUnsup (green, 15, 5);

  w.SetDraw ("margin");
  w.SetColored (12);
  seg.Display (w);
  w.Click ();

  return (0);
}

Beispiel (C)

read_image(&ColorImage,"patras");
decompose3(ColorImage,&Red,&Green,&Blue);
class_2dim_unsup(Red,Green,&Seg,15,5);
set_colored(WindowHandle,12);
disp_region(Seg,WindowHandle);

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   colimg (argv[1]),
           green, blue;

  HWindow  w;
  Hlong     nc;

  if ((nc = colimg.CountChannels ()) != 3)
  {
    cout << argv[1] << " is not a rgb-image " << endl;
    return (-2);
  }

  colimg.Display (w);

  HImage        red = colimg.Decompose3 (&green, &blue);
  HRegionArray  seg = red.Class2dimUnsup (green, 15, 5);

  w.SetDraw ("margin");
  w.SetColored (12);
  seg.Display (w);
  w.Click ();

  return (0);
}

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   colimg (argv[1]),
           green, blue;

  HWindow  w;
  Hlong     nc;

  if ((nc = colimg.CountChannels ()) != 3)
  {
    cout << argv[1] << " is not a rgb-image " << endl;
    return (-2);
  }

  colimg.Display (w);

  HImage        red = colimg.Decompose3 (&green, &blue);
  HRegionArray  seg = red.Class2dimUnsup (green, 15, 5);

  w.SetDraw ("margin");
  w.SetColored (12);
  seg.Display (w);
  w.Click ();

  return (0);
}

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   colimg (argv[1]),
           green, blue;

  HWindow  w;
  Hlong     nc;

  if ((nc = colimg.CountChannels ()) != 3)
  {
    cout << argv[1] << " is not a rgb-image " << endl;
    return (-2);
  }

  colimg.Display (w);

  HImage        red = colimg.Decompose3 (&green, &blue);
  HRegionArray  seg = red.Class2dimUnsup (green, 15, 5);

  w.SetDraw ("margin");
  w.SetColored (12);
  seg.Display (w);
  w.Click ();

  return (0);
}

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   colimg (argv[1]),
           green, blue;

  HWindow  w;
  Hlong     nc;

  if ((nc = colimg.CountChannels ()) != 3)
  {
    cout << argv[1] << " is not a rgb-image " << endl;
    return (-2);
  }

  colimg.Display (w);

  HImage        red = colimg.Decompose3 (&green, &blue);
  HRegionArray  seg = red.Class2dimUnsup (green, 15, 5);

  w.SetDraw ("margin");
  w.SetColored (12);
  seg.Display (w);
  w.Click ();

  return (0);
}

Ergebnis

class_2dim_unsupclass_2dim_unsupClass2dimUnsupclass_2dim_unsupClass2dimUnsupClass2dimUnsup 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

decompose2decompose2Decompose2decompose2Decompose2Decompose2, decompose3decompose3Decompose3decompose3Decompose3Decompose3, median_imagemedian_imageMedianImagemedian_imageMedianImageMedianImage, anisotropic_diffusionanisotropic_diffusionAnisotropicDiffusionanisotropic_diffusionAnisotropicDiffusionAnisotropicDiffusion, reduce_domainreduce_domainReduceDomainreduce_domainReduceDomainReduceDomain

Nachfolger

select_shapeselect_shapeSelectShapeselect_shapeSelectShapeSelectShape, select_grayselect_graySelectGrayselect_graySelectGraySelectGray, connectionconnectionConnectionconnectionConnectionConnection

Alternativen

thresholdthresholdThresholdthresholdThresholdThreshold, histo_2dimhisto_2dimHisto2dimhisto_2dimHisto2dimHisto2dim, class_2dim_supclass_2dim_supClass2dimSupclass_2dim_supClass2dimSupClass2dimSup, class_ndim_normclass_ndim_normClassNdimNormclass_ndim_normClassNdimNormClassNdimNorm

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren