boundaryboundaryBoundaryBoundaryboundary边界(算子)
名称
boundaryboundaryBoundaryBoundaryboundary — 将一个区域缩小到其边界。
签名
描述
boundaryboundaryBoundaryBoundaryBoundaryboundary 计算
RegionRegionRegionRegionregionregion 中每个输入区域的边界,并将结果返回至 RegionBorderRegionBorderRegionBorderRegionBorderregionBorderregion_border。参数 BoundaryTypeBoundaryTypeBoundaryTypeBoundaryTypeboundaryTypeboundary_type 决定边界计算的类型。
轮廓计算采用形态学运算实现。生成的输出区域仅包含输入区域的最小边界,其位置取决于 BoundaryTypeBoundaryTypeBoundaryTypeBoundaryTypeboundaryTypeboundary_type 的取值,该参数支持以下值:
-
'inner'"inner""inner""inner""inner""inner":该轮廓位于原始区域内。
-
'inner_filled'"inner_filled""inner_filled""inner_filled""inner_filled""inner_filled":轮廓线位于原始区域内,输入区域内部的孔洞被抑制。由于算法优化,这些轮廓可能与使用 'inner'"inner""inner""inner""inner""inner" 选项获得的对应轮廓存在细微差异。
-
'outer'"outer""outer""outer""outer""outer":轮廓超出原始区域一个像素。
执行信息
- 多线程类型:可重入(与非独占算子并行运行)。
- 多线程作用域:全局(可从任何线程调用)。
- 在元组级别上自动并行化。
参数
RegionRegionRegionRegionregionregion (输入对象) region(-array) → objectHRegionHObjectHRegionHobject
需计算边界的区域。
RegionBorderRegionBorderRegionBorderRegionBorderregionBorderregion_border (输出对象) region(-array) → objectHRegionHObjectHRegionHobject *
由此形成的边界。
BoundaryTypeBoundaryTypeBoundaryTypeBoundaryTypeboundaryTypeboundary_type (输入控制) string → HTuplestrHTupleHtuple (string) (string) (HString) (char*)
边界类型。
默认值:
'inner'
"inner"
"inner"
"inner"
"inner"
"inner"
值列表:
'inner'"inner""inner""inner""inner""inner", 'inner_filled'"inner_filled""inner_filled""inner_filled""inner_filled""inner_filled", 'outer'"outer""outer""outer""outer""outer"
示例 (C++ (HALCON 5.0-10.0))
#include "HalconCpp.h"
using namespace Halcon;
main()
{
HWindow w;
HRegion circ1 = HRegion::GenCircle (20, 10, 10.5);
circ1.Display (w);
w.Click ();
HRegion marg1 = circ1.Boundary ("inner");
w.SetColor ("red");
marg1.Display (w);
w.Click ();
return(0);
}
示例(C)
/* Intersections of two circles: */
gen_circle(&Circle1,200.0,100.0,100.5);
gen_circle(&Circle2,200.0,150.0,100.5);
boundary(Circle1,&Margin1,"inner");
boundary(Circle2,&Margin2,"inner");
intersection(Margin1,Margin2,&Intersections);
connection(Intersections,&Single);
T_area_center(Single,NULL,&Rows,&Columns);
/* simulation of Mode 'inner' */
void inner(Hobject Region, Hobject *Border)
{
Hobject Smaller;
erosion_circle(Region,&Smaller,1.5);
difference(Region,Smaller,Border);
}
示例 (C++ (HALCON 5.0-10.0))
#include "HalconCpp.h"
using namespace Halcon;
main()
{
HWindow w;
HRegion circ1 = HRegion::GenCircle (20, 10, 10.5);
circ1.Display (w);
w.Click ();
HRegion marg1 = circ1.Boundary ("inner");
w.SetColor ("red");
marg1.Display (w);
w.Click ();
return(0);
}
示例 (C++ (HALCON 5.0-10.0))
#include "HalconCpp.h"
using namespace Halcon;
main()
{
HWindow w;
HRegion circ1 = HRegion::GenCircle (20, 10, 10.5);
circ1.Display (w);
w.Click ();
HRegion marg1 = circ1.Boundary ("inner");
w.SetColor ("red");
marg1.Display (w);
w.Click ();
return(0);
}
示例 (C++ (HALCON 5.0-10.0))
#include "HalconCpp.h"
using namespace Halcon;
main()
{
HWindow w;
HRegion circ1 = HRegion::GenCircle (20, 10, 10.5);
circ1.Display (w);
w.Click ();
HRegion marg1 = circ1.Boundary ("inner");
w.SetColor ("red");
marg1.Display (w);
w.Click ();
return(0);
}
复杂度
设 A 为输入区域的面积。则单个区域的运行时间复杂度为
结果
boundaryboundaryBoundaryBoundaryBoundaryboundary 在所有参数正确时返回 2 ( H_MSG_TRUE )。当输入区域为空或不存在时,其行为可通过以下方式设置:
-
无区域:
set_system('no_object_result',<RegionResult>)set_system("no_object_result",<RegionResult>)SetSystem("no_object_result",<RegionResult>)SetSystem("no_object_result",<RegionResult>)SetSystem("no_object_result",<RegionResult>)set_system("no_object_result",<RegionResult>)
-
空区域:
set_system('empty_region_result',<RegionResult>)set_system("empty_region_result",<RegionResult>)SetSystem("empty_region_result",<RegionResult>)SetSystem("empty_region_result",<RegionResult>)SetSystem("empty_region_result",<RegionResult>)set_system("empty_region_result",<RegionResult>)
否则,将抛出异常。
可能的前趋
thresholdthresholdThresholdThresholdThresholdthreshold,
regiongrowingregiongrowingRegiongrowingRegiongrowingRegiongrowingregiongrowing,
connectionconnectionConnectionConnectionConnectionconnection,
union1union1Union1Union1Union1union1,
watershedswatershedsWatershedsWatershedsWatershedswatersheds,
class_ndim_normclass_ndim_normClassNdimNormClassNdimNormClassNdimNormclass_ndim_norm
可能的后继
reduce_domainreduce_domainReduceDomainReduceDomainReduceDomainreduce_domain,
select_shapeselect_shapeSelectShapeSelectShapeSelectShapeselect_shape,
area_centerarea_centerAreaCenterAreaCenterAreaCenterarea_center,
connectionconnectionConnectionConnectionConnectionconnection
替代
dilation_circledilation_circleDilationCircleDilationCircleDilationCircledilation_circle,
erosion_circleerosion_circleErosionCircleErosionCircleErosionCircleerosion_circle,
differencedifferenceDifferenceDifferenceDifferencedifference
另见
fill_upfill_upFillUpFillUpFillUpfill_up
模块
基础