一、皮尔逊相关系数

在统计学中,皮尔逊相关系数( Pearson correlation coefficient),又称皮尔逊积矩相关系数(Pearson product-moment correlation coefficient,简称 PPMCC或PCCs),是用于度量两个变量X和Y之间的相关(线性相关),其值介于-1与1之间。

计算步骤参考下面文章的第七节相关性

机器学习笔记 - 数据和统计常用术语_bashendixie5的博客-CSDN博客从以下角度描述了数据及其统计方法。1、数据的类型定性与定量、离散或连续2、集中趋势的度量均值、中位数、众数、异常值、几何平均值、调和平均值、加权平均值。3、数据的采样随机采样、系统采样,分层采样,聚类样本等。4、数据分布的度量分位数、平均偏差、标准差和方差5、数据的比较单变量和双变量、离群值、相关性概念及其公式https://blog.csdn.net/bashendixie5/article/details/123613591

二、matlab计算相关性

1、示例1

按公式计算,A 和 B 高度相关。相关系数为1。

A= [1 4 7; 2 5 8; 3 6 9]
B = A*2%Find the average of the matrix A
meanA = mean2(A);%Find the average of the matrix B
meanB = mean2(B);%Subtract the average value from matrix A
Asub = A-meanA;%Subtract the average value from matrix B
Bsub = B-meanB;%Covariance of matrix A and matrix B
covAB = mean2(Asub.*Bsub);%Find the standard deviation of the matrix A
stdA = std(A(:),1);%Find the standard deviation of the matrix B
stdB = std(B(:),1);%Find the correlation Cofficient
Rho = covAB./(stdA*stdB)

2、示例2

使用corr2函数,C和D相关系数为 -1。

C= [1 4 7; 2 5 8; 3 6 9]
D = [9 6 3;8 5 2; 7 4 1];Rho = corr2(C,D)

三、模板匹配示例

原图

模板

1、使用normxcorr2函数

        参考代码

%Read an Image A(Template)
A1 = imread('benten.jpg');%Read the Target Image
B1 = imread('watch.jpg');A = A1(:,:,1);
B = B1(:,:,1);normx_corrmap=normxcorr2(B(:,:,1),A(:,:,1));maxptx = max(normx_corrmap(:));
[x1,y1]=find(normx_corrmap==maxptx);
figure,
imagesc(A1(x1-size(B,1):x1,y1-size(B,2):y1,:));axis image

运行结果如下

2、使用corr2函数

参考代码

%Read an Image A(Template)A1 = imread('图片/benten.jpg');%Read the Target ImageB1 = imread('图片/watch.jpg');A = A1(:,:,1);B = B1(:,:,1);corr_map = zeros([size(A,1),size(A,2)]);for i = 1:size(A,1)-size(B,1)for j = 1:size(A,2)-size(B,2)%Construct the correlation mapcorr_map(i,j) = corr2(A(i:i+size(B,1)-1,j:j+size(B,2)-1),B);endendfigure,imagesc(corr_map);colorbar;%Find the maximum valuemaxpt = max(corr_map(:));[x,y]=find(corr_map==maxpt);%Display the image from the templatefigure,imagesc(B1);title('Target Image');colormap(gray);axis imagegrayA = rgb2gray(A1);Res   = A;Res(:,:,1)=grayA;Res(:,:,2)=grayA;Res(:,:,3)=grayA;Res(x:x+size(B,1)-1,y:y+size(B,2)-1,:)=A1(x:x+size(B,1)-1,y:y+size(B,2)-1,:);figure,imagesc(Res);

运行结果如下

左:相关图(x,y)。右:匹配的位置

3、频域模板匹配

        基于傅里叶域中的归一化互相关。也称为相位相关。这里使用的两张图片是同一场景的不同快照。Image1.jpg用作模板图像,Image2.jpg的子图像用作目标图像。目标图像用零填充以匹配模板图像的大小。经过傅里叶变换后,模板信号与目标信号的共轭相乘并归一化。然后应用逆傅里叶,提取最大值对应的像素位置。

%Read two images of same scene
A = imread('Image1.jpg');
B = imread('Image2.jpg');figure,subplot(2,1,1);imagesc(A);title('Image 1');axis image
subplot(2,1,2);imagesc(B);title('Image 2');axis image

同一场景的不同快照

从图像矩阵B中裁剪一部分

B = imcrop(B,[58.5 49.5 226 102]);
figure,imagesc(B);title('sub Image - Image 2');axis image

应用傅里叶变换和逆变换

%Pad the image matrix B with zeros
B1 = zeros([size(A,1),size(A,2)]);
B1(1:size(B,1),1:size(B,2))=B(:,:,1);%Apply Fourier Transform
Signal1 = fftshift(fft2(A(:,:,1)));
Signal2 = fftshift(fft2(B1));%Mulitply Signal1 with the conjugate of Signal2
R = Signal1 .*conj(Signal2);%Normalize the result
Ph = R./abs(R);%Apply inverse fourier transform
IFT = ifft2(fftshift(Ph));figure,imagesc((abs((IFT))));colormap(gray);

