该接口提供模板匹配的功能。 更多...
Public 成员函数 | |
| void | GetPatCenter (double *patX, double *patY, double *patAngle) |
| LPVPatCenterMode | GetPatCenterMode () |
| ILPoints * | GetPatFeature () |
| void | GetPatImage (ILImage *img) |
| void | GetPatMask (ILImage *mask) |
| void | GetPatPruneMask (ILImage *mask) |
| BOOL | IsLearnt () |
| LPVErrorCode | Learn (ILImage *img, ILRegion *region) |
| LPVErrorCode | LearnWithShape (ILImage *img, ILRegion *region, ILRegion *shapeRegion) |
| LPVErrorCode | LearnWithShapeImage (ILImage *img, ILRegion *region, ILImage *shapeImg) |
| LPVErrorCode | Match (ILImage *img, ILRegion *region, ILMatchResults **results) |
| LPVErrorCode | Prune (ILImage *img, ILRegion *region) |
| void | SetPatCenter (LPVPatCenterMode centerMode, double patX, double patY, double patAngle) |
Public 成员函数 继承自 ILObject | |
| ILObject * | Copy () |
| LPVErrorCode | Load (LString filename) |
| void | Reset () |
| LPVErrorCode | Save (LString filename) |
| BOOL | Valid () |
属性 | |
| int | AcceptScore [get, set] |
| 用于筛选匹配结果的最小匹配分数,取值在 1 ~ 100 的范围。分数越高表示匹配标准越严格。 匹配搜索过程并不会遍历所有候选位置,而是先基于候选位置与模板的近似相似度进行排序,然后依次优化其最终的匹配位置、角度和缩放比例等到亚像素精度。 当找到足够多的满足匹配分数的结果时,将停止搜索。 | |
| int | AccuracyLevel [get, set] |
| 精度等级,高精度等级通常意味着更精确和更稳定的匹配结果,但可能同时会降低匹配速度。 取值可为:0(低精度),1(中等精度,默认值)或者 2(高精度) | |
| int | AngleBias [get, set] |
| 角度偏移,取值在 -180 ~ 180 之间。默认设置为 0。 | |
| int | AngleTolerance [get, set] |
| 角度范围,取值在 0 ~ 180 之间。默认设置为 5。 匹配的角度搜索区间基于角度的偏移及范围生成为 \( AngleBias \pm AngleTolerance \) | |
| double | DetailLevel [get, set] |
| 模板细节程度,取值范围为 0 ~ 1,默认设置为 0.5。 数值越高,保留的细节越多,同时也可能引入更多的噪声,并影响算法的整体性能。 设置或修改模板细节程度后,需重新调用 Learn() 训练模板,特征点将在新的训练过程中按照细节程度重新提取。 若同时定义了 DetailLevel 以及 ShortThreshold / WeakThreshold ,将先应用 ShortThreshold / WeakThreshold 过滤特征,再调整细节成都。 更多... | |
| BOOL | ExcludeBoundary [get, set] |
| 是否剔除图像或区域边界上的匹配结果 | |
| int | GrayValueWeight [get, set] |
| 融合匹配权重,用于合并基于形状相似性的匹配分数和基于灰度特征的匹配分数。 默认设置为 0, 即灰度分数不参与匹配评价。最终匹配分数按照该公式计算: \( Score = Score_{shape} \times (1 - w) + Score_{gray} \times w \) . | |
| BOOL | IgnoreMissing [get, set] |
| 缺失部分是否负面影响最终匹配结果。默认设置为 true,即计分时忽略缺失部分、且不启用缺失比例检查。 | |
| BOOL | IgnorePolarity [get, set] |
| 是否在匹配过程中忽略边缘极性。默认关闭这个配置。 | |
| BOOL | IsotropicScale [get, set] |
| 是否保持缩放长宽比,默认设置为 true | |
| int | MaxCount [get, set] |
| 期望的最大匹配数量 | |
| int | MissingTolerance [get, set] |
| 匹配结果的最大缺失比例(百分比)。 取值范围在 0 ~ 100 之间,为百分数。默认设置为 50,表示最多可以接受 50% 的缺失比例。 注意缺失比例检查是否启用由 IgnoreMissing 属性控制。当 IgnoreMissing 为 False 时,启用缺失比例检查。 | |
| int | Overlap [get, set] |
| 匹配结果之间的最大重叠比例(百分比)。匹配结果中的缺失特征也计入重叠比例,视为与背景的重叠。 取值范围在 1 ~ 80 之间,为百分数。默认设置为 50,表示 50% 的重叠比例。推荐的取值在 30 ~ 70 附近。 | |
| int | ScaleBias [get, set] |
| 尺寸缩放偏移,取值在 50 ~ 150 百分数。默认设置为 100。 | |
| int | ScaleTolerance [get, set] |
| 尺寸缩放范围,取值在 0 ~ 50 百分数。默认设置为 0。 匹配的尺寸缩放搜索区间基于缩放的偏移和缩放范围生成为 \( ScaleBias \pm ScaleTolerance \) . | |
| int | ShortThreshold [get, set] |
| 用于过滤训练获得的长度较短的特征。该数值为相对于训练图像或区域长边的 0 ~ 100 的百分数, 即实际阈值的数值为 \( Max(Width, Height) \times ShortThreshold / 100 \) 默认值为 0 表示不进行短特征过滤。 设置或修改模板的短特征过滤阈值后,需重新调用 Learn() 训练模板,特征点将在新的训练过程中按照细节程度重新提取。 更多... | |
| BOOL | StrictScore [get, set] |
| 是否在匹配过程中启用严格评分。默认关闭这个配置。 若启用严格评分,匹配结果的分数将基于原始图像和所有特征细节计算。否则,分数可能在缩小并平滑后的图像上计算,该过程更快速但相比前者考虑更少细节。 | |
| BOOL | UseCache [get, set] |
| 是否在匹配过程中使用缓存数据。 开启缓存将稍微加快匹配过程,但占用更多的内存。默认开启这个配置。 | |
| int | WeakThreshold [get, set] |
| 用于过滤训练获得的对比对较弱的特征。取值范围为 0 ~ 100,默认值为 0 表示不进行弱特征过滤。 设置或修改模板的弱特征过滤阈值后,需重新调用 Learn() 训练模板,特征点将在新的训练过程中按照细节程度重新提取。 更多... | |
该接口提供模板匹配的功能。
模板匹配用于在指定图像和区域中基于训练的模板,搜索和定位一个或多个匹配结果。
该算法具有高实时性和高亚像素角度的特点。匹配过程基于从模板图像中训练得到的形状特征,结合图像的灰度特征。 可以定位目标物体的旋转、平移和缩放,可有效应对产线环境的光照变化、物体材质变化引起的明暗、对比度、模糊等现象。
使用这个接口,需要创建一个 LMatch 对象。
| void GetPatCenter | ( | double * | patX, |
| double * | patY, | ||
| double * | patAngle | ||
| ) |
获取当前配置的模板中心
| [out] | patX | 返回模板中心的 x 坐标 |
| [out] | patY | 返回模板中心的 y 坐标 |
| [out] | patAngle | 返回模板的 0° 角度 |
| LPVPatCenterMode GetPatCenterMode | ( | ) |
| ILPoints* GetPatFeature | ( | ) |
获取模板的特征位置
| featurePoints | 返回特征点位置 |
| void GetPatImage | ( | ILImage * | img | ) |
获取模板图像
| [out] | img | 返回图像 |
| void GetPatMask | ( | ILImage * | mask | ) |
获取模板蒙版
| [out] | mask | 返回蒙版图像。若当前模板没有蒙版,则返回一个空的图像。 |
| void GetPatPruneMask | ( | ILImage * | mask | ) |
| BOOL IsLearnt | ( | ) |
检查 LMatch 对象是否已训练。
| val | 若已训练,返回 True,否则返回 False。 |
| LPVErrorCode Learn | ( | ILImage * | img, |
| ILRegion * | region | ||
| ) |
训练模板,使用输入的图像。模板中心可根据需求修改。
| [in] | img | 输入的图像 |
| [in] | region | 输入的区域,用于限定模板在输入图像中的位置。 |
| error | 返回错误码。训练过程可能失败,若在输入图像中没有找到任何可用的特征。 |
| LPVErrorCode LearnWithShape | ( | ILImage * | img, |
| ILRegion * | region, | ||
| ILRegion * | shapeRegion | ||
| ) |
训练模板,使用输入的图像。模板中心可根据需求修改。
模板的形状和极性通过输入的形状区域来定义,添加区域(Add)生成黑色背景上的白色形状;减去区域(Subtract)生产白色背景上的黑色形状。
特征点通过给定的形状区域提取,不受 DetailLevel 参数的影响。
| [in] | img | 输入的图像。可为空,但当其为空时,设置 GrayValueWeight 并不启用任何灰度特征权重。 |
| [in] | region | 输入的区域,用于限定模板在输入图像中的位置,并用于剔除形状中超出区域的部分。可为空。 |
| [in] | shapeRegion | 输入的区域,用于生成模板形状。与 region 相同,都在输入图像的坐标系下。 |
| error | 返回错误码。训练过程可能失败,若在输入图像中没有找到任何可用的特征。 |
| LPVErrorCode LearnWithShapeImage | ( | ILImage * | img, |
| ILRegion * | region, | ||
| ILImage * | shapeImg | ||
| ) |
训练模板,使用输入的图像。模板中心可根据需求修改。
特征点通过给定的形状图像提取提取模板的形状和极性,不受 DetailLevel 参数的影响。
| [in] | img | 输入的图像。可为空,但当其为空时,设置 GrayValueWeight 并不启用任何灰度特征权重。 |
| [in] | region | 输入的区域,用于限定模板在输入图像中的位置,并用于剔除形状中超出区域的部分。可为空。 |
| [in] | shapeImg | 输入的形状图像。该图像的尺寸需与 img 参数相同。 |
| LPVErrorCode Match | ( | ILImage * | img, |
| ILRegion * | region, | ||
| ILMatchResults ** | results | ||
| ) |
在输入的图像中,执行模板匹配。输出的匹配位置基于该图像坐标系。
| [in] | img | 输入的图像 |
| [in] | region | 输入的区域,用于限定模板匹配的区域。 |
| [out] | results | 返回匹配结果 |
| error | 返回错误码 |
| LPVErrorCode Prune | ( | ILImage * | img, |
| ILRegion * | region | ||
| ) |
从已训练的模板特征中,剔除某些指定的特征。输入区域对象外的特征将被删除,不参与匹配。
| [in] | img | 输入的图像 |
| [in] | region | 输入的区域。null 表示重置特征为训练后的原始特征。 |
| error | 返回错误码。剔除过程可能失败,如所有有效特征均被剔除。 |
| void SetPatCenter | ( | LPVPatCenterMode | centerMode, |
| double | patX, | ||
| double | patY, | ||
| double | patAngle | ||
| ) |
修改模板匹配结果中心的设置方式。默认设置为使用模板图像的中心作为匹配结果中心。
匹配结果将基于配置方式输出不同的中心点坐标。如若设置匹配图像的左上角点作为中心,所有的匹配结果将总是输出相同的左上角位置作为中心。
| [in] | centerMode | 匹配结果中心的设置方式,查看 LPVPatCenterMode. |
| [in] | patX | 若使用自定义位置,输入该位置的 x 坐标 |
| [in] | patY | 若使用自定义位置,输入该位置的 y 坐标 |
| [in] | patAngle | 若使用自定义位置,输入指定的角度作为 0° |
|
getset |
模板细节程度,取值范围为 0 ~ 1,默认设置为 0.5。
数值越高,保留的细节越多,同时也可能引入更多的噪声,并影响算法的整体性能。 设置或修改模板细节程度后,需重新调用 Learn() 训练模板,特征点将在新的训练过程中按照细节程度重新提取。
若同时定义了 DetailLevel 以及 ShortThreshold / WeakThreshold ,将先应用 ShortThreshold / WeakThreshold 过滤特征,再调整细节成都。
|
getset |
用于过滤训练获得的长度较短的特征。该数值为相对于训练图像或区域长边的 0 ~ 100 的百分数, 即实际阈值的数值为 \( Max(Width, Height) \times ShortThreshold / 100 \) 默认值为 0 表示不进行短特征过滤。
设置或修改模板的短特征过滤阈值后,需重新调用 Learn() 训练模板,特征点将在新的训练过程中按照细节程度重新提取。
|
getset |
用于过滤训练获得的对比对较弱的特征。取值范围为 0 ~ 100,默认值为 0 表示不进行弱特征过滤。
设置或修改模板的弱特征过滤阈值后,需重新调用 Learn() 训练模板,特征点将在新的训练过程中按照细节程度重新提取。