MATLAB 图像加密处理(二)

在加密过程中,需要产生加密密钥,对于密钥,采用混沌序列的方式生成。

一、对于二值图像
二值图像中所有的像素点,只有两个值,即0、1,或者是其他取值0、255,生成公式采用下面的公式:
在这里插入图片描述
当混沌序列的数值大于零时,取值唯一,当混沌序列的值小于等于零时,取值为零,当然,等于号的位置任意。其实,该函数可以随意定义,当x的取值由大于零的值分界,其中黑色点较多,反之,则是白色点的值较多。

生成二值混沌图像的代码如下:

%% 生成二值混沌图像
n=512;
m=512;
x=zeros(m,n);
x(1)=0.98;
for i=2:n*m
    x(i)=1-2*x(i-1)*x(i-1);
end
for i=1:n*m
    if x(i)<=0
        x(i)=0;
    else x(i)>0
        x(i)=1;
    end
end
imshow(x);

生成图片如下:
在这里插入图片描述
二、对于灰度图像
灰度图像中的所有的像素值在0~255之间,生成灰度图像的重点是将[-1,1]之间的混沌序列映射到[0,225]之间,采用的办法为取余法。

%GOI=mod(OI*1000000000,256)%mod(a,b)函数返回a/b的余数

其中OI为混沌序列,GOI为灰度序列。

生成灰度图像的代码如下所示:

%% 生成灰度混沌系统
%将混沌系统中的数值乘以一个很大的数,并对256取余
%GOI=mod(OI*1000000000,256)%mod(a,b)函数返回a/b的余数
n=512;
m=512;
x=zeros(m,n);
x(1)=0.98;
for i=2:n*m
    x(i)=1-2*x(i-1)*x(i-1);
end
for i=1:n*m
x(i)=mod(round(x(i)*999998391829),256);
end
imshow(x,[]);

在这里插入图片描述
三、对于彩色图像
在MATLAB中,彩色图像以三维的矩阵的形式存在,分为R、G、B三层。生产方法,将三个灰度矩阵链接起来就可以了。

矩阵链接方法:

%cat(n,a,b)函数
%当n=1时,表示按列将ab链接到一起
%当n=2时,按行链接到一起
%当n=3是,按更高维将ab链接到一起

生成彩色图像代码如下:

%% 生成彩色混沌系统

%生成r空间
r=zeros(512,512);
r(1)=0.98;
for i=2:512*512
    r(i)=1-2*r(i-1)*r(i-1);
end
for i=1:512*512
    r(i)=mod(round(r(i)*98888888888),256);
end

%生成g空间
g=zeros(512,512);
g(1)=0.98001;
for i=2:512*512
    g(i)=1-2*g(i-1)*g(i-1);
end
for i=1:512*512
    g(i)=mod(round(g(i)*98888888888),256);
end

%生成b空间
b=zeros(512,512);
b(1)=0.9700001839;
for i=2:512*512
    b(i)=1-2*b(i-1)*b(i-1);
end
for i=1:512*512
    b(i)=mod(round(b(i)*98888888888),256);
end

hu=zeros(512,512,3);
hu=cat(3,r,g,b);
imshow(uint8(hu));%将hu转化为八位无符号,或者归一化

生成图像如下:
在这里插入图片描述

  • 5
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱读书的小丁同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值