7、halcon+根据模板查找,确定一个动态的检测区域

来源:互联网 发布:淘宝助理手机版最新 编辑:程序博客网 时间:2024/05/22 12:57

1、创健一个用于定位的模板

area_center (ModelROI, Area, CenterROIRow, CenterROIColumn)、提取模板区域的中心点坐标,后面的会用到

reduce_domain (ModelImage, ModelROI, ImageROI)、剪切有用的区域用于建模

create_shape_model (ImageROI, 4, 0, 0, 'auto', 'none', 'use_polarity', 30, 10, ModelID)、准备一个(不可缩放比例的)匹配轮廓模型;

inspect_shape_model (ImageROI, ShapeModelImage, ShapeModelRegion, 1, 30)、创健一个轮廓匹配模型基于金字塔的图像。

get_shape_model_contours (ShapeModel, ModelID, 1)、返回一个轮廓匹配模型的外形轮廓;该模板的中心在原点位置

dev_display (ShapeModelRegion)

2、创健一个检测的区域

gen_rectangle2 (MeasureROI1, Rect1Row, Rect1Col, RectPhi, RectLength1, RectLength2)、举一个矩形的例子而已,任意的检测区域都行

3、将检测区域移动到零点位置

move_region (MeasureROI1, MeasureROI1Ref, -CenterROIRow, -CenterROIColumn)、CenterROIRow,和CenterROIColumn即使建模区域的中心点坐标

4、计算检测区域中心点与模板中心点坐标的偏移量(=检测区域中心点-模板中心点)

DistRect1CenterRow := Rect1Row - CenterROIRow
DistRect1CenterCol := Rect1Col - CenterROIColumn

5、查找模板

find_shape_model (SearchImage, ModelID, 0, 0, 0.8, 0, 0.5, 'least_squares', 0, 0.7, RowCheck, ColumnCheck, AngleCheck, Score)

6、根据模板查找结果,创健仿射变换矩阵

vector_angle_to_rigid (0, 0, 0, RowCheck[i], ColumnCheck[i], AngleCheck[i], MovementOfObject)、根据点和角度创健仿射变换矩阵

7、将模板放射至当前的位置

affine_trans_contour_xld (ShapeModel, ModelAtNewPosition, MovementOfObject)、对XLD 轮廓进行一个任意二维仿射变换。

8、将检查区域放射到当前的位置

affine_trans_region (MeasureROI1Ref, MeasureROI1AtNewPosition, MovementOfObject, 'constant')

9、将检测区域的中心电放射到当前的位置
affine_trans_pixel (MovementOfObject, DistRect1CenterRow, DistRect1CenterCol, Rect1RowCheck, Rect1ColCheck)
10、当前检测位置已找到,具体的算法,就需要自己编写了

11、清除模板

clear_shape_model (ModelID)


参考例子:align_measurements.hdev








原创粉丝点击