图像相似度计算方法和代码实现
互相关系数计算原理
在计算机视觉中,互相关系数常用于比较两幅图像的相似程度。
互相关系数的取值范围为[-1, 1]。如果互相关系数为1,则表示两个随机变量完全正相关,如果为-1,则表示两个随机变量完全负相关,如果为0,则表示两个随机变量之间不存在线性关系。
两幅图像的互相关系数反映的是两幅图像之间像素值的线性关系强度,通常用于比较两幅图像之间的相似性。
计算两幅图像的互相关系数的基本流程如下:
将两幅图像转换为灰度图像,得到两个灰度图像I和T。
分别计算两幅图像的均值μI和μT,以及它们的标准差σI和σT。
对于每个像素位置(i, j),分别将I和T在该位置的像素值减去它们的均值,得到两个新的像素值xi和yi。
对于每个像素位置(i, j),计算xi和yi的乘积,然后将所有乘积值相加,得到一个互相关系数的分子sum。
将分子sum除以像素总数,即图像的宽度×高度,得到互相关系数的值correlation。
代码实现
#include <stdio.h>
#include <stdlib.h>
#include <math.h>#define WIDTH 640
#define HEIGHT 480int main()
{// 读取两幅灰度图像unsigned char img1[WIDTH * HEIGHT];unsigned char img2[WIDTH * HEIGHT];FILE* fp1 = fopen("image1.raw", "rb");FILE* fp2 = fopen("image2.raw", "rb");fread(img1, sizeof(unsigned char), WIDTH * HEIGHT, fp1);fread(img2, sizeof(unsigned char), WIDTH * HEIGHT, fp2);fclose(fp1);fclose(fp2);// 计算两幅图像的平均灰度值double mean1 = 0, mean2 = 0;for (int i = 0; i < WIDTH * HEIGHT; i++){mean1 += img1[i];mean2 += img2[i];}mean1 /= (WIDTH * HEIGHT);mean2 /= (WIDTH * HEIGHT);// 计算两幅图像的方差double var1 = 0, var2 = 0;for (int i = 0; i < WIDTH * HEIGHT; i++){var1 += pow(img1[i] - mean1, 2);var2 += pow(img2[i] - mean2, 2);}var1 /= (WIDTH * HEIGHT);var2 /= (WIDTH * HEIGHT);// 计算互相关系数double sum = 0;for (int i = 0; i < WIDTH * HEIGHT; i++){sum += (img1[i] - mean1) * (img2[i] - mean2);}double corr = sum / (WIDTH * HEIGHT * sqrt(var1 * var2));// 判断是否移动if (corr > 0.9){printf("The images are similar. There is no movement.\n");}else{printf("The images are not similar. There is movement.\n");}return 0;
}
运行结果:
位移为0的两幅图像相关系数的值为>0.9
图像相似度计算方法和代码实现相关推荐
- 简单的图像相似度计算方法
文章目录 塑料瓶图像检测 说明 1.方法 2.测试结果(单张图片比对) 直方图 互信息 余弦相似度 感知哈希算法 3.评价 塑料瓶图像检测 目的:用于判断一张图片是否为塑料瓶: 条件:总计300多张图 ...
- linux图片相似度检测软件下载,移动端图像相似度算法选型
概述 电商场景中,卖家为获取流量,常常出现重复铺货现象,当用户发布上传图像或视频时,在客户端进行图像特征提取和指纹生成,再将其上传至云端指纹库对比后,找出相似图片,杜绝重复铺货造成的计算及存储资源浪费 ...
- CV之FD之HOG:图像检测之基于HOG算法、简介、代码实现(计算图像相似度)之详细攻略
CV之FD之HOG:图像检测之基于HOG算法.简介.代码实现(计算图像相似度)之详细攻略 图像检测之基于HOG算法.简介.代码实现(计算图像相似度)之详细攻略 相关文章:CV之FD之HOG:图像检测之 ...
- 文本相似度几种计算方法及代码python实现
文本相似度的计算广泛的运用在信息检索,搜索引擎, 文档复制等处: 因此在各种不同的情况与任务中,有不同的文本相似度计算. 方法1 编辑距离 编辑距离又称Levenshtein距离,是指将一个字符串转为 ...
- 计算图像相似度——《Python也可以》之一
计算图像相似度--<Python也可以>之一 声明:本文最初发表于赖勇浩(恋花蝶)的博客http://blog.csdn.net/lanphaday,如蒙转载,敬请确保全文完整,未经同意, ...
- 计算图像相似度——《Python也可以》之一(转)
声明:本文最初发表于赖勇浩(恋花蝶)的博客http://blog.csdn.net/lanphaday,如蒙转载,敬请确保全文完整,未经同意,不得用于商业用途. 关于<Python也可以> ...
- 图像相似度测量与模板匹配总结
摘要 本文主要总结了进行目标跟踪.检测中经常使用到的图像相似度测量和模板匹配方法,并给出了具体的基于OpenCV的代码实现. 引言 模板匹配是一种在源图像中寻找与图像patch最相似的技术,常常用来进 ...
- 图像相似度算法的C#实现及测评
近日逛博客的时候偶然发现了一个有关图片相似度的Python算法实现.想着很有意思便搬到C#上来了,给大家看看. 闲言碎语 才疏学浅,只把计算图像相似度的一个基本算法的基本实现方式给罗列了出来,以至于在 ...
- 图像类似度測量与模板匹配总结
摘要 本文主要总结了进行目标跟踪.检測中常常使用到的图像相似度測量和模板匹配方法,并给出了详细的基于OpenCV的代码实现. 引言 模板匹配是一种在源图像中寻找与图像patch最相似的技术,经常常使用 ...
最新文章
- 学python要多少钱-培训python大概要多少钱?
- 首次提出“智能经济形态”,与实体经济深度融合
- 解决IDEA2020控制台乱码的方法(亲测)
- Angular2 从搭建环境到开发
- Spring远程调用技术1-RMI
- 《Unit Testing》2.1 经典学派如何做测试隔离
- 华硕 RT-AC54U路由器固件功能说明
- js中prototype用法
- scrapy简单爬取图片
- Js中对URL进行转码与解码
- 卸载Microsoft Edge浏览器
- acme 生成通配符 SSL 证书
- 人再囧途之泰囧bd高清版
- 网站被百度提示安全风险拦截后如何快速申请解封
- 普通程序员如何走出困境?
- 算术表达式求值演示(C/C++实现)
- 机械硬盘计算机管理,机械硬盘怎么分区
- 关于2020年测绘资质新旧变化一览表
- CMU 11-785 L16 Connectionist Temporal Classification
- 201671010434王雯涵--实验三:作业互评与改进