class_2dim_unsupclass_2dim_unsupClass2dimUnsupClass2dimUnsupclass_2dim_unsup (算子名称)
名称
class_2dim_unsupclass_2dim_unsupClass2dimUnsupClass2dimUnsupclass_2dim_unsup — Segment two images by clustering.
参数签名
描述
class_2dim_unsupclass_2dim_unsupClass2dimUnsupClass2dimUnsupClass2dimUnsupclass_2dim_unsup performs a classification with two
single-channel images. First, a two-dimensional histogram of the two
images is computed (histo_2dimhisto_2dimHisto2dimHisto2dimHisto2dimhisto_2dim). In this histogram,
the first maximum is extracted; it serves as the first cluster
center. The histogram is computed with the intersection of the
domains of both images (see reduce_domainreduce_domainReduceDomainReduceDomainReduceDomainreduce_domain). After this,
all pixels in the images that are at most ThresholdThresholdThresholdThresholdthresholdthreshold
pixels from the cluster center in the maximum norm, are determined.
These pixels form one output region. Next, the pixels thus
classified are deleted from the histogram so that they are not taken
into account for the next class. In this modified histogram, again
the maximum is extracted; it again serves as a cluster center. The
above steps are repeated NumClassesNumClassesNumClassesNumClassesnumClassesnum_classes times; thus,
NumClassesNumClassesNumClassesNumClassesnumClassesnum_classes output regions result. Only pixels defined in
both images are returned.
注意
Both input images must have the same size.
运行信息
- 多线程类型:可重入(与非独占操作符并行运行)。
- 多线程作用域:全局(可以从任何线程调用)。
- 未经并行化处理。
参数表
Image1Image1Image1Image1image1image_1 (input_object) singlechannelimage → objectHImageHObjectHImageHobject (byte)
First input image.
Image2Image2Image2Image2image2image_2 (input_object) singlechannelimage → objectHImageHObjectHImageHobject (byte)
Second input image.
类别类别类别类别类别类别 (output_object) region-array → objectHRegionHObjectHRegionHobject *
Classification result.
ThresholdThresholdThresholdThresholdthresholdthreshold (input_control) integer → HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Threshold (maximum distance to the cluster's center).
Default:
15
Suggested values:
0, 2, 5, 8, 12, 17, 20, 30, 50, 70
NumClassesNumClassesNumClassesNumClassesnumClassesnum_classes (input_control) integer → HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Number of classes (cluster centers).
Default:
5
Suggested values:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 15, 20, 30, 40, 50
Example (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);
}
例程 (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);
Example (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);
}
Example (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);
}
Example (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);
}
结果
class_2dim_unsupclass_2dim_unsupClass2dimUnsupClass2dimUnsupClass2dimUnsupclass_2dim_unsup returns 2 (
H_MSG_TRUE)
if all parameters are correct.
The behavior with respect to the input images and output regions
can be determined by setting the values of the 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", and
'store_empty_region'"store_empty_region""store_empty_region""store_empty_region""store_empty_region""store_empty_region" with set_systemset_systemSetSystemSetSystemSetSystemset_system.
如有必要,将引发异常。
可能的前置算子
decompose2decompose2Decompose2Decompose2Decompose2decompose2,
decompose3decompose3Decompose3Decompose3Decompose3decompose3,
median_imagemedian_imageMedianImageMedianImageMedianImagemedian_image,
anisotropic_diffusionanisotropic_diffusionAnisotropicDiffusionAnisotropicDiffusionAnisotropicDiffusionanisotropic_diffusion,
reduce_domainreduce_domainReduceDomainReduceDomainReduceDomainreduce_domain
可能的后置算子
select_shapeselect_shapeSelectShapeSelectShapeSelectShapeselect_shape,
select_grayselect_graySelectGraySelectGraySelectGrayselect_gray,
connectionconnectionConnectionConnectionConnectionconnection
可替代算子
thresholdthresholdThresholdThresholdThresholdthreshold,
histo_2dimhisto_2dimHisto2dimHisto2dimHisto2dimhisto_2dim,
class_2dim_supclass_2dim_supClass2dimSupClass2dimSupClass2dimSupclass_2dim_sup,
class_ndim_normclass_ndim_normClassNdimNormClassNdimNormClassNdimNormclass_ndim_norm
模块
Foundation