halcon模板匹配实践(2)算子find_shape_model里的参数Row, Column, Angle含义是什么?

简介: halcon模板匹配实践(2)算子find_shape_model里的参数Row, Column, Angle含义是什么?

Halcon模板匹配算子find_shape_model里的参数Row, Column, Angle(单位:弧度)含义是什么?


find_shape_model(Image : : ModelID, AngleStart, AngleExtent, MinScore, NumMatches, MaxOverlap, SubPixel, NumLevels, Greediness : Row, Column, Angle, Score)



先看官方文档怎么说


The position and rotation of the found instances of the model is returned in Row,
 Column, and Angle. Additionally, the score of each found instance is returned in Score.
找到的模型实例的位置和旋转以行,列和角度返回。 此外,每个找到的实例的分数都在Score中返回。
find_shape_model(Image : :  //搜索图像
                ModelID, //模板句柄
                AngleStart,  // 搜索时的起始角度
                AngleExtent, //搜索时的角度范围,必须与创建模板时的有交集
                MinScore, //最小匹配值,输出的匹配的得分Score 大于该值
                NumMatches, //定义要输出的匹配的最大个数
                MaxOverlap, //当找到的目标存在重叠时,且重叠大于该值时选择一个好的输出
//如果MaxOverlap=0, 找到的目标区域不能存在重叠, 如果MaxOverla p=1,所有找到的目标区域都要返回。
                SubPixel, //计算精度的设置,五种模式,多选2,3
                NumLevels, //搜索时金字塔的层数
                Greediness : //贪婪度,搜索启发式,一般都设为0.9,越高速度快,容易出现找不到的情况
                           //0安全慢;1块不稳定;其他就是介于中间值 
                Row,Column, Angle, Score) //输出匹配位置的行和列坐标、角度、得分。


再来做个小实验


画图举例说明,Row, Column, Angle到底指的是什么距离?


1、已知图1和图2。小实验需要从图1取出模板,然后在图2找到相同的物体。


2、从图1框选ROI,ROI的像素中心点是B,ROI就是模板。


3、使用find_shape_model算子,在图2找到了物品,算子返回了Row, Column, Angle三个参数。


image.png


4、如下图所示,A,B,C点三者的对应关系是求出来了。


A是图1左上角的起点;


B是ROI的像素中心点,也是图2的起点;


C是匹配到的物体像素中心点。


A与B之间的宽和高分别是(row1,col1)


B与C之间的宽和高分别是(row2,col2)


结论:


find_shape_model算子,其返回值Row, Column参数指的就是row2和col2。

image.png





最后来看看halcon源码的实现

*读图1
read_image (Image1, '1.jpg')
*获取图像宽高
get_image_size (Image1, Width, Height)
dev_open_window_fit_image (Image1, 0, 0, -1, -1, WindowHandle)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
dev_display (Image1)
*彩色转灰度图
count_channels (Image1, Channels)
if (Channels == 3)
    rgb1_to_gray (Image1, Image1)
*真彩色转灰度图
elseif (Channels == 4)
    decompose4 (Image1, ImageR, ImageG, ImageB, ImageA)
    compose3 (ImageR, ImageG, ImageB, MultiChannelImage)
    rgb1_to_gray (MultiChannelImage, Image1)
endif
*从图1选取ROI,建立模板
draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)
gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)
area_center (Rectangle, Area, RowRef, ColumnRef)
reduce_domain (Image1, Rectangle, ImageReduced)
create_shape_model (ImageReduced, 'auto', 0, rad(180), 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)
get_shape_model_contours (ShapeModel, ModelID, 1)
*读图2
read_image (Image2, '2.jpg')
*模板匹配
find_shape_model (Image2, ModelID, 0, rad(180), 0.1, 1, 0.5, 'least_squares', 0, 0.7, Row, Column, Angle, Score)
if (|Score| > 0)
     dev_set_color ('yellow')
     dev_clear_window()
     vector_angle_to_rigid (0, 0, 0, Row, Column, Angle, MovementOfObject)
     affine_trans_contour_xld (ShapeModel, ModelAtNewPosition, MovementOfObject)
     dev_display (ImageNew1)
     dev_display (ModelAtNewPosition)
