任意形状的ROI(ERegion)
另见: 示例:Inspecting Pads Using Regions/代码片段:ERegion
区域或任意形状的ROI
您可以通过定义和使用感兴趣区域( ROI )来限制利用视觉工具处理的区域,并减少和优化处理时间。
在Open eVision中:
| □ | 一个 ROI (EROIxxx 类) 指定一个矩形的感兴趣区域。 |
| □ | 一个区域(ERegion类)指定一个任意形状的ROI。利用区域,您可以精确地确定图像的哪一部分(精确至单个像素)可用于处理。 |
目前,只有以下Open eVision方法支持ERegions:
|
库 |
方法 |
|---|---|
|
EasyImage |
|
|
Easy3D |
|
|
EasyObject |
|
|
EasyFind |
在未来的Open eVision版本中,ERegions的支持将逐步扩展到所有运算符。
创建区域
Open eVision根据您需要的形状,提供了多种创建区域的方法:
ERegion是所有区域的基础类,也是最为通用的。它使用行程长度编码(RLE)表示对区域进行编码。
| □ | 一个区域的RLE表示,由行程(水平的、1像素高的切片)组成。 |
| □ | 行程以纵坐标、起始横坐标、和长度的形式存储。 |
一个圆形区域的行程长度编码
要创建区域,请执行以下操作之一:
| □ | 使用其中一个几何体式的区域类。 |
| □ | 使用另一个工具的结果,例如EasyFind、EasyMatch或EasyObject。 |
| □ | 合并或修改其他区域。 |
| □ | 使用蒙版图像。 |
| □ | 直接提供行程列表。 |
几何体式的区域
几何体式的区域,是包含在简单几何体中的区域的专用类。目前,Open eVision提供了基于矩形、圆形、椭圆形、或多边形的类。
通过使用这些类来设置几何区域,并通过平移、旋转和缩放,对它们进行修改。转换运算符将返回新区域,并保持源对象不变。
| ● | ERectangleRegion |
| □ | ERectangleRegion类的轮廓是一个矩形。 |
| □ | 使用它的中心、宽度、高度和角度,对它进行定义。 |
| □ | 或者,使用ERectangle实例,例如,由ERectangleGauge实例返回的实例。 |
将条码与背景分隔开的矩形区域
| ● | ECircleRegion |
| □ | ECircleRegion类的轮廓是一个圆。 |
| □ | 通过使用它的中心和半径或3个不对齐的点,对它进行定义。 |
| □ | 或者,使用一个ECircle实例,例如,由ECircleGauge实例返回的实例。 |
包含X射线图像有用部分的圆形区域
使用其他工具的结果
Open eVision为以下工具提供构造函数:
| □ | EasyFind: EFoundPattern |
| □ | EasyMatch: EMatchPosition |
| □ | EasyGauge: Ecircle 和 ERectangle |
| □ | EasyObject: ECodedElement |
当兼容时,Open eVision还可为几何体式的区域提供专门的构造函数。例如,ECircleRegion使用ECircle,来提供构造函数。
合并区域
通过组合现有区域,使用以下操作创建新区域:
| ● | 并集 |
| □ | ERegion::Union(const ERegion&, const ERegion&) 方法,返回作为参数传递的两个区域之并集的区域。 |
两个圆的并集
使用区域
支持区域的工具,提供了遵循以下约定之一的方法:
| □ | 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
