基于矩阵变换的数字图像置乱技术
数字图像置乱有许多技术,本课程设计中要求同学采用矩阵变换和函数变换的方法来达到置乱目的。基本思路是改变图像中的像素点位置(称为矩阵变换,如将左上角的像素点移动到右下角)并改变像素点的值(称为函数变换),当然这种改变必须具有可逆性,既可以置乱图像又可以还原。课程设计中采用的具体算法如下:【图像置乱】
(1)读入原始图像信息,将其像素值储存到矩阵 中( 一般为方阵);
(2)采用Arnold矩阵变换对 进行置乱变换,得到置乱图像 (Arnold矩阵变换的次数为 次);
(3)针对图像 采用如下的函数变换方法:
(1)
(2)
其中 为变换前图像第 行第 列的像素值, 为变换后图像第 行第 列的像素值, 为下取整运算, 为求模运算, 为异或运算。上面公式(1)与(2)中的常数取值为: ;
(4)显示最后得到的置乱图像 。
【图像还原】
(1)读入置乱图像信息,将其像素值储存到矩阵 中;
(2)对图像 实现上述函数变换的复原操作,即将置乱后的图像 作为输入图象,采取上述【图像置乱】操作中的第(3)步,得到输出图像为 ;
(3)假定对应于原始图像 的大小的Arnold变换周期为 (其含义为对图像进行 次Arnold变换可得到图像本身),因为Arnold变换的周期性,所以对图像 进行 次Arnold矩阵变换后即可复原原始图像 ;
(4)显示还原图像 。
算法中使用的一些技术介绍如下:
【Arnold矩阵变换】
Arnold在遍历理论的研究中提出如下变换:设有平面点集 , 上的一点 变到另一点 的变换为:
(3)
其中mod表示模运算。此变换称作二维Arnold变换,简称Arnold变换,它是一种自同构映射。如果将图像视为一个矩阵,对其进行Arnold变换则可以通过像素坐标的改变而改变图像灰度值的布局,从而达到加密图像的目的。这时Arnold变换公式为:
(4)
其中N表示图像的大小。Arnold变换具有周期性,即反复对图像进行变换到一定的次数时,各个像素点会回复到初始的位置,这时相当于解密图像。由于Arnold变换处理的是方阵,所以被加密图像的宽度与高度要相同。如不相同,则应将图像分为若干方块,然后对每一块子图像进行变换。表1给出了图像大小和其对应的Arnold变换周期(假定图像为方阵,即图像的高度和宽度一样)。
表1 图像大小与其对应的Arnold变换周期
图像大小 128 256 512
Arnold变换周期 96 192 384
【程序设计说明和要求】
(1)编写一个函数来对图像进行置乱,然后再编写命令行式脚本文件来调用该函数。函数的入口参数有:该图像对应的外部文件名(或者对应于图像数据的矩阵);该函数的输出参数是一个矩阵,储存有经过置乱后的图像数据;
(2)编写一个函数来对图像进行还原,然后再编写命令行式脚本文件来调用该函数。函数的入口参数有:储存有图像置乱数据的矩阵;该函数的输出参数是一个矩阵,储存有经过还原后的图像数据;
(3)为便于处理,选取的图像宜为方阵,即长度和宽度相等。图像可以是灰度图像,也可以是真彩色图像。要求同学们的程序对这2种类型的图像均可以处理。
(4)Arnold变换需要注意:它改变的是像素的位置。即按照公式(4)计算变换前像素的坐标 和变换后的像素坐标 ,然后这两个位置上的像素要交换位置,对所有的像素进行上述操作即完成一次Arnold变换;将变换后的图像作为输入再进行一次Arnold变换,则输入为经过两次Arnold变换,…,依次类推,即可以完成多次Arnold变换;
(5)可以使用附带的图像测试程序的性能或者自行寻找测试图像数据。
我不会