NCC多尺寸模板匹配MATLAB

  • 模板匹配
  • NCC
  • 运行结果
  • 具体代码
  • 总结

模板匹配

模板匹配首先给出一份模板,通过对于目标图像中的检索,找到目标图像中区域与模板最为契合的部分。
再本次程序中,流程如下:

  1. 获得模板与原图像的 RGB 图像,转化为灰度图,并且获得尺寸信息 。
  2. 计算模板灰度平均值,开始依次遍历原图像中的模板尺寸子图像。
  3. 对每一个分割图像,计算平均灰度值后,执行 NCC 算法,保存于二维矩阵中。
  4. 遍历完成,找到二维矩阵中最大值,记录坐标,绘图保存。

NCC

在此过程中,关键的因素就是找寻最为相似的区域,即为,如何设计一 个公式,衡量两个区域之间的相似度。NCC 就是这样一个评估函数,归一化积相关算法。

图片引用自 图像处理之基于NCC模板匹配识别

运行结果

原图像

裁出来的模板

模板匹配结果

加上NCC值矩阵标准化后的热力图

每个NCC匹配值保存在左上角,所以下面和右边没有

具体代码

clear all;
tic;
image = imread('C:\Users\75215\Desktop\计算机视觉\test.jpg');
target = imread('C:\Users\75215\Desktop\计算机视觉\cug_90.jpg');
im_gray = double(rgb2gray(image));
tar_gray = double(rgb2gray(target));
[target_x,target_y] = size(tar_gray);
[image_x,image_y] = size(im_gray);
xy = target_x *target_y;
avgray_tar =double(0);for x =1:target_xfor y = 1: target_yavgray_tar = avgray_tar + tar_gray(x,y);%计算模板的总灰度值end
end
avgray_tar = avgray_tar/xy;%模板平均灰度值
for w =1 : (image_x-target_x-1)disp(w);for h = 1:(image_y-target_y-1) avgray_im=double(0);tempt_image = im_gray(w:w+target_x-1,h:h+target_y-1);%裁剪中模板大小的区域for x  =1:target_xfor y = 1:target_yavgray_im = avgray_im + tempt_image(x,y);%计算裁剪区域的总灰度值endendavgray_im = avgray_im/xy;%裁剪部分的平均灰度值err_tar =double(0);%模板的灰度误差err_img =double(0);%裁剪区域的灰度误差err_all = double(0);%二者相乘var_img =double(0);%裁剪区域标准差var_tar = double(0);%模板标准差for x=1:target_xfor y=1:target_yerr_tar = (tar_gray(x,y) - avgray_tar);err_img = (tempt_image(x,y)-avgray_im);err_all = err_all+err_tar*err_img;var_tar = power((tar_gray(x,y)-avgray_tar),2)+var_tar;var_img =power((tempt_image(x,y)-avgray_im),2)+var_img;endendncc(w,h) = ((err_all)/(sqrt(var_tar)*sqrt(var_img)))/(xy-1);%计算NCC值end
end
max_ncc = max(max(ncc));
[max_x,max_y] = find(ncc == max(max(ncc))); %找到最大匹配值的位置
figure(1)
imshow(uint8(target));
ncc=mapminmax(ncc,-1,1);%归一化到[-1,1]
figure(2)
imshow(uint8(image));%画原图
hold on;
show = imagesc(ncc);    %根据矩阵变为热力图
set(show,'AlphaData',0.6); %设置透明度
rectx =[max_y,max_x,target_y,target_x]; %设置矩形区域
rectangle('Position',rectx,'Edgecolor','r','LineWidth',2);%画矩形,红shai,粗2
toc
disp(toc)

总结

CUG计算机视觉课作业之一
唯一一份手写的作业
MATLAB不太常用,写的稀烂,NCC值似乎有些小毛病
不管怎样,but it works~

