新动态:Arnold置乱

2023-04-26 17:24:41 | 来源:博客园
一、Arnold置乱概述

Arnold变换是俄国数学家弗拉基米尔·阿诺德(Vladimir Igorevich Arnold)提出,Arnold将其应用在遍历理论研究中。由于Arnold本人最初对一张猫的图片进行了此种变换,因此它又被称为猫脸变换(cat映射)。Cat映射可以把图像中各像素点的位置进行置换,使其达到加密的目的,多应用在多媒体混沌加密中。

Arnold置乱是一种数字图像处理技术,通过改变图像像素的排列顺序来产生视觉上的扭曲和变形效果。该技术主要应用于图像加密和保护,也可以用于生成艺术效果或增加图像的复杂度。

Arnold置乱的原理基于置换群的概念。对于一个n×n的图像,可以将其视为一个由n²个像素组成的向量。Arnold置乱通过一系列置换操作来改变这些向量的排列顺序,从而产生不同的视觉效果。


(资料图)

具体来说,Arnold置乱的操作是将每个像素坐标(x, y)进行置换操作,得到新的坐标(x", y")。置换操作的具体方法如下:

x" = (ax + y) mod n y" = (bx + (a*b+1)*y) mod n

其中,a和b是两个置乱参数,n是图像大小。上述公式可以理解为将(x, y)映射到了一个新的坐标(x", y")。通过反复进行这样的置换操作,可以将图像像素的排列顺序进行混乱,从而产生视觉上的扭曲和变形效果。

值得注意的是,Arnold置乱是一种可逆操作,也就是说可以通过相反的操作将图像恢复为原始状态。具体来说,如果知道了置乱参数a和b以及进行置乱的迭代次数n,就可以对图像进行反向置乱操作,从而得到原始的图像。

在实际应用中,Arnold置乱常常被用于数字水印、图像加密等领域。通过对图像进行多次Arnold置乱操作,可以使得图像的像素排列变得非常复杂和随机,从而增加了图像的安全性和保密性。同时,Arnold置乱也可以用于生成艺术效果,例如在数字艺术中用于产生视觉上的扭曲和变形效果。

二、步骤

Arnold置乱的具体步骤如下:

选择置乱参数a和b:Arnold置乱的第一步是选择两个置乱参数a和b,这两个参数是用来控制像素排列顺序的。一般情况下,选择两个互质的正整数作为置乱参数,例如a=3,b=5。

将图像转换为矩阵:将要加密的图像转换为一个n×n的矩阵,其中n为矩阵的行数和列数。如果图像大小不是n的整数倍,则可以在图像边缘进行填充或截断操作。

进行置乱操作:对于图像矩阵中的每个像素坐标(x, y),使用下面的公式进行置乱操作:

x" = (ax + y) mod n y" = (bx + (a*b+1)*y) mod n

其中,(x", y")就是置乱后的像素坐标。这个过程就是将图像像素的位置进行混乱和扭曲。

重复置乱操作:对于置乱后的像素坐标(x", y"),再次使用上述公式进行置乱操作,得到新的像素坐标(x"", y"")。重复进行这样的操作,直到达到预设的置乱次数。

将置乱后的像素矩阵转换回图像:将置乱后的像素矩阵重新转换为图像,并保存加密后的图像文件。如果需要对图像进行解密,则需要进行相反的置乱操作。

