lec基于调色板的隐写术
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
使用索引矩阵!!
21
一个直接的解决思路
先对调色板进行排序,使得相邻的颜色 尽可能的相像;
再使用LSB进行嵌入; 为了避免怀疑,可以再把调色板还原,
这步是可选的。
22
隐写方法三: EZstego方法
1. 采用某种距离准则,对调色板进行排序,使调 色板中的两个相邻颜色向量具有相似的颜色感 觉(实现时的相对难点);
可以采用不同容量的嵌入,如 30%,50%,70%,100%
一个示意代码:
[im,map]=imread('garfield3.gif'); [l1,l2]=size(im); r=uint8(round(rand(l1,l2))); im2=bitand(im,254); em=bitor(im2,r); subplot(1,2,1);imshow(im,map);title('原始图像'); subplot(1,2,2);imshow(em,map);title('伪装图像');
17
基于调色板排序的思想
先定义颜色的顺序; 再定义调色板的顺序; 把所有的调色板按照从小到大的顺序排
列成一张表; 在[data,map]中隐藏的信息就是该map
在表中的索引。
18
程序演示
[data,map]=imread('garf21.bmp'); msg=7777; [newdata,newmap]=SortPalletHiding(data
第4讲 基于调色板图像的隐写术
任德斌
四川大学电子信息学院
主要内容
索引图像介绍 基于索引图像的主要隐藏算法
对调色板排序 EZstego方法 颜色的量化索引调制
2
调色板图像格式和存储表示
基于调色板的图像使用特定颜色空间的一个颜 色子集为图像上色,它包括两个部分:调色板和 实际的图像(索引)数据。实际的图像数据保 存每个像素的调色板索引而非颜色值。
秘密信息 如原始调色板的颜色数是32,嵌入后
就变为256 如果GIF载体图像的调色板的颜色数是
256,该怎么办?
35
S-TOOL方法的缺点
大量降低图像的颜色总数, 也可能同时大 幅降低了图像质量。
不安全。对图像的调色板色彩亮度 (luminance) 做简单的排序分析, 被嵌入秘 密消息的图像的调色板色彩会形成 32 个 群集
缺点:
直方图攻击 该算法对调色板中所有颜色保证了整体最优,
却忽视了局部最优的情况,即没有保证替换 前后的两个颜色在调色板颜色序列中的空间 位置最近 可能引起图像质量的较大改变
27
隐写方法四:Fridrich算法
特点:不需要对调色板进行排序
输入: 索引矩阵 I, 调色板 C = {c1, c2, . . . , cL}, 消息 m 输出:索引矩阵 J
10
实验结果
11
原因
由于调色板并不要求有任何的排序,故 调色板中相邻位置对应的颜色不一定具有视 觉的相似性。因此,简单的修改图像数据的 LSB,可能会导致颜色的跳跃变化。
12
方法一:修改调色板的LSB
对调色板中的颜色向量的LSB修改。 对颜色向量ci的轻微改变(最低比特位)可 以不引起HVS的察觉。 隐藏容量很小:
tol是一个(0,1)区间的实数,转换后的 图像色彩数量不大于(floor(1/tol)+1)^3 。
n是一个[0, 65535]的整数,直接表示转换 后的索引图的色彩数量。
8
一个直接的想法
能否对索引矩阵直接使用LSB?为什么? 做实验
9
实验
直接把秘密信息嵌入到gif图像索引数 据的LSB,并观察效果。
调色板类图像中最常用的有GIF(Graphics Interchange Format)图像和索引类BMP图像。
GIF格式采用无损压缩技术,普遍适用于图表, 按钮等只需少量颜色的图像。
3
[B,map]=imread('lena-ind.bmp');
索引图像
4
调色板的概念
调色板是包含不同颜色的颜色表,每种颜 色以红、绿、蓝三种颜色的组合来表示;图像 的每一个像素对应一个数字,而该数字对应调 色板中的一种颜色。
2. 进行LSB替换; 3. 最后把调色板进行还原。
EZstego软件采用该方法 有很多不同的排序方法
亮度排序 将颜色根据它们在色彩空间中的欧几里德
距离进行wk.baidu.com序( EZstego软件 ):
d R2 G2 B2
23
EZsteg-调色板排序
使得sum(distance(c(i),c(i+1)))最小
,map,msg); figure;imshow(data,map);title('the ori'); figure;imshow(newdata,newmap);title('th
e stego'); msg2=ExtractFromSortPallet(newmap)
19
对调色板排序隐藏的特点
28
Fridrich算法的特点
实现简单,效率更高,特别是对提取算 法
也不能实现颜色替换的局部最优,其实 现效果不一定比Ezstego算法更好
可能引起图像质量的较大改变
29
隐写方法五:最佳奇偶分配密写(OPA)
将调色板中的颜色划分为两个子集,分别 代表0,1比特
实现方法:
计算所有不同颜色Ci和Cj的距离dij,并按照 从大到小的顺序进行排序,最近的两种颜色 用有向线段连接(构成一个有向图)
1
0
42
秘密消息: 1 0 1 0 1 0 0 1 0 1 1 1 1 0 0
索引数据
10 1
0
1
00 1
011
1
10
0
秘密消息
CW1, CW2, CW4, CW5 CW6, CW7
CW11, CW3 CW15, CW10 CW12, CW9
如某像素值为1,则表示该颜色为调色板的 编号为1的颜色。调色板的单元个数是与图像 的颜色数相对应的,256色图像的调色板就有 256个单元。不同的图像有不同的调色板。
5
索引图像
索引图像是一种把像素值直接作为RGB调色 板下标的图像。一幅索引图包含一个数据矩阵 data和一个调色板矩阵map, map矩阵总是一 个m×3的双精度类型矩阵(m表示颜色数目)。 map矩阵的每一行指定一个颜色的红、绿、蓝 颜色分量。索引图像可以把像素值直接映射为 调色板数值,每一个像素的颜色使用data的数 值作为map的下标来获得:数值1表示map的第 一行,数值2表示map的第二行,依此类推。
for m 的每个位b 选择I中的一个点 I(x,y)
if I(x,y) mod 2 ≠b 寻找 ci ∈C 满足 i mod 2 == b 且 ci 和 I(x,y)对应的颜色最接近 I(x,y) = i
实现时,对每个 颜色ci ,应该先 找到和它颜色最 接近的cj,且j和i 的奇偶性相反
end
end
一条边上的颜色属于不同的子集,即对于不 同的秘密消息。
特点: Ci离Cj最近,但Cj离Ci不一定最近
30
OPA算法的优缺点
真正实现颜色替换的局部最优,失真最 小。
缺点:颜色的替换是不对称的。
31
隐写方法六: Hide&Seek方法
思想:复制调色板的颜色 把颜色通过复制增加一倍,最后进行某种方
CW0, CW8, CW13, CW14
未使用
索引数据
未使用的索引数据
41
第四步:根据量化表来隐藏消息
秘密消息: 1 0 1 0 1 0 0 1 0 1 1 1 1 0 0
10 1
0
1
00 1
011
1
10
0
索引数据
秘密消息
CW1, CW2, CW4, CW5 CW6, CW7
CW11, CW3 CW15, CW10 CW12, CW9
调色板
…
索引数据
38
第一步:把颜色配对
CODEBOOK
CW0 CW1 CW2 CW3 CW4 CW5 CW6 CW7 CW8 CW9 CW10 CW11 CW12 CW13 CW14 CW15
39
第二步:把部分颜色进行量化
d(CW0, CW8) > TH d(CW13, CW14) > TH
CW0, CW8, CW13, CW14
24
EzStego的排序算法
25
EZstego的嵌入方法举例
对调色板排序,然后相邻的颜色进行配 对,最后根据消息进行选择。
如秘密消息为 10110
索引矩阵的前面 几个系数为
3,7,6,2,0 问嵌入后的值为 多少?
26
EZsteg的特点
优点:不改变调色板中的颜色值或顺序, 并且没有增加图像的信息长度
显然不能! B=A+1; imshow(B,map2);
16
基于调色板排序的例子(续)
图像[A,map]中能嵌入几位信息? map可以有多少种排序? 不同的排序代表什么含义?这取决于不
同的算法。
[A2,map2]=SortPalletHiding(A,map,1); imshow(A2,map2); msg2=ExtractFromSortPallet(map2); [A3,map3]=SortPalletHiding(A,map,11);
6
索引图像举例
map=[1,0,0;0,1,0;0,0,1]; A=ones(64); imshow(A,map) imshow(A+1,map) imshow(A+2,map)
7
RGB图像转化为索引图像
函数rgb2ind的主要用法: [data,map]=rgb2ind(rgbimage,tol) 或 [data,map]=rgb2ind(rgbimage,n)
14
索引图像举例
map=[1,0,0;0,1,0;0,0,1]; A=ones(64); imshow(A,map) imshow(A+1,map) imshow(A+2,map)
15
基于调色板排序的例子
要保持图像不变,能不能只把调色板的 顺序进行变换?
map2=map; map2(1,:)=map(2,:); map2(2,:)=map(1,:); imshow(A,map2);
); imview(stego,map2); MyHideSeekExtract(stego,map2,16)
33
还能否进一步的提高基于调色板的隐藏 容量?
能!修改索引数据,且扩大调色板的颜 色数。这就是著名软件S-TOOL采用的方法。
34
隐写方法七: S-TOOL方法
思想:多次复制调色板中的颜色 在一个8位的索引数据上可以嵌入3位
图像质量没有任何降低; 嵌入容量很小,不超过1684位; 非常脆弱,重新存储会丢失其中隐藏的
秘密信息(许多图像处理软件会按照颜色 值对调色板排序,但画图软件不会); 调色板中“无序”的颜色序列很容易引 起怀疑,Fridrich指出许多软件生成的调 色板是按照亮度、使用频率等要素排列。
20
如何提高嵌入容量
3×N
13
方法二:对调色板排序
用调色板的排序方式对信息进行编码。 在图像的存储中,调色板不需要以任何方式 排序,因此在以调色板保存颜色时,可以选择 对信息进行编码。因为有N!个不同的方式对调 色板进行排序,所以可以用来对一个短信息进 行编码。 GifShuffle软件使用该方法。 对于256色的调色板可以嵌入的消息位数为: 1684
法嵌入,例如LSB,或者按大小进行编码等。 可能需要减少颜色和修改索引矩阵 Hide&Seek软件使用该方法 缺点:
质量可能有较大降低 容易从调色板中发现
32
代码实现演示
[im,map]=imread('garfield3.gif'); ar='随便从课件中拷贝一段'; [stego,map2]=MyHideSeek(im,map,ar,16
36
一个问题
能否对EzStego算法再次进行改进?使得 在对任何图像嵌入后都不引起图像质量 的较大改变?且颜色的替换是对称的。
答案:颜色的量化索引调制
37
方法八:颜色的量化索引调制
原始图像
0 (120,155, 80) 1 (90,135,120) 2 (100,125,150) 3 4 5 6 7 8 9 10 11 12 13 (49,117,25) 14 (50,42,98) 15 (20,65,110)
未使用
CW1 ,CW2 CW4, CW5 CW6, CW7
1
CW11 ,CW3 CW15, CW10 CW12, CW9
0
CW0 CW1 CW2 CW3 CW4 CW5 CW6 CW7 CW8 CW9 CW10 CW11 CW12 CW13 CW14 CW15
40
第三步:确定可隐藏消息的数据位置
原始图像
21
一个直接的解决思路
先对调色板进行排序,使得相邻的颜色 尽可能的相像;
再使用LSB进行嵌入; 为了避免怀疑,可以再把调色板还原,
这步是可选的。
22
隐写方法三: EZstego方法
1. 采用某种距离准则,对调色板进行排序,使调 色板中的两个相邻颜色向量具有相似的颜色感 觉(实现时的相对难点);
可以采用不同容量的嵌入,如 30%,50%,70%,100%
一个示意代码:
[im,map]=imread('garfield3.gif'); [l1,l2]=size(im); r=uint8(round(rand(l1,l2))); im2=bitand(im,254); em=bitor(im2,r); subplot(1,2,1);imshow(im,map);title('原始图像'); subplot(1,2,2);imshow(em,map);title('伪装图像');
17
基于调色板排序的思想
先定义颜色的顺序; 再定义调色板的顺序; 把所有的调色板按照从小到大的顺序排
列成一张表; 在[data,map]中隐藏的信息就是该map
在表中的索引。
18
程序演示
[data,map]=imread('garf21.bmp'); msg=7777; [newdata,newmap]=SortPalletHiding(data
第4讲 基于调色板图像的隐写术
任德斌
四川大学电子信息学院
主要内容
索引图像介绍 基于索引图像的主要隐藏算法
对调色板排序 EZstego方法 颜色的量化索引调制
2
调色板图像格式和存储表示
基于调色板的图像使用特定颜色空间的一个颜 色子集为图像上色,它包括两个部分:调色板和 实际的图像(索引)数据。实际的图像数据保 存每个像素的调色板索引而非颜色值。
秘密信息 如原始调色板的颜色数是32,嵌入后
就变为256 如果GIF载体图像的调色板的颜色数是
256,该怎么办?
35
S-TOOL方法的缺点
大量降低图像的颜色总数, 也可能同时大 幅降低了图像质量。
不安全。对图像的调色板色彩亮度 (luminance) 做简单的排序分析, 被嵌入秘 密消息的图像的调色板色彩会形成 32 个 群集
缺点:
直方图攻击 该算法对调色板中所有颜色保证了整体最优,
却忽视了局部最优的情况,即没有保证替换 前后的两个颜色在调色板颜色序列中的空间 位置最近 可能引起图像质量的较大改变
27
隐写方法四:Fridrich算法
特点:不需要对调色板进行排序
输入: 索引矩阵 I, 调色板 C = {c1, c2, . . . , cL}, 消息 m 输出:索引矩阵 J
10
实验结果
11
原因
由于调色板并不要求有任何的排序,故 调色板中相邻位置对应的颜色不一定具有视 觉的相似性。因此,简单的修改图像数据的 LSB,可能会导致颜色的跳跃变化。
12
方法一:修改调色板的LSB
对调色板中的颜色向量的LSB修改。 对颜色向量ci的轻微改变(最低比特位)可 以不引起HVS的察觉。 隐藏容量很小:
tol是一个(0,1)区间的实数,转换后的 图像色彩数量不大于(floor(1/tol)+1)^3 。
n是一个[0, 65535]的整数,直接表示转换 后的索引图的色彩数量。
8
一个直接的想法
能否对索引矩阵直接使用LSB?为什么? 做实验
9
实验
直接把秘密信息嵌入到gif图像索引数 据的LSB,并观察效果。
调色板类图像中最常用的有GIF(Graphics Interchange Format)图像和索引类BMP图像。
GIF格式采用无损压缩技术,普遍适用于图表, 按钮等只需少量颜色的图像。
3
[B,map]=imread('lena-ind.bmp');
索引图像
4
调色板的概念
调色板是包含不同颜色的颜色表,每种颜 色以红、绿、蓝三种颜色的组合来表示;图像 的每一个像素对应一个数字,而该数字对应调 色板中的一种颜色。
2. 进行LSB替换; 3. 最后把调色板进行还原。
EZstego软件采用该方法 有很多不同的排序方法
亮度排序 将颜色根据它们在色彩空间中的欧几里德
距离进行wk.baidu.com序( EZstego软件 ):
d R2 G2 B2
23
EZsteg-调色板排序
使得sum(distance(c(i),c(i+1)))最小
,map,msg); figure;imshow(data,map);title('the ori'); figure;imshow(newdata,newmap);title('th
e stego'); msg2=ExtractFromSortPallet(newmap)
19
对调色板排序隐藏的特点
28
Fridrich算法的特点
实现简单,效率更高,特别是对提取算 法
也不能实现颜色替换的局部最优,其实 现效果不一定比Ezstego算法更好
可能引起图像质量的较大改变
29
隐写方法五:最佳奇偶分配密写(OPA)
将调色板中的颜色划分为两个子集,分别 代表0,1比特
实现方法:
计算所有不同颜色Ci和Cj的距离dij,并按照 从大到小的顺序进行排序,最近的两种颜色 用有向线段连接(构成一个有向图)
1
0
42
秘密消息: 1 0 1 0 1 0 0 1 0 1 1 1 1 0 0
索引数据
10 1
0
1
00 1
011
1
10
0
秘密消息
CW1, CW2, CW4, CW5 CW6, CW7
CW11, CW3 CW15, CW10 CW12, CW9
如某像素值为1,则表示该颜色为调色板的 编号为1的颜色。调色板的单元个数是与图像 的颜色数相对应的,256色图像的调色板就有 256个单元。不同的图像有不同的调色板。
5
索引图像
索引图像是一种把像素值直接作为RGB调色 板下标的图像。一幅索引图包含一个数据矩阵 data和一个调色板矩阵map, map矩阵总是一 个m×3的双精度类型矩阵(m表示颜色数目)。 map矩阵的每一行指定一个颜色的红、绿、蓝 颜色分量。索引图像可以把像素值直接映射为 调色板数值,每一个像素的颜色使用data的数 值作为map的下标来获得:数值1表示map的第 一行,数值2表示map的第二行,依此类推。
for m 的每个位b 选择I中的一个点 I(x,y)
if I(x,y) mod 2 ≠b 寻找 ci ∈C 满足 i mod 2 == b 且 ci 和 I(x,y)对应的颜色最接近 I(x,y) = i
实现时,对每个 颜色ci ,应该先 找到和它颜色最 接近的cj,且j和i 的奇偶性相反
end
end
一条边上的颜色属于不同的子集,即对于不 同的秘密消息。
特点: Ci离Cj最近,但Cj离Ci不一定最近
30
OPA算法的优缺点
真正实现颜色替换的局部最优,失真最 小。
缺点:颜色的替换是不对称的。
31
隐写方法六: Hide&Seek方法
思想:复制调色板的颜色 把颜色通过复制增加一倍,最后进行某种方
CW0, CW8, CW13, CW14
未使用
索引数据
未使用的索引数据
41
第四步:根据量化表来隐藏消息
秘密消息: 1 0 1 0 1 0 0 1 0 1 1 1 1 0 0
10 1
0
1
00 1
011
1
10
0
索引数据
秘密消息
CW1, CW2, CW4, CW5 CW6, CW7
CW11, CW3 CW15, CW10 CW12, CW9
调色板
…
索引数据
38
第一步:把颜色配对
CODEBOOK
CW0 CW1 CW2 CW3 CW4 CW5 CW6 CW7 CW8 CW9 CW10 CW11 CW12 CW13 CW14 CW15
39
第二步:把部分颜色进行量化
d(CW0, CW8) > TH d(CW13, CW14) > TH
CW0, CW8, CW13, CW14
24
EzStego的排序算法
25
EZstego的嵌入方法举例
对调色板排序,然后相邻的颜色进行配 对,最后根据消息进行选择。
如秘密消息为 10110
索引矩阵的前面 几个系数为
3,7,6,2,0 问嵌入后的值为 多少?
26
EZsteg的特点
优点:不改变调色板中的颜色值或顺序, 并且没有增加图像的信息长度
显然不能! B=A+1; imshow(B,map2);
16
基于调色板排序的例子(续)
图像[A,map]中能嵌入几位信息? map可以有多少种排序? 不同的排序代表什么含义?这取决于不
同的算法。
[A2,map2]=SortPalletHiding(A,map,1); imshow(A2,map2); msg2=ExtractFromSortPallet(map2); [A3,map3]=SortPalletHiding(A,map,11);
6
索引图像举例
map=[1,0,0;0,1,0;0,0,1]; A=ones(64); imshow(A,map) imshow(A+1,map) imshow(A+2,map)
7
RGB图像转化为索引图像
函数rgb2ind的主要用法: [data,map]=rgb2ind(rgbimage,tol) 或 [data,map]=rgb2ind(rgbimage,n)
14
索引图像举例
map=[1,0,0;0,1,0;0,0,1]; A=ones(64); imshow(A,map) imshow(A+1,map) imshow(A+2,map)
15
基于调色板排序的例子
要保持图像不变,能不能只把调色板的 顺序进行变换?
map2=map; map2(1,:)=map(2,:); map2(2,:)=map(1,:); imshow(A,map2);
); imview(stego,map2); MyHideSeekExtract(stego,map2,16)
33
还能否进一步的提高基于调色板的隐藏 容量?
能!修改索引数据,且扩大调色板的颜 色数。这就是著名软件S-TOOL采用的方法。
34
隐写方法七: S-TOOL方法
思想:多次复制调色板中的颜色 在一个8位的索引数据上可以嵌入3位
图像质量没有任何降低; 嵌入容量很小,不超过1684位; 非常脆弱,重新存储会丢失其中隐藏的
秘密信息(许多图像处理软件会按照颜色 值对调色板排序,但画图软件不会); 调色板中“无序”的颜色序列很容易引 起怀疑,Fridrich指出许多软件生成的调 色板是按照亮度、使用频率等要素排列。
20
如何提高嵌入容量
3×N
13
方法二:对调色板排序
用调色板的排序方式对信息进行编码。 在图像的存储中,调色板不需要以任何方式 排序,因此在以调色板保存颜色时,可以选择 对信息进行编码。因为有N!个不同的方式对调 色板进行排序,所以可以用来对一个短信息进 行编码。 GifShuffle软件使用该方法。 对于256色的调色板可以嵌入的消息位数为: 1684
法嵌入,例如LSB,或者按大小进行编码等。 可能需要减少颜色和修改索引矩阵 Hide&Seek软件使用该方法 缺点:
质量可能有较大降低 容易从调色板中发现
32
代码实现演示
[im,map]=imread('garfield3.gif'); ar='随便从课件中拷贝一段'; [stego,map2]=MyHideSeek(im,map,ar,16
36
一个问题
能否对EzStego算法再次进行改进?使得 在对任何图像嵌入后都不引起图像质量 的较大改变?且颜色的替换是对称的。
答案:颜色的量化索引调制
37
方法八:颜色的量化索引调制
原始图像
0 (120,155, 80) 1 (90,135,120) 2 (100,125,150) 3 4 5 6 7 8 9 10 11 12 13 (49,117,25) 14 (50,42,98) 15 (20,65,110)
未使用
CW1 ,CW2 CW4, CW5 CW6, CW7
1
CW11 ,CW3 CW15, CW10 CW12, CW9
0
CW0 CW1 CW2 CW3 CW4 CW5 CW6 CW7 CW8 CW9 CW10 CW11 CW12 CW13 CW14 CW15
40
第三步:确定可隐藏消息的数据位置
原始图像