龙空技术网

相邻像素相关性的matlab实现

mmm晴朗 63

前言:

此时兄弟们对“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求相关系数代码