图像匹配算法NCC(Normalized Cross Correlation)的python实现

背景

相关系数其实就是皮尔森系数,一般是在概率中判断两个随机变量的相关性,公式为:
在这里插入图片描述
其中,Cov(X,Y)表示的是随机变量X,Y的协方差。D(X)与D(Y)则分别表示随机变量X,Y的方差。皮尔森系数的值域为[-1,1],系数越接近1表明这两个随机变量越相关,越接近-1表明这两个随机变量越不相关。讲到这里,突然想起概率中讲的一句话: 独 立 一 定 不 相 关 , 不 相 关 不 一 定 独 立 \color{#FF3030}{独立一定不相关,不相关不一定独立}

然而也可以利用皮尔森系数计算两张图片的相关性。

代码

import numpy as np
import cv2

im1 = '1.png'
im2 = '0.png'
img1 = cv2.imread(im1)
img2 = cv2.imread(im2)

# 图片2的标准差
print(np.std(img2))
# 相关系数,这里使用的是有偏估计
print(np.mean(np.multiply((img1-np.mean(img1)),(img2-np.mean(img2))))/(np.std(img1)*np.std(img2)))

输出结果

在这里插入图片描述

Reference

1.NCC(Normalized Cross Correlation)归一化互相关原理和C++代码实现
2.图像配准】基于灰度的模板匹配算法(一):MAD、SAD、SSD、MSD、NCC、SSDA、SATD算法

你可能感兴趣的:(音乐生成)