基于互相关(NCC)模板匹配——find_ncc_model_defocused.hdev

相关性原理:仅在NCC(r,c) = ±1时,模板与图像完全匹配;
NCC绝对值越大,表示模板与正在检测部分图像越接近;
NCC绝对值越接近于零,表示模板与图像越不一致。
线性光照变化不会影响NCC计算结果。在这里插入图片描述
重要函数一:
创建模板:create_ncc_model( Template : : NumLevels, AngleStart, AngleExtent, AngleStep, Metric : ModelID)
参数列表:
Template(in):单通道灰度图像,它的区域可被创建为模板。
NumLevels(in):金字塔的最大层级,层数越多,搜索的越快。
AngleStart(in):模板的最小旋转。
AngleExtent(in):旋转角度范围。
AngleStep(in):角度步长。
Metric(in):匹配标准默认 ‘use_polarity’ 使用全局,如果图像对比度不好,可用忽略全局’ignore_global_polarity’。
ModelID(out):模板句柄,就和自己家的门牌号一样,通过句柄来找到模板图像。

dev_update_off ()
*读取图像,并获得图像尺寸
read_image (Image, 'smd/smd_on_chip_05')
get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
*set_display_font()用来设置当前窗口的字体属性,窗口,字体大小,字体名称
dev_set_color ('green')
dev_set_draw ('margin')
*创建矩形,左上角和右下角坐标值
gen_rectangle1 (Rectangle, 175, 156, 440, 460)
*区域中心坐标
area_center (Rectangle, Area, RowRef, ColumnRef)
*区域缩减,只剩下定义的矩形区域
reduce_domain (Image, Rectangle, ImageReduced)
*NCC互相关模板匹配(参考是之前定义的矩形区域)
create_ncc_model (ImageReduced, 'auto', 0, 0, 'auto', 'use_polarity', ModelID)
dev_display (Image)
dev_display (Rectangle)
disp_continue_message (WindowHandle, 'black', 'true')
stop ()
for J := 1 to 11 by 1
    read_image (Image, 'smd/smd_on_chip_' + J$'02')
    find_ncc_model (Image, ModelID, 0, 0, 0.5, 1, 0.5, 'true', 0, Row, Column, Angle, Score)
    dev_display (Image)
    dev_display_ncc_matching_results (ModelID, 'green', Row, Column, Angle, 0)
    if (J < 11)
        disp_continue_message (WindowHandle, 'black', 'true')
    endif
    stop ()
endfor
clear_ncc_model (ModelID)

你可能感兴趣的:(halcon,计算机视觉,目标检测)