三、代码实现1.MATLAB实现置乱
% 定义置乱参数a = 3;b = 5;t = 512;% 加载要置乱的图像img = imread("Lena.png");% 将图像转换为灰度图像img_gray = rgb2gray(img);% 将灰度图像转换为矩阵img_matrix = double(img_gray);% 获取矩阵的行数和列数[n, m] = size(img_matrix);% 对图像进行置乱操作for k = 1:t % 设置置乱次数为10次    for i = 1:n        for j = 1:m            x = mod(a*i + j, n) + 1;            y = mod(b*i + (a*b+1)*j, n) + 1;            img_matrix(x, y) = img_gray(i, j);        end    endend% 将置乱后的矩阵转换回图像img_scrambled = uint8(img_matrix);% 输出Arnold置乱后的图像imshow(img_scrambled);% 保存置乱后的图像imwrite(img_scrambled, "Lena_scrambled.jpg");
Code_01
% 读取原始图像并转换为灰度图像img = imread("Lena.png");img = rgb2gray(img);% 定义Arnold置乱的参数n = 512;a = 3;b = 5;% 进行n次Arnold置乱迭代for k = 1:n    % 将图像分成大小为n×n的块    blocks = mat2cell(img, repmat(n, 1, size(img, 1)/n), repmat(n, 1, size(img, 2)/n));    for i = 1:size(blocks, 1)        for j = 1:size(blocks, 2)            % 对于每个块,进行Arnold置乱操作            block = blocks{i,j};            [x, y] = meshgrid(1:n, 1:n);            x1 = mod(a*x + y, n) + 1;            y1 = mod(b*x + (a*b+1)*y, n) + 1;            idx = sub2ind([n, n], y1(:), x1(:));            block = reshape(block(idx), n, n);            blocks{i,j} = block;        end    end    % 合并所有块并更新图像    img = cell2mat(blocks);end% 输出Arnold置乱后的图像imshow(img);
Code_022.MATLAB实现逆置乱
clear all;clc;% 读取图片,根据Arnold变换的条件,图像必须是正方形img=imread("Lena.bmp");% 当只有一个输出参数时,返回一个行向量,该行向量的第一个元素时矩阵的行数,第二个元素是矩阵的列数。mysize=size(img);if numel(mysize)>2%如果输入是彩色图像    img=rgb2gray(img); %将彩色到灰度图像的转换    fprintf("图像为彩色图\n");else    fprintf("图像为灰度图\n");endimshow(img,[])title("彩色原图的灰度图");figure(2)imhist(img)    %原图的直方图统计%如果输入的不是正方形图像,则打印如下[h,w]=size(img);if h>w    img = imresize(img, [w w]);    fprintf("图像长宽不一样,图像可能失真\r");endif hCode_03

在上面的代码中,我们首先定义了置乱参数a和b,然后加载了一张名为lena.jpg的图像,并将其转换为灰度图像。接下来,我们将灰度图像转换为一个n×n的矩阵,然后使用两重循环对每个像素进行置乱操作。在置乱操作中,我们使用了上面描述的公式进行像素坐标的计算和调换。最后,我们将置乱后的矩阵再次转换为图像,并保存到名为lena_scrambled.jpg的文件中。

四、二维Arnold置乱

二维Arnold置乱是一种将二维图像进行混沌置乱的方法,与一维Arnold置乱类似,它也是通过改变像素坐标的排列顺序来实现图像混沌化的。

二维Arnold置乱的具体步骤如下:

选择置乱参数a和b:同样,二维Arnold置乱的第一步是选择两个置乱参数a和b,这两个参数是用来控制像素排列顺序的。一般情况下,选择两个互质的正整数作为置乱参数,例如a=3,b=5。

将图像转换为矩阵:同样地,将要加密的图像转换为一个n×n的矩阵,其中n为矩阵的行数和列数。

进行置乱操作:对于图像矩阵中的每个像素坐标(x, y),使用下面的公式进行置乱操作:

x" = (ax + y) mod n y" = (bx + (a*b+1)*y) mod n

其中,(x", y")就是置乱后的像素坐标。这个过程就是将图像像素的位置进行混乱和扭曲。

重复置乱操作:对于置乱后的像素坐标(x", y"),再次使用上述公式进行置乱操作,得到新的像素坐标(x"", y"")。重复进行这样的操作,直到达到预设的置乱次数。