NCC多尺寸模板匹配MATLAB相关推荐

  1. SSD,NCC,Lucas-Kanade模板匹配,目标跟踪

    SSD,NCC,Lucas-Kanade模板匹配,目标跟踪 SSD 原理: 实现: 结果: NCC 原理: 实现: 结果: Lucas-Kanade 原理: 结果: SSD 原理: 误差平方和算法 数 ...

  2. opencv自适应尺寸模板匹配

    opencv自带的模板匹配常规做法: 1.转换灰度图 cvtColor(img_template, img_template, CV_RGB2GRAY);cvtColor(org, org, CV_R ...

  3. matlab 做模板匹配,matlab编程实现模板匹配

    clear all; close all; clc; img=imread('Lena.bmp'); imshow(img); title('原始图像'); img=double(img); mask ...

  4. OpenMV4 H7 PLUS摄像头模板匹配

    使用OpenMV4 H7 PLUS摄像头进行矩形.三角形.圆三种形状的模板匹配: 参考: 官网:https://book.openmv.cc 函数库:https://docs.singtown.com ...

  5. 基于模板匹配的图像拼接技术研究-含Matlab代码

    目录 一.引言 二.模板匹配原理 三.图像融合 四.图像拼接结果 五.参考文献 六.Matlab代码(GUI界面)获取 一.引言 图像拼接是将一组具有重叠区域的图像集合拼接成一幅完整的无缝的图像的技术 ...

  6. Matlab模板匹配实现图像运动估计(频域实现)

    引言:在利用显微镜观测量物体的长度时,其精度非常高,然而,其行程却有限.一个测量较长物体的长度时,一种方法是在物体的左侧开始拍摄图像,然后移动相机(或者物体),再拍图像,直到拍摄到物体的右侧为止.对于 ...

  7. 【字符识别】基于matlab GUI模板匹配(区域生长法)字母+数字识别【含Matlab源码 1695期】

    一.手写大写字母识别技术简介 0 引言 在高校教学过程中,考试是最为普遍的一种教学评估.综合练习的教学手段,随着科技进步,考试阅卷的方式也发生了巨大的变革.传统的阅卷方式主要以人工阅卷为主, 存在效率 ...

  8. 【字符识别】基于matlab模板匹配(区域生长法)字母+数字识别【含Matlab源码 1214期】

    ⛄一.手写大写字母识别技术简介 0 引言 在高校教学过程中,考试是最为普遍的一种教学评估.综合练习的教学手段,随着科技进步,考试阅卷的方式也发生了巨大的变革.传统的阅卷方式主要以人工阅卷为主, 存在效 ...

  9. 图像处理之基于NCC模板匹配识别

    图像处理之基于NCC模板匹配识别 一:基本原理 NCC是一种基于统计学计算两组样本数据相关性的算法,其取值范围为[-1, 1]之间,而对图像来说,每个像素点都可以看出是RGB数值,这样整幅图像就可以看 ...

最新文章

  1. 什么是SESSION?(一)
  2. 【分布式事务】tcc-transaction分布式TCC型事务框架搭建与实战案例(基于Dubbo/Dubbox)...
  3. mysql--SQL编程(关于mysql中的日期,关于重叠) 学习笔记2.2
  4. 重磅!《Android 全埋点技术白皮书》开源所有项目源码!
  5. redis源码剖析(十五)——客户端思维导图整理
  6. linux命令行提示符居中,linux命令行学习(54):修改提示符
  7. Android之记住密码与自动登陆实现
  8. qt 串口发送char 数组乱码_串口的波特相差多大会误码
  9. 草稿 datagridview的显示与修改
  10. java static面试题_Java static面试题
  11. @sql 单元测试_10个最常见SQL单元测试错误
  12. CNN网络:MINST数据集的练习
  13. 乐谱管理软件SheetAble
  14. 推荐几个rpm包下载网站
  15. 算法:狐狸吃兔子问题(约瑟环)
  16. Mysql报错 Error querying database. Cause java.sql.SQLSyntaxErrorException
  17. NLP入门:pyltp的介绍与使用
  18. 第一次作为面试官的感悟
  19. 树莓派控制超声波传感器
  20. 720phi10p 和 720p有什么区别_很多人都在都使用视频采集卡,那视频采集卡有几种?有什么特点和区别?...

热门文章

  1. Spring Boot 之 spring.factories的用法
  2. Constrast Learnning
  3. Spring Boot 2.x 事务处理(一篇长文让你读懂什么是隔离级别和传播行为)
  4. join on and
  5. 用C语言“调戏”qq
  6. 【入门】精灵宝可梦数据集分析
  7. unity中使用fmod音频插件1
  8. 树莓派3B+安装wiringpi和bcm库
  9. 2021年Python编程发展趋势分析
  10. ava.net.UnknownServiceException: CLEARTEXT communication ** not permitted by network security polic