图像匹配之归一化积相关灰度匹配
基于灰度的匹配是图像匹配中的一类重要算法,也称相关匹配。它基于空间二维滑动模板实现,并在制导导航方面得到了广泛应用。目前基于灰度的匹配算法有MAD算法、序贯相似性检测法等
基本原理:
当模板与原图找到最佳匹配部分时,R值最大,原理类似于:
当a,b越接近时,R值越大,趋近于1。
代码如下(我取b通道做图像匹配):
#include "stdafx.h"
#include <cv.h>
#include <highgui.h>
using namespace cv;double dbMax = 0; //最大像素值double dSigmaST, dSigmaS, dSigmaT; //中间结果double R; //相似性测量int i, j, m, n ;int nMaxWidth, nMaxHeight;CvScalar pixelSrc, pixelTem, pixel0, pixel1;IplImage* TemplateSrc = cvLoadImage("D:\\20.jpg"); //模板图像IplImage* src = cvLoadImage("D:\\24.jpg"); //原图//计算dSigmaTdSigmaT = 0;for (n = 0; n < TemplateSrc->height; n++){for (m = 0; m < TemplateSrc->width; m++){pixelTem = cvGet2D(TemplateSrc, n, m);dSigmaT += (double)pixelTem.val[0] * pixelTem.val[0];}}//找到图像中最大相似性出现的位置for (j = 0; j < src->height - TemplateSrc->height+1; j++){for (i = 0; i < src->width - TemplateSrc->width + 1; i++){dSigmaST = 0;dSigmaS = 0;for (n = 0; n < TemplateSrc->height; n++){for (m = 0; m < TemplateSrc->width; m++){pixelSrc = cvGet2D(src, j+n, i+m);pixelTem = cvGet2D(TemplateSrc, n, m);dSigmaS += (double)pixelSrc.val[0] * pixelSrc.val[0];dSigmaST += (double)pixelSrc.val[0] * pixelTem.val[0];}}R = dSigmaST / (sqrt(dSigmaS)*sqrt(dSigmaT)); //计算相似性if (R > dbMax) //与最大相似性比较{dbMax = R;nMaxHeight = j;nMaxWidth = i;}}}//对目标像素进行赋值for (j = nMaxHeight; j <TemplateSrc->height + nMaxHeight; j++){for (i = nMaxWidth; i < TemplateSrc->width + nMaxWidth; i++){pixel0 = cvGet2D(src, j , i );pixel1.val[0] = pixel0.val[0] / 2;pixel1.val[1] = pixel0.val[1] / 2;pixel1.val[2] = pixel0.val[2] / 2;cvSet2D(src,j, i, pixel1);}}cvNamedWindow("White", CV_WINDOW_AUTOSIZE);cvShowImage("White", src);while (1){if (cvWaitKey(100) == 27) break;}cvDestroyWindow("White");cvReleaseImage(&src);exit(0);
调试效果如图:
原图:
模板图:
效果图:
图像匹配之归一化积相关灰度匹配相关推荐
- 【机器视觉运动控制一体机小课堂】三分钟进行灰度匹配
背景 不同的模板匹配方法,其操作步骤也不一样,其生成模板的方式也有不同的地方,在之前的课程中我们讲述了基于形状的模板匹配,本期课程我们去了解一下基于灰度值的模板匹配. 基于灰度值的模板匹配适用于图像内 ...
- 【PyAutoGUI操作指南】05 屏幕截图与图像定位:截图+定位单个目标+定位全部目标+灰度匹配+像素匹配+获取屏幕截图中像素的RGB颜色
6 屏幕截图与图像定位 PyAutoGUI可以拍摄屏幕截图,将其保存到文件中,并在屏幕中定位图像.OSX使用操作系统附带的screencapture命令.Linux使用scrot命令,可以通过运行su ...
- 归一化互相关匹配算法
1.归一化互相关匹配 https://blog.csdn.net/u013049912/article/details/85984238: 2.图像匹配-NCC算法,即归一化互相关匹配 https:/ ...
- 一文概括常用图像处理算法
本文总结了11种常用的图像处理算法,包含了预处理算法以及检测算法,并介绍了一些常用的开发库. 一.算法(预处理算法.检测算法) 在采集完图像后,首先会对图像进行预处理操作.保证图像的对比度清晰,水平. ...
- 机器视觉工业缺陷检测的那些事(四、常用算法与库)
机器视觉工业缺陷检测的那些事(四.常用算法与库) 目录 机器视觉工业缺陷检测的那些事(四) 二.算法(预处理算法.检测算法) 常用的图像处理算法: 1.图像变换:(空域和频域.几何变换.色度变换.尺度 ...
- 基于灰度的模板匹配算法(一):MAD、SAD、SSD、MSD、NCC、SSDA算法
简介: 本文主要介绍几种基于灰度的图像匹配算法:平均绝对差算法(MAD).绝对误差和算法(SAD).误差平方和算法(SSD).平均误差平方和算法(MSD).归一化积相关算法(NCC).序贯相似性算法( ...
- 【图像配准】基于灰度的模板匹配算法(一):MAD、SAD、SSD、MSD、NCC、SSDA、SATD算法
简介: 本文主要介绍几种基于灰度的图像匹配算法:平均绝对差算法(MAD).绝对误差和算法(SAD).误差平方和算法(SSD).平均误差平方和算法(MSD).归一化积相关算法(NCC).序贯相似性检测算 ...
- 模板匹配综述-SSD,BBS,DDIS,CoTM,QATM
简单看了几篇模板匹配相关的论文,总结了一下,后期待修改 模板匹配介绍 模板匹配是计算机视觉应用中最常用的技术之一,可以应用在视频跟踪,图像拼接,目标检测,字符识别和3D重建等方向上. 模板和目标图像的 ...
- 基于灰度的模板匹配算法:MAD、SAD、SSD、MSD、NCC、SSDA算法
简介: 本文主要介绍几种基于灰度的图像匹配算法:平均绝对差算法(MAD).绝对误差和算法(SAD).误差平方和算法(SSD).平均误差平方和算法(MSD).归一化积相关算法(NCC).序贯相似性算法( ...
- NCC多尺寸模板匹配MATLAB
NCC多尺寸模板匹配MATLAB 模板匹配 NCC 运行结果 具体代码 总结 模板匹配 模板匹配首先给出一份模板,通过对于目标图像中的检索,找到目标图像中区域与模板最为契合的部分. 再本次程序中,流程 ...
最新文章
- shell脚本判断linux系统,并判断该系统版本号,从而关闭防火墙
- 解决flask端口被占用的问题
- 使用dotMemory Unit发现并修复内存问题
- Android FloatingActionButton(圆形按钮)
- linux系统安装gaussview_Linux系统安装Python
- arduino 有源 蜂鸣器_arduino实验–有源蜂鸣器报警
- 世界最小的QI标准无线充电接收模块,亲测不错。
- 计算机中单位换算,计算机常用单位换算
- 上计算机课睡觉检讨书400,课堂上睡觉检讨书范文
- 最常见的Web网站攻击手段
- CyanogenMod12编译教程
- [Power Query]:自动提取自定义一周的数据
- 以太坊智能合约开发语言 - Solidity
- 理解什么叫“自然拼读”
- 名茶事典——【贡(寿)眉】
- Unity地图分割组合时出现接缝的处理办法
- matlab点坐标 一次插值,[转载]坐标转换和插值之matlab程序
- SmartMemoryCleaner for Mac(内存清理工具)
- 使用Arduino开发板和气压、温度传感器制作实时气象站
- C语言 typedef 关键字
热门文章
- Delphi指针总结
- Atlas初步了解 [转]
- JAVA OOP(一)——OOP概念,类与对象
- HttpClient ip直连域名问题那些事
- vue+webpack实现一个todolist
- Express框架学习笔记-get请求中参数的获取
- java入门简单小项目_JAVA入门_java项目接入Mysql8.0
- php创建可读文件,php – 我需要一个人类可读的,可解析的文件格式
- DOM、JDOM、DOM4J解析XML
- c51单片机时钟程序汇编语言,51单片机数字钟汇编程序精选.docx