前言:
此时兄弟们对“matlab相关系数图”大体比较重视,兄弟们都想要分析一些“matlab相关系数图”的相关资讯。那么小编同时在网络上网罗了一些对于“matlab相关系数图””的相关文章,希望兄弟们能喜欢,看官们一起来了解一下吧!@TOC
加密性能分析(一)相邻像素相关性的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:n
up=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;
end
down=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:n
if x_coor(1,i)==N
y_coor(1,i)=1;
end
if x_coor(1,i)<N
y_coor(1,i)=x_coor(1,i)+1;
end
y_coor(2,i)=x_coor(2,i);
end
end
if choose==2
%垂直
for i=1:n
if x_coor(2,i)==M
y_coor(2,i)=1;
end
if x_coor(2,i)<M
y_coor(2,i)=x_coor(2,i)+1;
end
y_coor(1,i)=x_coor(1,i);
end
end
if choose==3
%对角
for i=1:n
if x_coor(1,i)==N
y_coor(1,i)=1;
end
if x_coor(1,i)<N
y_coor(1,i)=x_coor(1,i)+1;
end
if x_coor(2,i)==M
y_coor(2,i)=1;
end
if x_coor(2,i)<M
y_coor(2,i)=x_coor(2,i)+1;
end
end
end
x=ones(1,n);
y=ones(1,n);
%获取像素值
for i=1:n
x(i)=image(x_coor(2,i),x_coor(1,i));
y(i)=image(y_coor(2,i),y_coor(1,i));
end
l=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==1
for i=1:M
for j=1:N
x(num)=img(i,j);
if j==N
y(num)=img(i,1);
end
if j<N
y(num)=img(i,j+1);
end
num=num+1;
end
end
end
if choose==2
for i=1:M
for j=1:N
x(num)=img(i,j);
if i==M
y(num)=img(1,j);
end
if i<M
y(num)=img(i+1,j);
end
num=num+1;
end
end
end
if choose==3
for i=1:M
for j=1:N
x(num)=img(i,j);
if i<M && j<N
y(num)=img(i+1,j+1);
end
if i<M && j==N
y(num)=img(i+1,1);
end
if i==M && j<N
y(num)=img(1,j+1);
end
if i==M && j==N
y(num)=img(1,1);
end
num=num+1;
end
end
end
s=ones(2,M*N);
s(1,:)=x;
s(2,:)=y;
标签: #matlab相关系数图 #matlab求相关系数代码