matlab分析两组数据之间相关性 (彩色图像相关性matlab代码)

@TOC

加密性能分析(一)相邻像素相关性的matlab实现

相邻像素相关性

(一)概念

相邻像素相关性反映图像相邻位置像素值的相关程度。好的图像加密算法应该能降低相邻像素的相关性,尽量达到零相关。一般要分析图像的水平、垂直、对角像素三个方面。本文中将给出相关系数和分布图像的matlab实现代码。

(二)相邻像素的相关系数

首先上公式:

图片像素回归分析matlab,matlab统计连通域像素值

公式解释:在图像的灰度像素值矩阵中随机抽取N 对相邻像素,xi 和yi 是某对相邻像素的像素值。

matlab实现:作用:计算相关系数输入:x 一组像素值y x对应的相邻像素输出:l N对相邻像素值的相关系数

function l=coefficient_of_association (x,y)%求相关系数mean_x=mean(x);mean_y=mean(y);n=length(x);up=0;sum_x=0;sum_y=0;for i=1:nup=up+(x(i)-mean_x)*(y(i)-mean_y);sum_x=sum_x+(x(i)-mean_x)^2;sum_y=sum_y+(y(i)-mean_y)^2;enddown=sqrt(sum_x*sum_y);l=up/down;

作用:随机抽取n对相邻像素

输入:image 图像的灰度图矩阵choose 水平、垂直、对角选择n 随机抽样的相邻像素对数,n<=M*N输出:l n对相邻像素值的相关系数

function l=Correlation_of_adjacent_pixels(image,choose,n)%抽取n对相邻像素%choose 选择1水平,2垂直,3对角%n 抽样对数image=double(image);[M,N]=size(image);%M行N列x_coor(1,:)=randi([1 N],1,n);%x序列x坐标x_coor(2,:)=randi([1 M],1,n);%x序列y坐标y_coor=ones(2,n);%y序列坐标if choose==1%水平for i=1:nif x_coor(1,i)==Ny_coor(1,i)=1;endif x_coor(1,i)<Ny_coor(1,i)=x_coor(1,i)+1;endy_coor(2,i)=x_coor(2,i);endendif choose==2%垂直for i=1:nif x_coor(2,i)==My_coor(2,i)=1;endif x_coor(2,i)<My_coor(2,i)=x_coor(2,i)+1;endy_coor(1,i)=x_coor(1,i);endendif choose==3%对角for i=1:nif x_coor(1,i)==Ny_coor(1,i)=1;endif x_coor(1,i)<Ny_coor(1,i)=x_coor(1,i)+1;end if x_coor(2,i)==My_coor(2,i)=1;endif x_coor(2,i)<My_coor(2,i)=x_coor(2,i)+1;endendendx=ones(1,n);y=ones(1,n);%获取像素值for i=1:nx(i)=image(x_coor(2,i),x_coor(1,i));y(i)=image(y_coor(2,i),y_coor(1,i));endl=coefficient_of_association(x,y);

(三)相邻像素分布图

相邻像素分布图其实就是x坐标为图像灰度矩阵某像素值,y坐标为对应的相邻像素值的图像。

matlab实现:作用:生成相邻像素分布图的x坐标和y坐标的矩阵输入:img 图像灰度矩阵choose 水平、垂直、对角选择输出:s 二维矩阵,第一行为x坐标集合,第二行为y坐标集合

%像素相关图function s=Pixel_correlation_diagram(choose,img)%choose 1.水平相关 2.垂直相关 3.对角相关[M,N]=size(img);%M行N列x=ones(1,M*N);y=ones(1,M*N);num=1;if choose==1for i=1:Mfor j=1:Nx(num)=img(i,j);if j==Ny(num)=img(i,1);endif j<Ny(num)=img(i,j+1);endnum=num+1;endendendif choose==2for i=1:Mfor j=1:Nx(num)=img(i,j);if i==My(num)=img(1,j);endif i<My(num)=img(i+1,j);endnum=num+1;endendendif choose==3for i=1:Mfor j=1:Nx(num)=img(i,j);if i<M && j<Ny(num)=img(i+1,j+1);endif i<M && j==Ny(num)=img(i+1,1);endif i==M && j<Ny(num)=img(1,j+1);endif i==M && j==Ny(num)=img(1,1);endnum=num+1;endendends=ones(2,M*N);s(1,:)=x;s(2,:)=y;