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

相邻像素相关性

(一)概念

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

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

​ 首先上公式:

​ 公式解释:在图像的灰度像素值矩阵中随机抽取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;

相邻像素相关性的matlab实现的更多相关文章

  1. 图像像素灰度内插(Matlab实现)

    常用的像素灰度内插法:最近邻元法.双线性内插法.三次内插法 %%像素灰度内插 factor = 0.75;%缩放比 u = 0.6;v = 0.7; itp1 = uint8(zeros(ceil(h ...

  2. 在图像中随机更改像素值程序——matlab

    I=imread('C:\Users\wangd\Desktop\result3.png'); % m = rgb2gray(I); % r = unidrnd(,,); %产生一个1*100的数组, ...

  3. matlab练习程序(Moravec算子)

    这个算子算是图像历史上第一个特征点提取算法了,1977年提出的,很简单,拿来练手很合适. 算法原理如下: 1.选取一个合理的邻域遍历图像,这里是5*5邻域的.在邻域中依次计算,垂直,水平,对角与反对角 ...

  4. MatLab角点检測(harris经典程序)

    http://blog.csdn.net/makenothing/article/details/12884331 这是源博客的出处,鄙人转过来是为了更好的保存!供大家一起学习!已将原始的博客的文章的 ...

  5. 马尔科夫随机场(MRF)及其在图像降噪中的matlab实现

    (Markov Random Field)马尔科夫随机场,本质上是一种概率无向图模型 下面从概率图模型说起,主要参考PR&ML 第八章 Graphical Model (图模型) 定义:A g ...

  6. OpenCV2计算机编程手册(一)操作像素

    1. 引言 从根本上来说,一张图像是一个由数值组成的矩阵.这也是opencv中使用 代表黑色,代表白色.对于彩色图像(BGR三通道)而言,每个像素需要三个这样的8位无符号数来表示,这种情况下,矩阵的元 ...

  7. MATLAB图像处理函数汇总(二)

    60.imnoise 功能:增加图像的渲染效果. 语法: J = imnoise(I,type) J = imnoise(I,type,parameters) 举例 I = imread('eight ...

  8. Paper | 帧间相关性 + 压缩视频质量增强(MFQE)

    目录 1. ABSTRACT 2. INTRODUCTION 3. RELATED WORKS 3.1. Quality Enhancement 3.2. Multi-frame Super-reso ...

  9. OpenCV操作像素

    在了解了图像的基础知识和OpenCV的基础知识和操作以后,接下来我们要做的就对像素进行操作,我们知道了图像的本质就是一个矩阵,那么一个矩阵中存储了那么多的像素,我们如何来操作呢?下面通过几个例子来看看 ...

  10. OpenCV 学习之路(2) -- 操作像素

    本节内容: 访问像素值 用指针扫描图像 用迭代器扫描图像 编写高效的图像扫描循环 扫描图像并访问相邻像素 实现简单的图像运算 图像重映射 访问像素值 准备工作: 创建一个简单函数,用它在图像中加入椒盐 ...

随机推荐

  1. 说说 Go 语言的坑(二)

    上一篇文章 说说 Go 语言 for-range 的坑 说的是 for-range 的,工作中,其实还是遇到蛮多奇奇怪怪的问题,这里也顺便整理了一下,就当作是续集:) 先继续看 for-range 的 ...

  2. 3D相册 复仇者联盟

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  3. Django链接数据库出现的错误以及解决方法

    问题一:django.db.utils.OperationalError: (1045, "Access denied for user 'leo'@'localhost' (using p ...

  4. 合并两个不同远程仓库的Git命令

    一.需求场景描述 远程仓库A:http://XXXA.git 远程gitlab,团队协作开发主仓库,新仓库 远程仓库B:http://XXXB.git 旧仓库 从A仓库和B仓库,都对同一个项目进行过开 ...

  5. 2023-08-12:用go语言写算法。实验室需要配制一种溶液,现在研究员面前有n种该物质的溶液, 每一种有无限多瓶,第i种的溶液体积为v[i],里面含有w[i]单位的该物质, 研究员每次可以选择一瓶

    2023-08-12:用go语言写算法.实验室需要配制一种溶液,现在研究员面前有n种该物质的溶液, 每一种有无限多瓶,第i种的溶液体积为v[i],里面含有w[i]单位的该物质, 研究员每次可以选择一瓶 ...

  6. Airtest的iOS实用接口介绍

    1. 前言 前段时间Airtest更新了1.3.0.1版本,里面涉及非常多的iOS功能新增和改动,今天想详细跟大家聊一下里面的iOS设备接口. PS:本文示例均使用本地连接的iOS设备,Airtest ...

  7. 52条SQL语句,性能优化!

    52条SQL语句,性能优化! SQL语句性能优化 1, 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2,应尽量避免在 where 子句中对 ...

  8. QA|不同模块之间的引用(导入问题)问题;|Pycharm

    结构如图,在xxu的test.py中想要导入t2包中的sayhello和word两个方法 注意:首先需要打开xxu和t2的上层目录,因为解释器是从打开的那个文件开始查找的,所以这里应该打开B01_01 ...

  9. 用OLED屏幕播放视频(1): 项目介绍

    下面的系列文章记录了如何使用一块linux开发扳和一块OLED屏幕实现视频的播放: 项目介绍 为OLED屏幕开发I2C驱动 使用cuda编程加速视频处理 这篇文章主要对项目的实现做整体的介绍, 包括硬 ...

  10. 循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(3)--自定义用户控件

    在我们创建界面元素的时候,不管在Vue3+ElementPlus的前端上,还是Winform桌面端上,都是会利用自定义用户控件来快速重用一些自定义的界面内容,对自定义用户控件的封装处理,也是我们开发W ...