halcon学习笔记(六)——仿射变换

hom_mat2d_identity(HomMat2D) //定义一个矩阵

1.Translation平移

hom_mat2d_translate( : : HomMat2D, Tx, Ty : HomMat2DTranslate)

HomMat2D, Tx, Ty输入;HomMat2DTranslate输出

例子:

affine_trans_region(Region : RegionAffineTrans : HomMat2D, Interpolate : )

Region,HomMat2D输入;RegionAffineTrans输出;Interpolate一般为最小临值法’nearest_neighbor’

set_system('clip_region','false') //图片以外的region不要剪裁

### Halcon 中模板匹配结合仿射变换的方法 在图像处理领域,Halcon 提供了一套强大的工具用于执行复杂的操作,其中包括模板匹配和仿射变换。当目标物体可能发生旋转、缩放或倾斜变化时,仅依靠简单的灰度或边缘模板可能无法达到理想的识别效果。此时引入仿射变换能够显著提高匹配精度。 #### 创建并优化模板 为了使后续的仿射变换更加有效,在创建模板阶段就需要考虑尽可能多的情况: ```cpp // 定义参数范围 GenAffineTransPlane (0, 0, 1, 0, 1, 0, AffineTrans) create_shape_model (ImageTemplate, 'auto', 'use_polarity', 'true', \ 'least_squares', 5, 0.9, [-20,20], [0.7,1.3], ShapeModelID) ``` 这段代码通过 `GenAffineTransPlane` 函数生成了一个基本的平面仿射变换矩阵,并利用此矩阵来构建形状模型[^2]。这里设置了角度和平移的比例因子允许的变化区间,使得最终建立起来的模板具有更好的鲁棒性和适应性。 #### 执行带仿射变换的模板匹配 实际应用中,通常会调用如下函数来进行带有仿射变换特性的模板搜索: ```cpp find_shape_model(ImageSearch, ShapeModelID, MinScore, Row, Column, Angle, ScaleRow, ScaleColumn, Handle) // 对于更精确的结果还可以尝试: refine_match_pos(HomMat2D, ImageSearch, ModelRegion, MeasureHandle, ResultHomMat2D) ``` 上述命令中的 `MinScore` 参数决定了最低得分阈值,只有超过该分数才会被认为是有效的匹配结果;而 `Row`, `Column`, `Angle`, `ScaleRow`, `ScaleColumn` 则分别对应着检测到的目标中心坐标、旋转角以及纵横方向上的尺度变化量。对于一些特殊需求下还需要进一步精修得到的位置姿态信息,则可以通过 `refine_match_pos` 来实现更高精度调整[^3]。 #### 结合实例说明 假设有一个应用场景是定位充电宝设备,由于其外形可能会因摆放姿势不同而导致形态差异较大,因此非常适合采用基于仿射变换增强后的模板匹配技术。具体做法是在前期准备工作中选取多个典型视角下的样本图片作为训练集,经过预处理后形成具备一定变形容忍能力的模板库。之后每当遇到新的待测对象时便启动快速扫描过程,一旦发现符合条件的最佳候选即刻返回相应属性描述[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值