[已解决] Logistic混沌序列 怎么改变左右赋值不等 (新人)

[复制链接]
刘为. 发表于 2022-9-17 09:45:02
clc,clear all,close all
A=imread('Lena.bmp');
imshow(A); title('原图')
[M,N]=size(A);%原始图像A的尺寸一MxN
u1=4;u2=4;x1(1)=0.2;x2(1)=0.7;
sumA=sum(sum(A));  
k=mod(sumA,512)*1.0/255;
x1(1)=(x1(1)+k)/2; x2(1)=(x2(1)+k)/2;  
y1(1)=(1/3.1415926)*asin(sqrt(x1(1)));
y2(1)=(1/3.1415926)*asin(sqrt(x2(1)));  
for i=1:1:M*N-1 %产生2个Logistic混沌序列   
    x1(i+1)=u1*x1(i)*(1-x1(i));   
    x2(i+1)=u2*x2(i)*(1-x2(i));
end
for i=1:1:M*N  %改造2个Logistic,得到两个y序列
      y1(i)=(1/3.1415926)*asin(sqrt(x1(i)));   
      y2(i)=(1/3.1415926)*asin(sqrt(x2(i)));
end
n=1;  
for i=1:1:M   %由yl和y2序列对原图像进行值替代加密     
    for j=1:1:N        
        if mod(n,1)==0           
            k(n)=mod(floor(y1(n)*10^15),512);      
        else
            k(n)=mod(floor(y2(n)*10^15),512);      
        end
        A1(i,j)=bitxor(A(i,j),k(n));  %得到加密像素      
        n=n+1;     
    end
end
figure,imshow(A1);title('混沌加密图像')  %输出得到的加密图像
n=1;  
for i=1:1:M     
    for j=1:1:N         
        if mod(n,1)==0            
            k(n)=mod(floor(y1(n)*10^15),512);         
        else
            k(n)=mod(floor(y2(n)*10^15),512);         
        end
        A2(i,j)=bitxor(A1(i,j),k(n));  %得到加密像素      
        n=n+1;     
    end
end
figure,imshow(A2);title('解密图像')  %输出得到的解密图像
这组代码只能读取lena256的图 需要怎么改 可以读取512的图

最佳答案


lyqmath 发表于 2022-9-19 09:09:15
本帖最后由 lyqmath 于 2022-9-19 09:10 编辑


像素范围统一为0~255,所以像素范围的mod不应该设置为512


更多的可参考
《视觉大数据智能分析算法实战》[刘衍琦等]



修改如下:

  1.         if mod(n,1)==0
  2.             k(n)=mod(floor(y1(n)*10^15),256);
  3.         else
  4.             k(n)=mod(floor(y2(n)*10^15),256);
  5.         end


复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复此楼

3 条回复


lyqmath 发表于 2022-9-19 09:09:15
本帖最后由 lyqmath 于 2022-9-19 09:10 编辑


像素范围统一为0~255,所以像素范围的mod不应该设置为512


更多的可参考
《视觉大数据智能分析算法实战》[刘衍琦等]



修改如下:

  1.         if mod(n,1)==0
  2.             k(n)=mod(floor(y1(n)*10^15),256);
  3.         else
  4.             k(n)=mod(floor(y2(n)*10^15),256);
  5.         end


复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复此楼

刘为. 发表于 2022-9-21 00:09:35
lyqmath 发表于 2022-9-19 09:09
像素范围统一为0~255,所以像素范围的mod不应该设置为512

如果改为读取像素为0-512的话 拿需要怎么改呢 大佬

lyqmath 发表于 2022-9-21 10:36:06
刘为. 发表于 2022-9-21 00:09
如果改为读取像素为0-512的话 拿需要怎么改呢 大佬

像素值范围一般为0~255,如果是0~512,可以修改为mod 512,也可以变换为0~255范围并按之前的方式。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表