矩阵在数字图像隐藏和伪装中的应用
2018-07-08欧婷婷
欧婷婷
[摘 要]本文主要阐述了数字图像在实现隐藏和伪装中用到的矩阵知识,并用matlab实现图像的隐藏和伪装。
[关键词]矩阵;数字图像隐藏 ;数字图像伪装
信息隐藏技术是20世纪80年代以来随着计算机技术、信息处理技术和网络通信技术的发展而产生的一种信息安全技术。信息伪装是指将秘密信息隐藏与其他公开的数字媒体中,使秘密信息能够在通信网络中安全传输的信息安全技术。
一、彩色数字图像的原理
数字图像都有相应的像素,像素是指由一个数字序列表示的图像中的一个最小单位。图像由像素组成,每个像素都有一个明确的位置和被分配的色彩数值,而这些小方格的颜色和位置就决定该图像所呈现出来的样子。可以将像素视为整个图像中不可分割的单位或者是元素,它是以一個单一颜色的小格存在。彩色图像是指每个像素由R、G、B三个分量构成的图像,其中R、G、B是由不同的灰度级来描述的,三者不同比例的组合形成了巨大颜色体系。RGB颜色空间是最基本、最常用的颜色空间。三色原理就是适当选取三种颜色(如红、绿、蓝),将他们按不同的比例进行合成,就可以引起不同的颜色感觉,三色彼此独立,任一种基色不能由其他两种基色配出,随着三基色选取的不同,可以构成任意多个颜色空间。选定三基色R、G、B的取值范围均为[0,255],如红色为(255,255,255),绿色为(0,255,0),蓝色为(0,255,0).
图像分辨率是单位英寸中所包含的像素点数,如某一图像其分辨率为293*293,可以对应一个293*293的矩阵,矩阵中每个元素即为像素,每个像素由R、G、B三个分量构成,即矩阵中的每个元素可以看成是一个三维向量。
二、矩阵在数字图像隐藏和伪装中的应用
1.矩阵在数字图像隐藏中的应用
如需要将图像A隐藏在图像B中,以新的图像C的来进行传输,达到隐藏图像A的目的.前提是图像A与图像B的分辨率一致。
实现过程如下:
(1)读取图像A和图像B的像素数据;
(2)分别获取图像的红、绿、蓝色的分量信息;
(3)(图像B的红、黄、蓝三色信息矩阵–图像A的红、黄、蓝三色信息矩阵)*t+图像A的红、黄、蓝三色信息矩阵,即通过红、黄、蓝三色信息矩阵的加减和数乘运算实现信息隐藏(t为任意常数);
(4)将数据合并为彩色图像信息并显示结果.
这一过程实质上运用的是矩阵加减运算和数乘运算达到数字图像隐藏的目的.
具体在matlab中的实现过程如下:
%读取图像的数据
AimagedataA=imread('d:/plane1.jpg');
AimagedataB=imread('d:/building.jpg');
AimagedataDB1=double(AimagedataA);
AimagedataDB2=double(AimagedataB);
%分别获得图像的红、绿、蓝色的分量信息
RimgA1=AimagedataDB1(:,:,1);
GimgA1=AimagedataDB1(:,:,2);
BimgA1=AimagedataDB1(:,:,3);
RimgA2=AimagedataDB2(:,:,1);
GimgA2=AimagedataDB2(:,:,2);
BimgA2=AimagedataDB2(:,:,3);
%(图像B的红、黄、蓝色矩阵—图像A的红、黄、蓝色矩阵)*2+图像A的红、黄、蓝色矩阵,实现信息隐藏
>> RimgD=(RimgA2- RimgA1)*2+ RimgA1;
>> GimgD=(GimgA2- GimgA1)*2+ GimgA1;
>> BimgD=(BimgA2- BimgA1)*2+ BimgA1;
%将结果数据合并为彩色图像信息并显示结果
>> DimagedataDB=cat(3,RimgD,GimgD,BimgD);
>> Dimagedata=uint8(DimagedataDB);
>> imshow(Dimagedata)
即可实现数字图像A的隐藏.
2.矩阵在数字图像伪装中的应用
如需实现图像的伪装,实现过程如下:
(1) 读取图像的数据;
(2)分别获得图像的红、绿、蓝色的分量信息;
(3)获取图像的分辨率,并生成密钥矩阵;
(4)用密钥矩阵右乘红、绿、蓝三色信息的矩阵实现信息伪装;
(5)将结果数据合并为彩色图像信息并显示结果.
这一过程实质上运用的是矩阵的乘法,达到图像隐藏的目的。
具体在matlab中的实现过程如下:
%读取图像的数据
Aimagedata=imread('d:/plane.jpg');
AimagedataDB=double(Aimagedata);
%分别获得图像的红、绿、蓝色的分量信息
RimgA=AimagedataDB(:,:,1);
GimgA=AimagedataDB(:,:,2);
BimgA=AimagedataDB(:,:,3);
%获取图像的分辨率,并生成密钥矩阵
wd=size(RimgA);
keymat=double(rand(wd)./240);
%用密钥矩阵右乘红、绿、蓝三色信息的矩阵实现信息伪装
>> RimgD=RimgA*keymat;
>> GimgD=GimgA*keymat;
>> BimgD=BimgA*keymat;
%将结果数据合并为彩色图像信息并显示结果
>> DimagedataDB=cat(3,RimgD,GimgD,BimgD);
>> Dimagedata=uint8(DimagedataDB);
>> imshow(Dimagedata)
即可实现图像的隐藏.
三、结语
以上两例主要运用矩阵加减运算、数乘运算和矩阵乘法的运算来实现图像的隐藏和伪装.数字图像处理中运用到大量的矩阵知识,如对图像进行去除噪声、增强、复原、分割、提取特征,图像压缩等,其基本原理大都与矩阵矩阵理论密切相关.