zoukankan      html  css  js  c++  java
  • shamir叠像术 分类: 图像处理 2015-07-08 16:50 17人阅读 评论(1) 收藏


    K=imread('SHNU.bmp');

    height=info.Height;
    width=info.Width;
    A=zeros(height,width);
    B=zeros(height,width);
    C=zeros(height,width);
    % 随机生成A,B,C矩阵
    for i=1: height
       for j=1: width
        random=rand()*2; 
            if(random>1) 
                A(i,j)=1;B(i,j)=1;C(i,j)=1; 
            else 
                A(i,j)=0;B(i,j)=0;C(i,j)=0; 
            end 
        end 
    end
    %%%%%生成子秘钥A,B,C图片
    for i=1: height
        for j=1: width
            if(K(i,j)==0)
            random=rand()*4;
                
                if(random<1)
                        A(i,j)=0;A(i,j+1)=0;A(i+1,j)=1;A(i+1,j+1)=1;
                    
                   
                        B(i,j)=0;B(i+1,j)=0;B(i,j+1)=1;B(i+1,j+1)=1;
                    
                    
                        C(i,j)=0;C(i+1,j+1)=0;C(i,j+1)=1;C(i+1,j)=1;
                   
              
                    
                else if(random<2)
                        
                      A(i,j)=0;A(i,j+1)=0;A(i+1,j)=1;A(i+1,j+1)=1;
                        
                      C(i,j+1)=0;C(i+1,j)=0;C(i,j)=1;C(i+1,j+1)=1;
                        
                      B(i,j+1)=0;B(i+1,j+1)=0;B(i,j)=1;B(i+1,j)=1;
                        
                     
                        
                    else if(random<3)
                            
                        B(i,j)=0;B(i+1,j)=0;B(i,j+1)=1;B(i+1,j+1)=1;
          
                        A(i+1,j)=0;A(i+1,j+1)=0;A(i,j)=1;A(i,j+1)=1;
                       
                        C(i,j+1)=0;C(i+1,j)=0;C(i,j)=1;C(i+1,j+1)=1;
                       
                           
                     
                        
                        else if(random<4) 
                        
                           B(i,j+1)=0;B(i+1,j+1)=0;B(i,j)=1;B(i+1,j)=1; 
                        
                           C(i,j)=0;C(i+1,j+1)=0;C(i,j+1)=1;C(i+1,j)=1;
                           
                           A(i+1,j)=0;A(i+1,j+1)=0;A(i,j)=1;A(i,j+1)=1;
                            
                              end
                        end
                    end
                end
                
                         
                
            
            end
        end
    end
    imwrite(A,'a.bmp','bmp');
    imwrite(B,'b.bmp','bmp');
    imwrite(C,'c.bmp','bmp');
    figure 
    subplot(2,2,1),imshow(K);
    subplot(2,2,2),imshow(A);
    subplot(2,2,3),imshow(B);
    subplot(2,2,4),imshow(C);
    axes_handle = get(gcf, 'children');
    axes(axes_handle(4)); title('original image');
    axes(axes_handle(3)); title('image a');
    axes(axes_handle(2)); title('image b');
    axes(axes_handle(1)); title('image c');
    %%%%隐藏信息的恢复
    A1=imread('a.bmp'); 
    B1=imread('b.bmp'); 
    C1=imread('c.bmp');
    random=rand()*3;
    if(random<1)
           K=A1;K12=A1;K13=A1;K23=A1;
    else if(random<2)
            K=B1;K12=B1;K13=B1;K23=B1;
        else
            K=C1;K12=C1;K13=C1;K23=C1;
        end
    end
     
    for i=1: height-1
        for j=1: width-1
            if((xor(xor(A1(i,j),B1(i,j)),C1(i,j))==0)&&(xor(xor(A1(i,j+1),B1(i,j+1)),C1(i,j+1))==0)&&(xor(xor(A1(i+1,j),B1(i+1,j)),C1(i+1,j))==0)&&(xor(xor(A1(i+1,j+1),B1(i+1,j+1)),C1(i+1,j+1))==0))
               K(i,j)=0;K(i,j+1)=0;K(i+1,j)=0;K(i+1,j+1)=0;
        
            end
       
        end
        
    end
    for i=1: height-1,
        for j=1: width-1,
            if((A1(i,j)||B1(i,j))==0&&(A1(i,j+1)||B1(i,j+1))==0&&(A1(i+1,j)||B1(i+1,j))==0&&(A1(i+1,j+1)||B1(i+1,j+1))==0)
               K12(i,j)=0;K12(i,j+1)=0;K12(i+1,j)=0;K12(i+1,j+1)=0;
        
            end
       
        end
    end
    for i=1: height-1,
        for j=1: width-1, 
            if((A1(i,j)||C1(i,j))==0&&(A1(i,j+1)||C1(i,j+1))==0&&(A1(i+1,j)||C1(i+1,j))==0&&(A1(i+1,j+1)||C1(i+1,j+1))==0)
               K13(i,j)=0;K13(i,j+1)=0;K13(i+1,j)=0;K13(i+1,j+1)=0;
        
            end
        end
    end
    for i=1: height-1,
        for j=1: width-1, 
            if((C1(i,j)||B1(i,j))==0&&(C1(i,j+1)||B1(i,j+1))==0&&(C1(i+1,j)||B1(i+1,j))==0&&(C1(i+1,j+1)||B1(i+1,j+1))==0)
               K23(i,j)=0;K23(i,j+1)=0;K23(i+1,j)=0;K23(i+1,j+1)=0;
        
            end
       
        end
    end




    imwrite(K,'K.bmp','bmp')
    imwrite(K12,'image_a+b.bmp','bmp')
    imwrite(K13,'image_a+c.bmp','bmp')
    imwrite(K23,'image_b+c.bmp','bmp')
    figure
    imshow(K);
    title('recovery image');
    figure
    subplot(2,2,1),imshow(K12);
    subplot(2,2,2),imshow(K13);
    subplot(2,2,3),imshow(K23);
    axes_handle = get(gcf, 'children');
    axes(axes_handle(3)); title('image a+b');
    axes(axes_handle(2)); title('image a+c');
    axes(axes_handle(1)); title('image b+c');

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    [Nowcoder] 寻找子串
    [LeetCode] Generate Parentheses
    [Nowcoder] 字符串是否由字串拼接
    ananconda3中QTDesigner无法输入中文
    [Paddle学习笔记][13][基于YOLOv3的昆虫检测-测试模型]
    [Paddle学习笔记][12][基于YOLOv3的昆虫检测-模型预测]
    [Paddle学习笔记][11][基于YOLOv3的昆虫检测-训练模型]
    [Paddle学习笔记][10][基于YOLOv3的昆虫检测-损失函数]
    [Paddle学习笔记][09][基于YOLOv3的昆虫检测-模型设计]
    [Paddle学习笔记][08][基于YOLOv3的昆虫检测-数据处理]
  • 原文地址:https://www.cnblogs.com/chenyigen/p/4702970.html
Copyright © 2011-2022 走看看