当前位置:网站首页>halcon原理:相关性匹配
halcon原理:相关性匹配
2022-06-23 11:53:00 【无水先生】
一、基本原理
NCC是基于统计学计算两组样本的相关性算法,其取值范围为【-1,1】之间,而对图像来说,每个像素看成RGB的向量,整个图像就是一个样本集合。如果它有一个子集,与另一个样本数据相互匹配,则它的NCC值为1;表示相关性很高,如果是-1,表完全无关;基于此原理实现模板的匹配识别,其第一步需要归一化数据,数学公式:

其中,f表示p点灰度值,
表示窗口内像素平均值,
表示标准方差。
假如t表示模板像素值,则:

其中n是模板像素总数,n-1是自由度。
二、实现方法
1)获取模板像素的均值、标准差、像素和均值的fiff数据样本。
2)根据模板大小,在目标图像上,从上到下、从左到右平移模板,计算每移动一个像素后,模板与图像区域的NCC值,并且记录在中心点位置。完成后,各点的NCC和阈值比较,超出阈值的就是匹配结果。
3)用矩形框标志匹配位置。
4)使用UI输出。
三、Halcon的NCC匹配
Halcon的ncc模板使用,由两个函数完成:create_ncc_model和find_ncc_model配合完成。以下我们准备了一个图片,来诠释这种匹配的
3.1 create_ncc_model和find_ncc_model函数
函数原型:
- create_ncc_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, Metric : ModelID)
Template: 模板的图像,可以是矩形,也可以是圆。
NumLevels:是模板的层次,如果一层,就用“auto”
AngleStart, AngleExtent, AngleStep:此三个表示角度模板旋转,起始角、终止角、旋转步长。
Metric:匹配标准
ModelID:模板标号
- find_ncc_model(Image : : ModelID, AngleStart, AngleExtent, MinScore, NumMatches, MaxOverlap, SubPixel, NumLevels : Row, Column, Angle, Score)
Image:被检测的图像
ModelID:模板编号
AngleStart, AngleExtent:角度
MinScore:匹配分数
NumMatches:匹配,命中的模板数
MaxOverlap,
SubPixel:
NumLevels:模板层数
Row, Column, Angle, Score:返回值,命中的行、列、角度、分数值。
四、案例
1 打开一个灰度图像文件:
read_image (Image, 'F:/images/hugeImg/gtexst.jpg')
get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
dev_update_window ('off')

2 生成模板
gen_circle (Circle, 210,692, 41)
area_center (Circle, Area, RowRef, ColumnRef)
reduce_domain (Image, Circle, ImageReduced1)
disp_image(ImageReduced1,WindowHandle)
gen_circle (Circle, 701,854, 59)
area_center (Circle, Area, RowRef, ColumnRef)
reduce_domain (Image, Circle, ImageReduced2)
disp_image(ImageReduced2,WindowHandle)
生成两个圆形模板
create_ncc_model (ImageReduced1 , 5, 0, 10, 'auto', 'use_polarity', ModelID1)
get_ncc_model_params( ModelID1 ,NumLevels, AngleStart, AngleExtent, AngleStep, Metric)
create_ncc_model (ImageReduced2 , 5, 0, 10, 'auto', 'use_polarity', ModelID2)
get_ncc_model_params( ModelID2 ,NumLevels, AngleStart, AngleExtent, AngleStep, Metric)
3 模板匹配
find_ncc_model (Image, ModelID1, 0, 10, 0.5, 1, 0.5, 'true', 0, Row1, Column1, Angle, Score1)
find_ncc_model (Image, ModelID2, 0, 10, 0.5, 1, 0.5, 'true', 0, Row2, Column2, Angle, Score2)
4 标出匹配区域
dev_set_draw ('margin')
dev_set_colored (12)
dev_set_line_width (3)
dev_display (Image)
gen_rectangle1(Rectangle1, Row1-41, Column1-41, Row1+41, Column1+41)
gen_rectangle1(Rectangle2, Row2-59, Column2-59, Row2+59, Column2+59)
dev_set_window(WindowHandle)
dev_display(Rectangle1)
dev_display(Rectangle2)
五、相关函数列举
5.1 可能前置项:
draw_region
reduce_domain
threshold
5.2 可能后置项:
find_ncc_model
get_ncc_model_params
clear_ncc_model
write_ncc_model
set_ncc_model_origin
set_ncc_model_param
5.3 可能替代项:
create_shape_model
create_scaled_shape_model
create_aniso_shape_model
create_template_rot
边栏推荐
- 汉源高科8路电话+1路百兆以太网RJ11电话光端机 8路PCM电话光端机
- 【云原生&微服务八】Ribbon负载均衡策略之WeightedResponseTimeRule源码剖析(响应时间加权)
- 一张图解码 OpenCloudOS 社区开放日
- QT5知识:信号和槽的一些要点
- 得物多活架构设计之路由服务设计
- 4路电话+1路千兆以太网4路PCM电话光端机
- [cloud resident co creation] in the code free era, how does software development go to everyone?
- Meta said that the UK security law may "scan all private information" or infringe privacy
- 想学习eTS开发?教你开发一款IQ-EQ测试应用
- “梦想童行” 2022年广汽本田儿童道路安全公益行走进东北
猜你喜欢

Qt 知识:使用 QGraphicsPixmapItem类

Introduction to redis - Chapter 1 - data structures and objects - simple dynamic string (SDS)

【零基础微信小程序】基于百度大脑人像分割的证件照换底色小程序实战开发

年薪中位数超30万,南大AI专业首届毕业生薪资曝光

Mysql, how to calculate the maximum value using stored procedures
![[zero foundation wechat applet] actual development of ID photo changing background color applet based on Baidu brain portrait segmentation](/img/4b/421e91471c8c1183181875d53e60d2.png)
[zero foundation wechat applet] actual development of ID photo changing background color applet based on Baidu brain portrait segmentation

php 手写一个完美的守护进程

Getting started with redis - Chapter 2 - data structures and objects - linked lists

杜邦分析法解读:安阳钢铁股份有限公司企业投资价值何在?

2光2电级联型光纤收发器千兆2光2电光纤收发器迷你嵌入式工业矿用本安型光纤收发器
随机推荐
汉源高科8路电话+1路百兆以太网RJ11电话光端机 8路PCM电话光端机
Does the inductance have polarity?
[processes and threads]
Where to find capacitance parameters!?
I am in Foshan. Where can I open an account? Is it safe to open a mobile account?
[zero foundation wechat applet] actual development of ID photo changing background color applet based on Baidu brain portrait segmentation
Comment Huawei Cloud réalise l'architecture mondiale de réseau audio - vidéo en temps réel à faible latence
在工作中学习的三个方法
Face the future calmly and strive to improve yourself
ESP32-C3入门教程 问题篇⑧——blufi_example.c:244: undefined reference to `esp_ble_gap_start_advertising
@黑马粉丝,这份「高温补贴」你还没领?
PPT制作3D旋转动画从入门到进阶
LinkedList 5-141. 环形链表
Redis 入门-第三篇-数据结构与对象-字典
目前 在哪里开户是最安全正规的?
有没有碰到过flink1.15.0 和 flink-cdc-mysql 2.2.1不兼容的情况?f
Creating neural networks using tensorflow2
你真的理解LDO的輸出電容嗎!?
六维图剖析:中国建筑集团有限公司企业成长性分析
QT5知识:DNS查询