Documentation Portal      

您正在查找什么?

任意形状的ROI(ERegion)

另见: 示例:Inspecting Pads Using Regions/代码片段:ERegion

区域或任意形状的ROI

您可以通过定义和使用感兴趣区域( ROI )来限制利用视觉工具处理的区域,并减少和优化处理时间。

Open eVision中:

一个 ROI (EROIxxx 类) 指定一个矩形的感兴趣区域。
一个区域(ERegion类)指定一个任意形状的ROI。利用区域,您可以精确地确定图像的哪一部分(精确至单个像素)可用于处理。

目前,只有以下Open eVision方法支持ERegions

方法

EasyImage

EasyImage::阈值

EasyImage::双阈值

EasyImage::直方图

EasyImage::区域

EasyImage::AreaDoubleThreshold

EasyImage::BinaryMoments

EasyImage::WeightedMoments

EasyImage::GravityCenter

EasyImage::PixelCount

EasyImage::PixelMax

EasyImage::PixelMin

EasyImage::PixelAverage

EasyImage::PixelStat

EasyImage::PixelVariance

EasyImage::PixelStdDev

EasyImage::PixelCompare

Easy3D

EDepthMapToMeshConverter::Convert

EDepthMapToPointCloudConverter::Convert

EStatistics::ComputePixelStatistics

EStatistics::ComputeStatistics

EasyObject

EImageEncoder::Encode

EasyFind

EPatternFinder::Find

在未来的Open eVision版本中,ERegions的支持将逐步扩展到所有运算符。

创建区域

Open eVision根据您需要的形状,提供了多种创建区域的方法:

ERegion是所有区域的基础类,也是最为通用的。它使用行程长度编码(RLE)表示对区域进行编码。

一个区域的RLE表示,由行程(水平的、1像素高的切片)组成。
行程以纵坐标、起始横坐标、和长度的形式存储。

一个圆形区域的行程长度编码

要创建区域,请执行以下操作之一:

使用其中一个几何体式的区域类。
使用另一个工具的结果,例如EasyFind、EasyMatch或EasyObject。
合并或修改其他区域。
使用蒙版图像。
直接提供行程列表。

几何体式的区域

几何体式的区域,是包含在简单几何体中的区域的专用类。目前,Open eVision提供了基于矩形、圆形、椭圆形、或多边形的类。

通过使用这些类来设置几何区域,并通过平移、旋转和缩放,对它们进行修改。转换运算符将返回新区域,并保持源对象不变。

ERectangleRegion
ERectangleRegion类的轮廓是一个矩形。
使用它的中心、宽度、高度和角度,对它进行定义。
或者,使用ERectangle实例,例如,由ERectangleGauge实例返回的实例。

将条码与背景分隔开的矩形区域

ECircleRegion
ECircleRegion类的轮廓是一个圆。
通过使用它的中心和半径或3个不对齐的点,对它进行定义。
或者,使用一个ECircle实例,例如,由ECircleGauge实例返回的实例。

包含X射线图像有用部分的圆形区域

EEllipseRegion
EEllipseRegion类的轮廓是一个椭圆。
使用它的中心、长半径和短半径以及角度,对它进行定义。

包含凹锥形的椭圆形区域

EPolygonRegion
EPolygonRegion类的轮廓是一个多边形。
它是使用其顶点列表构建的。

包含一个KEY的多边形区域

使用其他工具的结果

ERegion类,提供了一组专门的构造函数,以此(根据另一个工具的结果)创建区域。

在工具链中,这些构造函数将工具的处理限制在从上一个工具发布的区域中。

Open eVision为以下工具提供构造函数:

EasyFind: EFoundPattern
EasyMatch: EMatchPosition
EasyGauge: EcircleERectangle
EasyObject: ECodedElement

当兼容时,Open eVision还可为几何体式的区域提供专门的构造函数。例如,ECircleRegion使用ECircle,来提供构造函数。

合并区域

通过组合现有区域,使用以下操作创建新区域:

并集
ERegion::Union(const ERegion&, const ERegion&) 方法,返回作为参数传递的两个区域之并集的区域。

两个圆的并集

交集
ERegion::Intersection(const ERegion&, const ERegion&) 方法,返回作为参数传递的两个区域的交集的区域。

两个圆的交集

减法
ERegion::Substraction(const ERegion&, const ERegion&) 方法,在移除第二个区域后,返回作为参数传递的第一个区域。

2个圆的减法

使用区域

支持区域的工具,提供了遵循以下约定之一的方法:

Method(const EImage& source, const ERegion& region)
Method(const EImage& source, const ERegion& region, EImage& destination)

注意: 源、区域和目标必须兼容。这意味着区域必须至少部分地适应源,并且源和目标必须具有相同的大小。

准备区域

当将区域应用于图像时,Open eVision会自动准备这些区域,但此准备可能需要一些时间。
如果您不希望第一次调用方法(比下一次调用方法)花费更长的时间,您可以使用适当的Prepare()方法,提前准备区域。
要手动准备区域,请根据您的图像调整内部RLE描述。

绘制区域

ERegion类,提供了几种显示区域的方式:

ERegion::Draw(), 在提供的设备上下文中,以半透明的方式绘制区域区。
ERegion::DrawContour() 在提供的设备上下文中,绘制区域轮廓。
ERegion::ToImage(), 将区域作为掩码,呈现到提供的目标图像中。
您可以配置前景和背景颜色。
如果用宽度和高度初始化图像,则Open eVision这些边界内渲染区域。
如果没有,则Open eVision调整图像大小,以包含整个区域。
使用ToImage()为支持它们的Open eVision函数创建掩码。

ERegions and EROIs

旧的EROI类(Open eVision)与新的区域兼容。
一些工具允许使用具有源和/或目的的区域,它们是ERoi而不是EImage,须遵循以下约定之一:
Method(const ERoi& source, const ERegion& region)
Method(const ERoi& source, const ERegion& region, ERoi& destination)

在这种情况下,用于该区域的坐标与缩小的ROI空间相关,而不是整个图像空间。

ERegion and 3D

新区域与Easy3D的2.5D表示兼容。 (EDepthMapEZMap)。
在使用这些类时,还可以减少处理域。

我们应显示哪一个API?

© 2019 EURESYS s.a.  -  关于文档  -  Open Source Licenses  -  Open eVision 2.8.0.1118