将置乱后的像素矩阵转换回图像:将置乱后的像素矩阵重新转换为图像,并保存加密后的图像文件。如果需要对图像进行解密,则需要进行相反的置乱操作。

总之,二维Arnold置乱是一种可靠的图像混沌化方法,它可以增强图像的安全性和保密性。

上一篇 下一篇

相关新闻

新动态:Arnold置乱

快消息!康希通信冲刺科创板,供应商集中度较高,存在累计未弥补亏损

全球新消息丨PHP- 复合数据类型-数组的注意事项

焦点快看:淮北发电分公司:抢发增发 日发电利润再创新高

世界速看:上海12366英语智能语音系统上线 为跨境纳税主体提供全天候应答服务

银保监会:一季度末银行业金融构资产总额397.3万亿元 同比增长11% 今日热文

江南省造老银元价格(2023年04月26日)

世界今热点:4月26日 14:20分 君禾股份(603617)股价快速拉升

当前速读:青岛海关集中销毁24万余件侵权汽车配件

布的经线和纬线的区别_经线和纬线的区别

吃小龙虾会加重湿疹吗(湿疹可以吃小龙虾吗湿疹患者不能吃)-世界观天下

1.5亿!史诗级签约!拜仁营收8.35亿:头号目标不屑,英超2豪门暗喜 全球快播

全球快消息!存放过放射性物品的地方如何处理_存放

【环球时快讯】安庆市首期经济运行“红黑榜”放榜

开源证券:给予景业智能买入评级

最新新闻

新动态:Arnold置乱

快消息!康希通信冲刺科创板,供应商集中度较高,存在累计未弥补亏损

全球新消息丨PHP- 复合数据类型-数组的注意事项

焦点快看:淮北发电分公司:抢发增发 日发电利润再创新高

世界速看:上海12366英语智能语音系统上线 为跨境纳税主体提供全天候应答服务

银保监会:一季度末银行业金融构资产总额397.3万亿元 同比增长11% 今日热文

江南省造老银元价格(2023年04月26日)

世界今热点:4月26日 14:20分 君禾股份(603617)股价快速拉升

当前速读:青岛海关集中销毁24万余件侵权汽车配件

布的经线和纬线的区别_经线和纬线的区别

吃小龙虾会加重湿疹吗(湿疹可以吃小龙虾吗湿疹患者不能吃)-世界观天下

1.5亿!史诗级签约!拜仁营收8.35亿:头号目标不屑,英超2豪门暗喜 全球快播

全球快消息!存放过放射性物品的地方如何处理_存放

【环球时快讯】安庆市首期经济运行“红黑榜”放榜

开源证券:给予景业智能买入评级

环球聚焦:广东省委财经委员会召开会议,分析一季度经济形势部署下一阶段经济工作,研究推动新型储能产业高质量发展

新车“降价潮”对二手车市场影响几何?

天天消息!何氏眼科:一季度利润增长118% 加速全业务链数字化布局

打好发展六仗 | 临武:做优服务 做强产业 推动锂电高质量发展 世界今日报

同仁堂直销团队_同仁堂直销_天天即时看

榕“数”小夜曲

推荐一款轻量级全栈式开源测试平台! 世界快播报

陈列搭配技巧图解_陈列搭配技巧-全球报资讯

世界观察:美股异动 | 穆迪涨超2% 公司上调EPS预期

财报速递|大悦城:“第二曲线”贡献43.37亿收入,多元业务作用凸显-焦点快报

rpg制作大师2003_rpg制作大师2000

全球资讯:桑植行政中心:开启智能文件交换柜

焦点简讯:*ST中昌: 中昌大数据股份有限公司关于公司股票可能存在因股价低于面值而终止上市的风险提示性公告

三问“上海车展宾利女销售不雅照”事件,是否被造黄谣也该有个说法-独家焦点

焦点热文:土耳其警方拘留涉嫌与库尔德工人党非法活动有关联的上百名嫌疑人