第3章 信息隐藏技术1
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.1.3 利用奇偶校验位
• 如果奇偶校验位与mi不匹配,则将该区域中 所有元素的最低比特位进行翻转,导致奇偶 校验位与mi相同。 例如要在下列区域隐藏信息1,采用偶校验
0 1 1 1 0 0
0
1
1
1
1
0
1
0
0
0
0
1
最低位 影响不大
翻转后,奇数个1 偶数个1, 校验位的值为0 校验位的值为1
3.1.4 二值图像中的信息隐藏
第三章 信息隐藏算法
第三章 信息隐藏算法
信息隐藏系统的分类 载体 1、 不同载体 隐藏方法不同
图 视 语 文 各类 像 频 音 本 数据 2、载体的修改方式 时域替换技术 P52 变换域技术 扩展频谱技术 …… ……
3.1 位平面算法
♪ 任何数字多媒体信息,在扫描和采样时, 都会产生物理随机噪声,而人的感官系统 对这些随机噪声是不敏感的。 ♪ 替换技术试图用秘密信息比特替换掉随机 噪声,从而达到隐藏秘密信息的目的。 ? 在图像和声音信号中,哪些地方可以用来 隐藏信息的?
3.1.1 LSB方法
? 载体元素数大于秘密信息的比特数,如何 确定秘密信息的嵌入位置? 简单做法:从第一个元素顺序嵌入,其余不变。 安全问题:载体的已修改部分和未修改部分, 具有不同的统计特性 解决方法: • 嵌入秘密信息后,继续嵌入伪随机序列 • 重复嵌入秘密信息,直到载体结束 • 随机间隔:双方利用相同的伪随机数发生 器和伪装密钥,确定隐藏位置。(碰撞)
3.1 位平面算法
x=imread('lena.bmp'); 提取 [m,n]=size(x); 第1位平面 for i=1:m for j=1:n c(i,j)=bitget(x(i,j),1); end end figure imshow(c,[]); title(‘第一位平面')
3.1 位平面算法
3.1 时域替换技术
imfinfo 用于图形图像文件信息的查询 imfinfo('LENA.bmp')
3.1.2 基于调色板的图像
图像的表示方式有两种: ①在图像矩阵中直接存放象素的实际数据 调色板数据 ②基于调色板的图像。 彩色图像:RGB三个分量 灰度图像:RGB值都相同 • 调色板数据 • 图像数据 不是存储实际颜色值, 存每象素的调色板索引。
%LSB水印提取算法 w=imread('lsb_watermarked.bmp'); [Mw,Nw]=size(c); for i=1:Mw for j=1:Nw x(i,j)=bitget(w(i,j),1); end end figure;imshow(x,[]); title('Recovered Watermark');
3.1.4 二值图像中的信息隐藏
使用一个特定图像区域中黑色象素的个数来 对秘密信息进行编码。 思想:把二值图像分成n个矩形区域Bi, 若黑色像素的个数大于一半,则嵌入一个0; 若白色像素的个数大于一半,则嵌人一个1。 当需要嵌入的比特与所选区域的黑白像素的 比例不一致时,需要修改一些像素的颜色。 修改应该以不引起察觉为目的。 • 应修改邻近有相反颜色的象素; • 应该对图像的边缘象素进行修改。
• 二值图像(单色图像) 每个象素点仅占一位,值为0或1。 通常0代表黑,1代表白。 数字化的传真数据、由黑白两色组成的徽标
这类图像以黑白像素的分布方式包含冗余, 变化少量的像素颜色,不会影响人眼对图像 的认知。尽管可以类似于灰度图像,在某些 像素的位置上设置比特位为1或者0,但是这 样隐藏的信息很容易受到传输错误的影响, 其健壮性不强。
3.1.1 LSB方法
作业 利用LSB方法将学号嵌入载体图像中。 例如150号 • 嵌入 s=bitget(150,t); w(i,j)=bitset(w(i,j),1,s); • 提取 k=bitget(w(i,j),1); y=bitset(y,t,k); for i=1:10:71 %初值:步长:终值 floor向下取整
真彩色图像的LSB算法
例:提取算法 (1)读BMP文件头中的保留字节,设为L, 若为0则没有隐藏信息,终止算法;若不为 0则其值为隐藏信息的字节长度; (2)将BMP文件图像数据部分的每个字节的 8位依次异或,并保存其结果; (3)重复第(2)步,使每8个BMP文件图像数 据部分字节经过运算后组成一个隐藏信息 字节; (4)重复(2)、(3)直到隐藏信息字节长度为L。
真彩色图像的LSB算法
1、信息隐藏嵌入算法 • 将待隐藏信息转化为二进制数据流; • 将二进制数据流嵌入到彩色图像信息的最 低位; 例:新的图像分量=原图像分量 水印分量 2、信息隐藏提取算法 从BMP文件的数据部分分离出最低位的信 息,进而提取出隐藏的信息字节;
真彩色图像的LSB算法
例:嵌入算法 • 将待隐 藏信息的字节长度写入BMP文件标 头部分的保留字节中; • 将隐藏信息转化为二进制数据码流; • 将BMP文件图像数据部分的每个字节的高7 位依次异或后再与上述二进制数码流异或后 的结果写入最低位;
3.1.3 利用奇偶校验位
把载体分成几个不相重叠的区域,在一个载 体区域中(非单个元素)存储1比特信息。 • 选择n个不重叠区域,计算出每个区域的所 有最低比特的奇偶校验位,
p( I ) LSB(c j ) mod2
jwenku.baidu.comI
• 选择一个载体元素的最低比特位存放这个区 域的奇偶校验位。 嵌入信息时,是在对应区域的奇偶校验位上 嵌入信息比特mi
位图信息头
typedef struct tagBITMAPINFOHEADER { DWORD biSize; //本结构所需的字节数 LONG biWidth; //宽度 LONG biHeight; //高度 WORD biPlanes; //目标设备的位面数,1 WORD biBitCount; //每个象素的位数 DWORD biCompression; //压缩类型 DWORD biSizeImage; //图像的大小 LONG biXPelsPerMeter; //设备水平分辨率 LONG biYPelsPerMeter; //设备垂直分辨率 DWORD biClrUsed; //颜色索引数 DWORD biClrImportant; //有重要影响的索引数 } BITMAPINFOHEADER;
3.1 位平面算法
x=imread('lena.bmp'); [m,n]=size(x); 依次去除1~7个 for t=1:7 位平面 for i=1:m for j=1:n x(i,j)=bitset(x(i,j),t,0); end end figure; imshow(x); title(t) end
3.1 位平面算法
x=imread('lena.bmp'); imshow(x); title(‘原图像’) [m,n]=size(x); 去除第1位平面 for i=1:m for j=1:n x(i,j)=bitset(x(i,j),1,0); end end figure; imshow(x); title(‘去除第一位平面’)
3.1 位平面算法
黑 0000 0000
图像的数据表示
• 256色(0~255) 8 bit /象素点 (28=256) 大小:256×256 像素
3.1 位平面算法
图像的数据表示
1 2 3 . . . . .
00 • 256色(0~255) 00 00 8 bit /象素点 0
0
• 不同位平面 重要程度不同
for t=1:8 for i=1:m for j=1:n c(i,j)=bitget(x(i,j),t); end end figure imshow(c,[]); title(t) end
依次提取 1~8个 位平面
c=imread('lena.bmp'); y=zeros(m,n); m n…; for t=1:7 for i=1:m for j=1:n 依次提取 x(i,j)=bitget(c(i,j),t); 1~7个 end 位平面 end for i=1:m for j=1:n y(i,j)=bitset(y(i,j),t,x(i,j)); end end figure;imshow(y,[]);title(t); end
真彩色RGB图像
24位BMP图像文件的结构特点为: ① 每个文件只能非压缩地存放一幅彩色图像; ② 文件头由54个字节的数据段组成,包含文件 的类型、大小、图像尺寸及打印格式等; ③从第55个字节开始,是图像数据部分,数据 的排列顺序以图像的左下角为起点,从左到 右、从下到上,每连续3个字节便描述一个 像素点的颜色信息,这三个字节分别代表蓝、 绿、红三基色的亮度(RGB值), 若三个字节为:00H, 00H, FFH,则为纯红色。
c=imread('lena.bmp'); %读入载体图像 m=imread(‘hide.bmp’); %读入水印图像 [Mc,Nc]=size(c); %确定载体图像的大小 for i=1:Mc for j=1:Nc y(i,j)=bitset(y(i,j),1,m(i,j)); end end imwrite(y,'lsb_watermarked.bmp','bmp'); figure; imshow(y,[]); title('Watermarked Image')
67 45 23 1 8
高位: 图像信息
低位: 噪声 1
1 2 3 . . . . .
人眼对随机噪声不敏感。
3.1 位平面算法
1、确定图像大小 行数 m=size(c,1); 列数 n=size(c,2); 2、 bitget C = bitget(A,bit) 提取A的bit位的值 3、 bitset C = bitset(A,bit,v) 将A的bit位的值设为v ,v的取值为0或1
3.1.1 LSB方法
• LSB方法(Least Significant Bit) 最不重要位/最低有效位 • 用秘密信息替换掉最低有效位的数据。 例:水印图像为二值图像,载体为与水印图像 大小相同的256色图像,进行LSB水印图像 的嵌入与提取。 • 将隐藏图像嵌入到载体图像的最低位平面 实现信息的隐藏。 • 提取伪装对象的最低位平面恢复隐藏图像
复习:图像信号——图像的表示
BMP文件格式 一般由三个部分组成: 位图文件头14:文件类型,大小,偏移字节数 位图信息
● 位图信息头40:图像宽、高和位图数据大小等 ● 调色板:大小取决于色彩数,真彩色图不需要。
位图阵列信息:按行的顺序依次记录图像的每 一个像素的数据。
若用到调色板,则阵列中记录颜色的索引值。
3.1.2 基于调色板的图像
2、用调色板的排序方式对信息进行编码。 N种颜色,有N!种方式对调色板进行排序 3、调色板的颜色不变,数目扩大一倍,即每 个颜色值对应两个调色板索引,根据秘密信 息比特,选择两个相同颜色中的一个。 攻击方法: 调色板颜色一般按使用由多到少进行排序 若调色板中出现图像中没有的颜色,有问题 攻击:调色板重排序,并重新保存图像
位图文件头
位图文件头 typedef struct tagBITMAPFILEHEADER { UINT bfType; //文件类型,"BM" DWORD bfSize; //文件大小 (字节) UINT bfReserved1; //保留 -- 一般为0 UINT bfReserved2; //保留 -- 一般为0 DWORD bfOffBits; }BITMAPFILEHEADER; // bfOffBits 指定从BitmapFileHeader 到图像首 部的字节偏移量
索引 0黑 1白 2红 3绿 4蓝 5黄 6银 R 0 255 255 0 0 255 192 G 0 255 0 255 0 255 192 B 0 255 0 0 255 0 192
3.1.2 基于调色板的图像
1、基于调色板图像进行LSB方法的隐藏信息 ①对调色板的颜色向量LSB修改 灰度图像无明显影响 彩色图像若同时修改RGB最低位,颜色会出 现偏差,引起攻击者怀疑 避免颜色跃变 ②对图像数据的LSB修改 先对调色板排序,使相邻颜色在感官上接近。 2 2 2 • 欧几里德距离d R G B • 颜色亮度成分