Halcon模板匹配算子find_shape_model里的参数Row, Column, Angle含义是什么?html
find_shape_model(Image : : ModelID, AngleStart, AngleExtent, MinScore, NumMatches, MaxOverlap, SubPixel, NumLevels, Greediness : Row, Column, Angle, Score)dom
先看官方文档怎么说
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中返回。
再来作个小实验
画图举例说明,Row, Column, Angle到底指的是什么距离?spa
一、已知图1和图2。小实验须要从图1取出模板,而后在图2找到相同的物体。.net
二、从图1框选ROI,ROI的像素中心点是B,ROI就是模板。3d
三、使用find_shape_model算子,在图2找到了物品,算子返回了Row, Column, Angle三个参数。code
四、以下图所示,A,B,C点三者的对应关系是求出来了。htm
A是图1左上角的起点;blog
B是ROI的像素中心点,也是图2的起点;文档
C是匹配到的物体像素中心点。get
A与B之间的宽和高分别是(row1,col1)
B与C之间的宽和高分别是(row2,col2)
结论:
find_shape_model算子,其返回值Row, Column参数指的就是row2和col2。
最后来看看halcon实例
*从图1选取ROI,创建模板 read_image (Image1, '1.jpg') 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
//Halcon二维仿射变换,严格按照平移/旋转/缩放的前后顺序实施 //一切以minModel的中心点(不是几何中心,而是图像的分辨率中心)为零点,即匹配到的图像的位置,是以minModel的中心点(不是几何中心,而是图像的分辨率中心)为基准的; //先把模板图minModel.jpg的中心点和待配图minWorkpiece.jpg的图像像素起点重合(opencv图像起点在左上角),而后开始匹配,计算XY偏移量和旋转角度及缩放因子; //再把模板图minModel.jpg进行上个步骤获得的偏移量平移,而后再旋转和缩放,就能够获得minWorkpiece像素坐标