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');

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

shamir叠像术 分类: 图像处理 2015-07-08 16:50 17人阅读 评论(1) 收藏的更多相关文章

  1. JqueryDemoTools-用于整理jQueryDemo 分类: C# 公共资源 2014-12-02 16:50 224人阅读 评论(1) 收藏

    应用背景: 在学习js时,为了熟悉某个功能,或使用某个插件,往往需要写一个Demo来测试:一些好的Demo也可以整理积累下来,方便以后查阅: 写了一个编写jQuery Demo的辅助工具.界面很简单, ...

  2. iOS自定义字体及类目 分类: ios技术 2015-05-15 16:34 195人阅读 评论(0) 收藏

    1:获取字体文件 从各种渠道下载字体文件ttf, 网站或者从别的ipa里扣出来.(以fzltxh.ttf为例) 2:将fzltxh.ttf文件拷贝到工程中 3:在Info.plist中添加项: Fon ...

  3. iOS开发网络数据之AFNetworking使用 分类: ios技术 2015-04-03 16:35 105人阅读 评论(0) 收藏

    http网络库是集XML解析,Json解析,网络图片下载,plist解析,数据流请求操作,上传,下载,缓存等网络众多功能于一身的强大的类库.最新版本支持session,xctool单元测试.网络获取数 ...

  4. NPOI 通用导出数据到Excel 分类: C# Helper 2014-11-04 16:06 246人阅读 评论(0) 收藏

    应用场景: 在项目中,经常遇到将数据库数据导出到Excel,针对这种情况做了个程序封装.工作原理:利用NPOI将SQL语句查询出的DataTable数据导出到Excel,所见即所得. 程序界面:   ...

  5. ASP.NET 自定义URL重写 分类: ASP.NET 2014-10-31 16:05 175人阅读 评论(0) 收藏

    一.功能说明: 可以解决类似 http://****/news 情形,Url路径支持正则匹配. 二.操作步骤: 1.增加URL重写模块: using System; using System.IO; ...

  6. ASP.NET 自定义URL重写 分类: ASP.NET 2014-10-31 16:05 174人阅读 评论(0) 收藏

    一.功能说明: 可以解决类似 http://****/news 情形,Url路径支持正则匹配. 二.操作步骤: 1.增加URL重写模块: using System; using System.IO; ...

  7. JqueryEasyUI 解决IE下加载时页面错乱的问题 分类: JavaScript JqueryEasyUI 2014-09-20 09:50 545人阅读 评论(1) 收藏

    问题描述: 一直觉得jqueryeasyui在IE下的渲染效果不大好,尤其刚进入页面时的加载,页面会出现布局错乱,虽然是一闪而过,但是给用户的体验不好: 可以通过在页面onload时,增加一个遮罩层, ...

  8. C# IIS应用程序池辅助类 分类: C# Helper 2014-07-19 09:50 249人阅读 评论(0) 收藏

    using System.Collections.Generic; using System.DirectoryServices; using System.Linq; using Microsoft ...

  9. Prime Path 分类: 搜索 POJ 2015-08-09 16:21 4人阅读 评论(0) 收藏

    Prime Path Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 14091 Accepted: 7959 Descripti ...

随机推荐

  1. [转载]Android核心分析

    2013-12-19 15:44:03 转载自: http://blog.csdn.net/column/details/androidcore.html 很好的文章,阅读请跳转到转载链接,转载备以后 ...

  2. 计算C++类所占用的字节(即sizeof)

    在类中,如果什么都没有,则类占用1个字节,一旦类中有其他的占用空间成员,则这1个字节就不在计算之内,如一个类只有一个int则占用4字节而不是5字节.如果只有成员函数,则还是只占用1个字节,因为类函数不 ...

  3. UML学习入门就这一篇文章

    1.1 UML基础知识扫盲 UML这三个字母的全称是Unified Modeling Language,直接翻译就是统一建模语言,简单地说就是一种有特殊用途的语言. 你可能会问:这明明是一种图形,为什 ...

  4. UIScrollerView常见属性

    CGSize contentSize :设置UIScrollView的滚动范围 CGPoint contentOffset :UIScrollView当前滚动的位置 UIEdgeInsets cont ...

  5. OBJECT ARX 添加标注样式

    ////获得当前图形的标注样式表 AcDbDimStyleTable* pDimStyleTbl; acdbHostApplicationServices()->workingDatabase( ...

  6. (转)HTML5开发学习(2):本地存储之localStorage 、sessionStorage、globalStorage

    原文:http://www.cnblogs.com/xumingxiang/archive/2012/03/25/2416386.html HTML5开发学习(2):本地存储之localStorage ...

  7. Java关键字final、static使用总结(转)

    Java关键字final.static使用总结   一.final        根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方 ...

  8. UIKit框架之UIlabel

    1.继承链:UIview:UIresponder:NSObject 2.如果你想要使UIlabel能够和用户进行互动,需要把它实例变量的属性 userInteractionEnabled改为yes 3 ...

  9. OD调试篇5--如何应对OD使用中的一些问题

    打开小甲鱼给的进行恶搞过的程序,会发现一些问题 发现程序直接暂停,或者加载进来有问题. 那机智的我 通过对上一个没有恶搞过的exe可执行文件的PE头进行了比较 会发现其中的猫腻 那么我们去正常的修改一 ...

  10. ASP.NET MVC之视图生成URL

    在MVC的Web应用程序中,我们经常会出现这样的操作,从一个视图跳转到另外一个视图,大部分情况下都是通过链接来实现,当然这是一种非常不错的选择,为什么不说这是最好的选择呢?因为它也有其弊端,我们看看如 ...