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转化为八位无符号,或者归一化
    

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

  • 相关阅读:
    400 Bad Request
    Django 中间件 阅读目录 初步了解 中间件 中间件的介绍 自定义中间件 process_template_response(用的比较少) 中间件的执行流程 中间件版登录验证
    关于python语言优化的一些思考
    从系统角度考虑性能优化 【被面试官吊打】从系统角度考虑性能优化 目录 什么是性能? 定义系统范围 重定义功能 关注价值 总结
    需求设计
    开源软件评选白热化,这些项目冲击 Top 5
    两个向量的outer product
    协同过滤算法中皮尔逊相关系数的计算 C++
    求向量间的点积
    string 类型的翻转
  • 原文地址:https://www.cnblogs.com/mach-pupil/p/12535336.html
Copyright © 2011-2022 走看看