相邻像素相关性的matlab实现

文章介绍了如何使用MATLAB进行图像加密性能分析,特别是针对相邻像素的相关性。通过计算相关系数和绘制相邻像素分布图,评估加密算法是否能降低相邻像素的相关性。提供的代码示例包括抽取相邻像素、计算相关系数以及生成相邻像素分布图的函数。
摘要由CSDN通过智能技术生成

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

相邻像素相关性

(一)概念

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

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

​ 首先上公式:

img

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

    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;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值