计算得到相关图

查找最大值的像素位置,并从image1和image2中截取

%Find the maximum value
maxpt = max(real(IFT(:)));%Find the pixel position of the maximum value
[x,y]= find(real(IFT)==maxpt);figure,subplot(1,2,1);imagesc(A(x:x+size(B,1),y:y+size(B,2),:));axis image
subplot(1,2,2);imagesc(B);axis image

结果如下

MATLAB学习笔记 皮尔逊相关系数和模板匹配相关推荐

  1. OpenCV4学习笔记(19)——模板匹配

    本次要整理记录的内容是:模板匹配. 模板匹配可以说是一种最简单的模式识别方法,它的实现主要是通过模板图像在被匹配图像中的平移,在被匹配图像中逐个区域寻找和模板图像相似的区域,如果存在某区域的相似度大于 ...

  2. 【opencv学习笔记】028之模板匹配——matchTemplate函数详解

    目录 一.前言 二.模板匹配 1.模板匹配是个啥 2.常用匹配算法 1.平方差匹配-CV_TM_SQDIFF 2.标准平方差匹配-CV_TM_SQDIFF_NORMED 3.相关匹配-CV_TM_CC ...

  3. opencv学习笔记十八:模板匹配(cv2.matchTemplate、cv2.minMaxLoc)

    1.目标匹配函数:cv2.matchTemplate() res=cv2.matchTemplate(image, templ, method, result=None, mask=None) ima ...

  4. 数字图像处理MATLAB学习笔记(五)

    数字图像处理MATLAB学习笔记(五) Color Image Processing 1 Color Image Representation in MATLAB 这里不多说了,彩色图片在计算机中以R ...

  5. MATLAB学习笔记(二)

    MATLAB学习笔记(二) 一.矩阵运算 矩阵分析 向量和矩阵的范数运算 矩阵的秩 矩阵的化零矩阵 矩阵的化简rref()函数 线性方程组 超定线性方程组求解 矩阵分解 1.对称正定矩阵的Choles ...

  6. matlab 线性规划_从零开始的matlab学习笔记——(37)线性规划——后传

    matlab应用--求极限,求导,求积分,解方程,概率统计,函数绘图,三维图像,拟合函数,动态图,傅里叶变换,随机数,优化问题....更多内容尽在个人专栏:matlab学习 呼,终于将matlab的优 ...

  7. MATLAB学习笔记(十八)

    MATLAB学习笔记(十八) 一.Simulink仿真基础 1.1 Simulink的启动 1.2 系统仿真模型的创建 1.3 仿真参数的设置 1.4 总结 二.子系统的创建与封装 2.1 子系统的创 ...

  8. Matlab学习笔记5——fprintf

    Matlab学习笔记5--fprintf 将数据写入文本文件 语法 fprintf(fileID,formatSpec,A1,-,An) fprintf(formatSpec,A1,-,An) nby ...

  9. Matlab学习笔记(3)—GUI程序设计与图像处理基本操作

    Matlab学习笔记(3)-GUI程序设计与图像处理基本操作 一.GUI程序设计 如果想要开始使用Matlab进行GUI编程,首先需要进入Matlab的GUI界面对GUI有一个基本的认识. 1.gui ...

最新文章

  1. Yii2 HOW-TO(2):最佳实践(1)
  2. Intel VT学习笔记(五)—— 调试技巧
  3. 15分钟了解Apache Phoenix(HBase的开源SQL引擎)
  4. java日期用什么属性_java日期以及使用Java反射机制遍历实体类的属性和类型
  5. Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException: Request body too large
  6. 三个流行MySQL分支的对比
  7. 【pytest之allure测试报告使用】
  8. HashMap底层实现原理
  9. 树莓派ssh远程登录连接默认账号密码
  10. 从freenom获取免费中文域名
  11. STM32操作增量式编码器(一)----使用外部中断实现测速
  12. 电烙铁使用方法总结集合
  13. 最新PyCharm基本使用(3)------编码(Code)、重构(Refactor)
  14. MinMax极小极大算法 (The Minimax Algorithm)
  15. 采用seam2的工具创建seam工程
  16. 关于微信小程序通讯录人名分组的实现
  17. 屏幕的背光是什么呢?
  18. 中国铷铯及其化合物行业研究与投资前景报告(2022版)
  19. 基于CTP的程序化交易系统开…
  20. php中seo优化怎么做,专题页面怎么做SEO优化

热门文章

  1. Mac电脑如何卸载Sophos防病毒软件?
  2. 新浪服务器安装系统,IBM System X 服务器 MicroSoft系统安装实战
  3. 汇编寄存器之内存访问
  4. 基于Pandas和PyEcharts的当当网图书信息可视化分析
  5. 线索二叉树(图解+完整代码)
  6. linux 繁体中文转为简体,中文繁简转换及其转换工具.pdf
  7. 阿里二面,面试官:说说 Java CAS 原理?
  8. 原生混合云 — 经政企打磨方能赢得政企信任
  9. 如何使用kali操作系统进行ddos攻击
  10. DATABASE Elderly care