加密性能分析(一)相邻像素相关性的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. sql相关小知识—

    数据库系统达到了数据独立性是因为采用了三级模式结构 人们为数据库设计了一个严谨的体系结构,数据库领域公认的标准结构是三级模式结构,它包括外模式.概念模式.内模式,有效地组织.管理数据,提高了数据库的逻 ...

  2. 【Azure API Management】实现在API Management服务中使用MI(管理标识 Managed Identity)访问启用防火墙的Storage Account

    问题描述 在Azure的同一数据中心,API Management访问启用了防火墙的Storage Account,并且把APIM的公网IP地址设置在白名单.但访问依旧是403 原因是: 存储帐户部署 ...

  3. EasyExcel · 写excel

    原文地址 通用数据生成 后面不会重复写 private List<DemoData> data() { List<DemoData> list = ListUtils.newA ...

  4. 一个Web项目实现多个数据库存储数据并相互切换

    1.使用场景 多数据源使用场景一般为: 主从数据库切换 读写分离 兼容旧库 2.具体实现 实现原理 Spring2.x的版本中采用Proxy模式,就是在方案中实现一个虚拟的数据源,并且用它来封装数据源 ...

  5. Robot Framework 自动化测试随笔(二)

    二.Web自动化(1) 1.安装selenium2library库 pip install robotframework-selenium2library   2.指定报告的生成路径 在[Run]标签 ...

  6. 洛谷 P1122 最大子树和 题解

    一道入门的树形DP. 首先我们对于数据进行有序化处理,这便于我们利用数据结构特点(可排序性)来发觉数据性质(有序.单调.子问题等等性质),以便于后续的转化.推理和处理.有序化可以"转化和创造 ...

  7. 从零玩转系列之微信支付实战PC端项目构建+页面基础搭建 | 技术创作特训营第一期

    一.前言 欢迎来到本期的博客!在这篇文章中,我们将带您深入了解前端开发领域中的一个热门话题: 如何使用 Vue 3 和 Vite 构建前端项目.随着现代 Web 应用程序的需求不断演进, 选择适当的工 ...

  8. 4、Mybatis核心配置文件详解

    4.1.environments <!-- environments标签:配置多个连接数据库的环境 default属性:设置默认使用的环境的id --> <environments ...

  9. KIOPTRIX: LEVEL 1.1 (#2) 常规命令注入+内核提权

    0×02 Vulnhub靶机渗透总结之 KIOPTRIX: LEVEL 1.1 (#2) 系列专栏:Vulnhub靶机渗透系列 欢迎大佬:点赞️收藏关注 首发时间: 2023年8月20日 如有错误 还 ...

  10. AI绘画StableDiffusion实操教程:月光下的美人(含高清图片)

    本教程收集于:AIGC从入门到精通教程汇总 今天继续分享AI绘画实操教程,如何用lora包生成超真实好看质感超强的人物图片. 放大高清图已放到教程包内,需要的可以自取. 出图效果: 更多图片资源访问查 ...