歐婷婷
[摘 要]本文主要闡述了數(shù)字圖像在實現(xiàn)隱藏和偽裝中用到的矩陣知識,并用matlab實現(xiàn)圖像的隱藏和偽裝。
[關(guān)鍵詞]矩陣;數(shù)字圖像隱藏 ;數(shù)字圖像偽裝
信息隱藏技術(shù)是20世紀(jì)80年代以來隨著計算機技術(shù)、信息處理技術(shù)和網(wǎng)絡(luò)通信技術(shù)的發(fā)展而產(chǎn)生的一種信息安全技術(shù)。信息偽裝是指將秘密信息隱藏與其他公開的數(shù)字媒體中,使秘密信息能夠在通信網(wǎng)絡(luò)中安全傳輸?shù)男畔踩夹g(shù)。
一、彩色數(shù)字圖像的原理
數(shù)字圖像都有相應(yīng)的像素,像素是指由一個數(shù)字序列表示的圖像中的一個最小單位。圖像由像素組成,每個像素都有一個明確的位置和被分配的色彩數(shù)值,而這些小方格的顏色和位置就決定該圖像所呈現(xiàn)出來的樣子??梢詫⑾袼匾暈檎麄€圖像中不可分割的單位或者是元素,它是以一個單一顏色的小格存在。彩色圖像是指每個像素由R、G、B三個分量構(gòu)成的圖像,其中R、G、B是由不同的灰度級來描述的,三者不同比例的組合形成了巨大顏色體系。RGB顏色空間是最基本、最常用的顏色空間。三色原理就是適當(dāng)選取三種顏色(如紅、綠、藍(lán)),將他們按不同的比例進行合成,就可以引起不同的顏色感覺,三色彼此獨立,任一種基色不能由其他兩種基色配出,隨著三基色選取的不同,可以構(gòu)成任意多個顏色空間。選定三基色R、G、B的取值范圍均為[0,255],如紅色為(255,255,255),綠色為(0,255,0),藍(lán)色為(0,255,0).
圖像分辨率是單位英寸中所包含的像素點數(shù),如某一圖像其分辨率為293*293,可以對應(yīng)一個293*293的矩陣,矩陣中每個元素即為像素,每個像素由R、G、B三個分量構(gòu)成,即矩陣中的每個元素可以看成是一個三維向量。
二、矩陣在數(shù)字圖像隱藏和偽裝中的應(yīng)用
1.矩陣在數(shù)字圖像隱藏中的應(yīng)用
如需要將圖像A隱藏在圖像B中,以新的圖像C的來進行傳輸,達(dá)到隱藏圖像A的目的.前提是圖像A與圖像B的分辨率一致。
實現(xiàn)過程如下:
(1)讀取圖像A和圖像B的像素數(shù)據(jù);
(2)分別獲取圖像的紅、綠、藍(lán)色的分量信息;
(3)(圖像B的紅、黃、藍(lán)三色信息矩陣–圖像A的紅、黃、藍(lán)三色信息矩陣)*t+圖像A的紅、黃、藍(lán)三色信息矩陣,即通過紅、黃、藍(lán)三色信息矩陣的加減和數(shù)乘運算實現(xiàn)信息隱藏(t為任意常數(shù));
(4)將數(shù)據(jù)合并為彩色圖像信息并顯示結(jié)果.
這一過程實質(zhì)上運用的是矩陣加減運算和數(shù)乘運算達(dá)到數(shù)字圖像隱藏的目的.
具體在matlab中的實現(xiàn)過程如下:
%讀取圖像的數(shù)據(jù)
AimagedataA=imread('d:/plane1.jpg');
AimagedataB=imread('d:/building.jpg');
AimagedataDB1=double(AimagedataA);
AimagedataDB2=double(AimagedataB);
%分別獲得圖像的紅、綠、藍(lán)色的分量信息
RimgA1=AimagedataDB1(:,:,1);
GimgA1=AimagedataDB1(:,:,2);
BimgA1=AimagedataDB1(:,:,3);
RimgA2=AimagedataDB2(:,:,1);
GimgA2=AimagedataDB2(:,:,2);
BimgA2=AimagedataDB2(:,:,3);
%(圖像B的紅、黃、藍(lán)色矩陣—圖像A的紅、黃、藍(lán)色矩陣)*2+圖像A的紅、黃、藍(lán)色矩陣,實現(xiàn)信息隱藏
>> RimgD=(RimgA2- RimgA1)*2+ RimgA1;
>> GimgD=(GimgA2- GimgA1)*2+ GimgA1;
>> BimgD=(BimgA2- BimgA1)*2+ BimgA1;
%將結(jié)果數(shù)據(jù)合并為彩色圖像信息并顯示結(jié)果
>> DimagedataDB=cat(3,RimgD,GimgD,BimgD);
>> Dimagedata=uint8(DimagedataDB);
>> imshow(Dimagedata)
即可實現(xiàn)數(shù)字圖像A的隱藏.
2.矩陣在數(shù)字圖像偽裝中的應(yīng)用
如需實現(xiàn)圖像的偽裝,實現(xiàn)過程如下:
(1) 讀取圖像的數(shù)據(jù);
(2)分別獲得圖像的紅、綠、藍(lán)色的分量信息;
(3)獲取圖像的分辨率,并生成密鑰矩陣;
(4)用密鑰矩陣右乘紅、綠、藍(lán)三色信息的矩陣實現(xiàn)信息偽裝;
(5)將結(jié)果數(shù)據(jù)合并為彩色圖像信息并顯示結(jié)果.
這一過程實質(zhì)上運用的是矩陣的乘法,達(dá)到圖像隱藏的目的。
具體在matlab中的實現(xiàn)過程如下:
%讀取圖像的數(shù)據(jù)
Aimagedata=imread('d:/plane.jpg');
AimagedataDB=double(Aimagedata);
%分別獲得圖像的紅、綠、藍(lán)色的分量信息
RimgA=AimagedataDB(:,:,1);
GimgA=AimagedataDB(:,:,2);
BimgA=AimagedataDB(:,:,3);
%獲取圖像的分辨率,并生成密鑰矩陣
wd=size(RimgA);
keymat=double(rand(wd)./240);
%用密鑰矩陣右乘紅、綠、藍(lán)三色信息的矩陣實現(xiàn)信息偽裝
>> RimgD=RimgA*keymat;
>> GimgD=GimgA*keymat;
>> BimgD=BimgA*keymat;
%將結(jié)果數(shù)據(jù)合并為彩色圖像信息并顯示結(jié)果
>> DimagedataDB=cat(3,RimgD,GimgD,BimgD);
>> Dimagedata=uint8(DimagedataDB);
>> imshow(Dimagedata)
即可實現(xiàn)圖像的隱藏.
三、結(jié)語
以上兩例主要運用矩陣加減運算、數(shù)乘運算和矩陣乘法的運算來實現(xiàn)圖像的隱藏和偽裝.數(shù)字圖像處理中運用到大量的矩陣知識,如對圖像進行去除噪聲、增強、復(fù)原、分割、提取特征,圖像壓縮等,其基本原理大都與矩陣矩陣?yán)碚撁芮邢嚓P(guān).