图像匹配之归一化积相关灰度匹配
2015-09-11 20:28
295 查看
基于灰度的匹配是图像匹配中的一类重要算法,也称相关匹配。它基于空间二维滑动模板实现,并在制导导航方面得到了广泛应用。目前基于灰度的匹配算法有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);调试效果如图:原图:模板图:效果图:
相关文章推荐
- Ubuntu设置代理和例外
- 基于飞思卡尔i.MX 6Quad Sabrelite开发板的触摸屏调试
- Machine Intelligence(Nature Insight 2015.5.28/Vol 521/Issue No 7553)
- 单例模式及单例类的两种实现
- img标签src路径不变,读取不同图片时,图片不刷新甚至不显示
- 4_蒙特卡罗算法求圆周率PI
- 4_蒙特卡罗算法求圆周率PI
- 【Java多线程】-线程同步synchronized和volatile
- 学习如何学习
- hdu2433
- hdu2222Keywords Search AC自动机模板题
- ubuntu14.04 搭建java环境
- ZooKeeper集群配置
- 木头打大孔的新方法-燃烧法
- Processing 练习(10) - 条形码
- 新的征程
- yum ftp源搭建
- 使用GnuPG(PGP)加密信息及数字签名教程
- 矩阵模板
- 获取日期