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算子)。如此就可以找到物品的准确位置。


相关文章
|
机器学习/深度学习 数据可视化 数据挖掘
Multiple Dimension Input 处理多维特征的输入
Multiple Dimension Input 处理多维特征的输入
130 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模板匹配实践(3)inspect_shape_model
halcon模板匹配实践(3)inspect_shape_model
1015 0
|
TensorFlow 算法框架/工具
TF:TF定义两个变量相乘之placeholder先hold类似变量+feed_dict最后外界传入值
TF:TF定义两个变量相乘之placeholder先hold类似变量+feed_dict最后外界传入值
TF:TF定义两个变量相乘之placeholder先hold类似变量+feed_dict最后外界传入值
Halcon之select_shape_xld是支持多个参数过滤的
Halcon之select_shape_xld是支持多个参数过滤的
688 0
|
计算机视觉
轮廓的查找、表达、绘制、特性及匹配(How to Use Contour? Find, Component, Construct, Features & Match)
http://www.cnblogs.com/xrwang/archive/2010/02/09/HowToUseContour.html   作者:王先荣 前言    轮廓是构成任何一个形状的边界或外形线。
1931 0
零元学Expression Blend 4 - Chapter 38 看如何使用Clip修出想要的完美曲线(下)
原文:零元学Expression Blend 4 - Chapter 38 看如何使用Clip修出想要的完美曲线(下) 你可以把Clip想成是一个遮罩,运用遮罩达到我们想要的效果 所以在这里我们把文字的...
1217 0
零元学Expression Blend 4 - Chapter 37 看如何使用Clip修出想要的完美曲线(上)
原文:零元学Expression Blend 4 - Chapter 37 看如何使用Clip修出想要的完美曲线(上) 几何外部的 UIElement 会在呈现的配置中以视觉化方式裁剪。
1361 0
零元学Expression Blend 4 Chapter 22 以实作案例学习Frame及HyperlinkButton
原文:零元学Expression Blend 4 Chapter 22 以实作案例学习Frame及HyperlinkButton 本章将教大家如何以实作善用Blend4的内建功能-「Frame」以及「Hy...
1345 0

热门文章

最新文章