基于灰度的匹配是图像匹配中的一类重要算法,也称相关匹配。它基于空间二维滑动模板实现,并在制导导航方面得到了广泛应用。目前基于灰度的匹配算法有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);

调试效果如图:

原图:

模板图:

效果图:

图像匹配之归一化积相关灰度匹配相关推荐

  1. 【机器视觉运动控制一体机小课堂】三分钟进行灰度匹配

    背景 不同的模板匹配方法,其操作步骤也不一样,其生成模板的方式也有不同的地方,在之前的课程中我们讲述了基于形状的模板匹配,本期课程我们去了解一下基于灰度值的模板匹配. 基于灰度值的模板匹配适用于图像内 ...

  2. 【PyAutoGUI操作指南】05 屏幕截图与图像定位:截图+定位单个目标+定位全部目标+灰度匹配+像素匹配+获取屏幕截图中像素的RGB颜色

    6 屏幕截图与图像定位 PyAutoGUI可以拍摄屏幕截图,将其保存到文件中,并在屏幕中定位图像.OSX使用操作系统附带的screencapture命令.Linux使用scrot命令,可以通过运行su ...

  3. 归一化互相关匹配算法

    1.归一化互相关匹配 https://blog.csdn.net/u013049912/article/details/85984238: 2.图像匹配-NCC算法,即归一化互相关匹配 https:/ ...

  4. 一文概括常用图像处理算法

    本文总结了11种常用的图像处理算法,包含了预处理算法以及检测算法,并介绍了一些常用的开发库. 一.算法(预处理算法.检测算法) 在采集完图像后,首先会对图像进行预处理操作.保证图像的对比度清晰,水平. ...

  5. 机器视觉工业缺陷检测的那些事(四、常用算法与库)

    机器视觉工业缺陷检测的那些事(四.常用算法与库) 目录 机器视觉工业缺陷检测的那些事(四) 二.算法(预处理算法.检测算法) 常用的图像处理算法: 1.图像变换:(空域和频域.几何变换.色度变换.尺度 ...

  6. 基于灰度的模板匹配算法(一):MAD、SAD、SSD、MSD、NCC、SSDA算法

    简介: 本文主要介绍几种基于灰度的图像匹配算法:平均绝对差算法(MAD).绝对误差和算法(SAD).误差平方和算法(SSD).平均误差平方和算法(MSD).归一化积相关算法(NCC).序贯相似性算法( ...

  7. 【图像配准】基于灰度的模板匹配算法(一):MAD、SAD、SSD、MSD、NCC、SSDA、SATD算法

    简介: 本文主要介绍几种基于灰度的图像匹配算法:平均绝对差算法(MAD).绝对误差和算法(SAD).误差平方和算法(SSD).平均误差平方和算法(MSD).归一化积相关算法(NCC).序贯相似性检测算 ...

  8. 模板匹配综述-SSD,BBS,DDIS,CoTM,QATM

    简单看了几篇模板匹配相关的论文,总结了一下,后期待修改 模板匹配介绍 模板匹配是计算机视觉应用中最常用的技术之一,可以应用在视频跟踪,图像拼接,目标检测,字符识别和3D重建等方向上. 模板和目标图像的 ...

  9. 基于灰度的模板匹配算法:MAD、SAD、SSD、MSD、NCC、SSDA算法

    简介: 本文主要介绍几种基于灰度的图像匹配算法:平均绝对差算法(MAD).绝对误差和算法(SAD).误差平方和算法(SSD).平均误差平方和算法(MSD).归一化积相关算法(NCC).序贯相似性算法( ...

  10. NCC多尺寸模板匹配MATLAB

    NCC多尺寸模板匹配MATLAB 模板匹配 NCC 运行结果 具体代码 总结 模板匹配 模板匹配首先给出一份模板,通过对于目标图像中的检索,找到目标图像中区域与模板最为契合的部分. 再本次程序中,流程 ...

最新文章

  1. shell脚本判断linux系统,并判断该系统版本号,从而关闭防火墙
  2. 解决flask端口被占用的问题
  3. 使用dotMemory Unit发现并修复内存问题
  4. Android FloatingActionButton(圆形按钮)
  5. linux系统安装gaussview_Linux系统安装Python
  6. arduino 有源 蜂鸣器_arduino实验–有源蜂鸣器报警
  7. 世界最小的QI标准无线充电接收模块,亲测不错。
  8. 计算机中单位换算,计算机常用单位换算
  9. 上计算机课睡觉检讨书400,课堂上睡觉检讨书范文
  10. 最常见的Web网站攻击手段
  11. CyanogenMod12编译教程
  12. [Power Query]:自动提取自定义一周的数据
  13. 以太坊智能合约开发语言 - Solidity
  14. 理解什么叫“自然拼读”
  15. 名茶事典——【贡(寿)眉】
  16. Unity地图分割组合时出现接缝的处理办法
  17. matlab点坐标 一次插值,[转载]坐标转换和插值之matlab程序
  18. SmartMemoryCleaner for Mac(内存清理工具)
  19. 使用Arduino开发板和气压、温度传感器制作实时气象站
  20. C语言 typedef 关键字

热门文章

  1. Delphi指针总结
  2. Atlas初步了解 [转]
  3. JAVA OOP(一)——OOP概念,类与对象
  4. HttpClient ip直连域名问题那些事
  5. vue+webpack实现一个todolist
  6. Express框架学习笔记-get请求中参数的获取
  7. java入门简单小项目_JAVA入门_java项目接入Mysql8.0
  8. php创建可读文件,php – 我需要一个人类可读的,可解析的文件格式
  9. DOM、JDOM、DOM4J解析XML
  10. c51单片机时钟程序汇编语言,51单片机数字钟汇编程序精选.docx