加密性能分析(一)相邻像素相关性的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. golang trace view 视图详解

    大家好,我是蓝胖子,在golang中可以使用go pprof的工具对golang程序进行性能分析,其中通过go trace 命令生成的trace view视图对于我们分析系统延迟十分有帮助,鉴于当前对 ...

  2. C++火车头优化

    代码如下(加在头文件前): 1 #pragma GCC optimize(3) 2 #pragma GCC target("avx") 3 #pragma GCC optimize ...

  3. 文心一言 VS 讯飞星火 VS chatgpt (77)-- 算法导论7.3 2题

    二.如果用go语言,在 RANDOMIZED-QUICKSORT 的运行过程中,在最坏情况下,随机数生成器 RANDOM 被调用了多少次?在最好情况下呢?以θ符号的形式给出你的答案? 文心一言: 在 ...

  4. ETL之apache hop系列2-hop web安装和入门

    前言 在Docker安装apache hop 首先确保Docker已经安装和运行Java 11 JDK 安装文档参考:https://blog.csdn.net/Chia_Hung_Yeh/artic ...

  5. Auto-GPT免费尝鲜之初体验-使用攻略和总结

    写在前面的废话 ChatGPT 的交互模式,是和一个 "人" 对话聊天. 如果你想了解更多ChatGPT和AI绘画的相关知识,请参考:ChatGPT注册和变现思路,AI绘画教程汇总 ...

  6. HDLbits_Conwaylife

    题目介绍 题目链接 Conwaylife 简介 题目要求我们实现一个康威生命游戏的电路. 该游戏在一个二维网格空间中进行,在该题目中是 16 * 16 的大小,每一个格子都有两种状态(0 或 1),代 ...

  7. 谷粒商城微服务分布式高级篇:linux下使用docker安装ElasticSearch

    [root@localhost ~]# docker pull elasticsearch:7.8.0 安装elasticsearch:7.8.0[root@localhost ~]# docker ...

  8. 机器学习(6)K近邻算法

    k-近邻,通过离你最近的来判断你的类别 例子: 定义:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近的样本中大多数属于某一类别),则该样本属于这个类别 K近邻需要做标准化处理 例如: imp ...

  9. WASI support in Go

    原文在这里. 由 Johan Brandhorst-Satzkorn, Julien Fabre, Damian Gryski, Evan Phoenix, and Achille Roussel 发 ...

  10. 【.NET8】访问私有成员新姿势UnsafeAccessor(上)

    前言 前几天在.NET性能优化群里面,有群友聊到了.NET8新增的一个特性,这个类叫UnsafeAccessor,有很多群友都不知道这个特性是干嘛的,所以我就想写一篇文章来带大家了解一下这个特性. 其 ...