【图像加密】基于matlab仿射变换数字图象置乱【含Matlab源码 1171期】

举报
海神之光 发表于 2022/05/29 00:13:56 2022/05/29
【摘要】 一、获取代码方式 获取代码方式1: 完整代码已上传我的资源: 【图像加密】基于matlab仿射变换数字图象置乱【含Matlab源码 1171期】 获取代码方式2: 通过订阅紫极神光博客付费专栏,凭支付...

一、获取代码方式

获取代码方式1:
完整代码已上传我的资源: 【图像加密】基于matlab仿射变换数字图象置乱【含Matlab源码 1171期】

获取代码方式2:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

备注:订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

二、简介

1 引言
随着多媒体技术的迅速发展和网络带宽限制的放松,越来越多的数字图象在网络上传输,这些图象信息有些无关紧要,有些却至关重要,它们有可能涉及到个人的隐私、公司的利益、国家的安全,其价值无法衡量。另一方面,网络的普及使得任何人都有可能接触到其中的信息,并从中搜集,而无论这种搜集是善意还是恶意、合法还是非法,这就使得在网络上传输图象的安全性倍受关注,对图象进行加密也就成为重要的研究方向。

当前,信息隐藏与伪装技术是一个非常重要而又非常活跃的研究领域,而图象的置乱技术既可作为一种常见的图象加密方法,又可作为进一步隐藏图象信息的预处理,是一种值得深入研究的课题。已有很多文献提出了图象置乱的方法,如文献提到的Arnold变换,文献提出的排列变换,文献提出的Fibonacci变换,这些置乱变换置乱图象后的直观效果各不相同,但其计算时间复杂度是基本一致的,因为它们均存在取模(mod)运算,使得在作置乱时较费时。文章首先分析了Arnold变换、排列变换、Fibonacci变换的不足,然后基于仿射变换,提出了一类新的数字图象置乱变换,该变换不含取模运算,只含加、减、乘运算,从而使得计算时间较快。在文章的第三部分,提出了一个猜想,并给出了猜想的计算机验证示例。最后进行了总结,指出了今后的研究方向。

2 Arnold变换、排列变换、Fibonacci变换的不足
Arnold变换是Arnold在遍历理论研究中提出的一种变换,对于正方形的数字图象来说,使用离散化的Arnold变换,其定义为:
在这里插入图片描述
其中N为图象的高度和宽度的象素数。
文献给出排列变换的定义为:
在这里插入图片描述
其中{ad-bc=±1, a, b, c, deZ} ,当a=b=c=1, d=2时就是Arnold变换。当a=b=c=1, d=0时就是文献[3] 提到的Fibonacci变换。它们的共同点是,均采用了取模的运算,以此来保证变换后的象素位置(x’,y’)不超过所给图象的区域邀(x,y):0≤x≤N-1,0sy≤N-1妖。这就带来了两点不足:(1)置乱时较费时;(2) 除Arnold变换的逆变换易求出外, 其余变换的逆变换不易求出。
一幅数字图像可用一矩阵A=邀a(i, j) 妖NxN表示, 其中a(ij) 表示图像在第i行j列象素处的灰度值(或RGB分量值) 。
数字图象的置乱原理是:将原来点(x, y) 处象素对应的灰度值或RGB颜色值移动到变换后的点(x’, y’) 处。如果对一个数字图象迭代地使用离散化后的Arnold变换、排列变换、Fibonacci变换, 即将(1) 或(2) 式左端的(x’, y’) 作为下一次相应变换的输入, 则可重复这个过程一直作下去。当迭代到某一步时,如果出现的图象的各种灰度值或RGB值均匀分布在图象所在的区域:邀(x, y) :0≤x≤N-1, 0sy≤N-1妖, 则图象的信息将完全被掩盖, 达到了图象加密的目的。

3 仿射变换
仿射变换的一般形式为:
在这里插入图片描述
为便于与Arnold变换、排列变换、Fibonacci变换对照,将它写成矩阵的形式为:
在这里插入图片描述
虽然对于平面仿射变换由三对对应点代入(3)后就可完全确定,但由于目的是要用它作图象的置乱。因此对仿射变换还有特殊的要求,即:要寻找恰当的a,b,c,d,e,f使得:(1)变换是区域邀(x,y):1≤x≤N,1≤y≤N妖到其自身的单映射;(2)变换是区域邀(x,y):1≤x≤N,1≤y≤N妖到其自身的满映射。根据文献[5]中所指出的,可将仿射变换分解成:运动变换、斜对称变换、相似变换、压缩(拉伸)变换、正交变换、剪移等变换的组合,从而可求得满足要求(1)和(2)的一系列解。求得的a,b,c,d,e,f可看作图象置乱加密的密钥,这里仅给出一个所求得的仿射变换,如下所示。
当x<y时:
在这里插入图片描述
当x≥y时:
在这里插入图片描述
该变换避免了取模运算,其中只有加、减、乘运算,不仅降低了其计算难度,而且也使求其逆变换变得容易,其逆变换为:

当x’+y’≤N+1时:
在这里插入图片描述
当x’+y’>N+1时:
在这里插入图片描述
没有逆变换,可以通过求出周期T(重复变换T次回到原始图象),进行迭代T次获得图象解密。对Arnold变换,T通常是比较大的[3],如对256×256象素图象T=192。这固然给敌方破译图象秘密增加了难度,但同时也给自己的解密增加了不必要的计算,对某些实时性要求高的系统带来不变。有了逆变换的好处在于,知道了图象置乱加密的密钥后,可立即进行解密,没有必要进行大数量的迭代运算。

三、部分源代码

function chengxu()
A=imread('lena.png');
figure,imshow(A);
title('原图像(256*256)');

for K=1:16   %置乱16次
    
    figure,imshow(B);
    title(['置乱',num2str(K),'次后的图像'])
    A=B;
end

end

function B=zhiluan(A)
%此函数将图像A置乱,输出置乱后的图像B
 
for x=1:N
    for y=1:N
        if x<y   %计算(x,y)点映射到B图像的坐标(x1,y1)
            x1=x-y+N+1;
            y1=-x+N+1;
        else
            x1=x-y+1;
            y1=-x+N+1; 
       
    end
end
end

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

四、运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 蔡利梅.MATLAB图像处理——理论、算法与实例分析[M].清华大学出版社,2020.
[2]杨丹,赵海滨,龙哲.MATLAB图像处理实例详解[M].清华大学出版社,2013.
[3]周品.MATLAB图像处理与图形用户界面设计[M].清华大学出版社,2013.
[4]刘成龙.精通MATLAB图像处理[M].清华大学出版社,2015.

文章来源: qq912100926.blog.csdn.net,作者:海神之光,版权归原作者所有,如需转载,请联系作者。

原文链接:qq912100926.blog.csdn.net/article/details/119280714

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。