zoukankan      html  css  js  c++  java
  • 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转化为八位无符号,或者归一化
    

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

  • 相关阅读:
    为什么叫做重叠端口?
    为什么叫做重叠端口?
    拷贝构造函数的参数为什么必须使用引用类型
    拷贝构造函数的参数为什么必须使用引用类型
    2018 网易校招题目
    似友非友?
    贫穷与富有
    (OK) Android
    Android
    (OK) Android
  • 原文地址:https://www.cnblogs.com/mach-pupil/p/12535336.html
Copyright © 2011-2022 走看看