endif



image.png

代码里使用了仿射变换:


1、Halcon二维仿射变换,严格按照平移-->旋转-->缩放的先后顺序实施;

2、一切以ROI模板的中心点(即鼠标选取的模板图像的像素中心,上文中描述的点B)为零点,。图2找到的任何物品,都是以ROI的中心点为基准的;


3、图2,ROI模板从B点出发,平移(Row,Column),达到C点,再旋转Angle,最后缩放(如果是find_scaled_shape_model算子)。如此就可以找到物品的准确位置。


相关文章
|
4天前
|
Python
GEE—关于RSEI生态遥感指数中出现的问题 Layer error: Image.rename: The number of names (1) must match the number of..
GEE—关于RSEI生态遥感指数中出现的问题 Layer error: Image.rename: The number of names (1) must match the number of..
34 0
|
8月前
|
机器学习/深度学习 编解码 人工智能
ATC 模型转换动态 shape 问题案例
ATC(Ascend Tensor Compiler)是异构计算架构 CANN 体系下的模型转换工具:它可以将开源框架的网络模型(如 TensorFlow 等)以及 Ascend IR 定义的单算子描述文件转换为昇腾 AI 处理器支持的离线模型;模型转换过程中,ATC 会进行算子调度优化、权重数据重排、内存使用优化等具体操作,对原始的深度学习模型进行进一步的调优,从而满足部署场景下的高性能需求,使其能够高效执行在昇腾 AI 处理器上。
118 0
|
9月前
|
机器学习/深度学习 存储 数据可视化
向量的点积(Dot Product)
向量的点积(Dot Product)是一种定义在两个向量之间的运算,用于衡量它们之间的相似度或关联程度。在数学上,对于两个向量𝐯 = [𝑣₁, 𝑣₂, ..., 𝑣𝑛] 和𝐰 = [𝑤₁, 𝑤₂, ..., 𝑤𝑛],它们的点积定义为:
221 0
|
9月前
|
机器学习/深度学习 数据可视化 数据挖掘
Multiple Dimension Input 处理多维特征的输入
Multiple Dimension Input 处理多维特征的输入
85 0
|
存储 人工智能 前端开发
动态尺寸模型优化实践之Shape Constraint IR Part II
在本系列分享中我们将介绍BladeDISC在动态shape语义下做性能优化的一些实践和思考。本次分享的是我们最近开展的有关shape constraint IR的工作,Part II 中我们将介绍shape constraint IR的设计,实现以及一些初步的实验结果
|
人工智能 编译器 云计算
动态尺寸模型优化实践之Shape Constraint IR Part I
在本系列分享中我们将介绍BladeDISC在动态shape语义下做性能优化的一些实践和思考。本次分享的是我们最近开展的有关shape constraint IR的工作,Part I 中我们将介绍问题的背景,面临的主要挑战和以及我们做shape constraint IR的动机。
Halcon之select_shape_xld是支持多个参数过滤的
Halcon之select_shape_xld是支持多个参数过滤的
590 0
|
计算机视觉
轮廓的查找、表达、绘制、特性及匹配(How to Use Contour? Find, Component, Construct, Features & Match)
http://www.cnblogs.com/xrwang/archive/2010/02/09/HowToUseContour.html   作者:王先荣 前言    轮廓是构成任何一个形状的边界或外形线。
1739 0
|
TensorFlow 算法框架/工具 索引
[转载]Tensorflow 的reduce_sum()函数的axis,keep_dim这些参数到底是什么意思?
转载链接:https://www.zhihu.com/question/51325408/answer/125426642来源:知乎 这个问题无外乎有三个难点: 什么是sum 什么是reduce 什么是维度(indices, 现在均改为了axis和numpy等包一致) sum很简单,就是求和,那么问题就是2和3,让我们慢慢来讲。
1519 0
零元学Expression Blend 4 - Chapter 37 看如何使用Clip修出想要的完美曲线(上)
原文:零元学Expression Blend 4 - Chapter 37 看如何使用Clip修出想要的完美曲线(上) 几何外部的 UIElement 会在呈现的配置中以视觉化方式裁剪。
1330 0