第3章 信息隐藏技术3
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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
Imfinfo 查询结果
真彩色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')
3.1.1 LSB方法
• LSB方法(Least Significant Bit) 最不重要位/最低有效位 • 用秘密信息替换掉最低有效位的数据。 例:秘密图像为二值图像,载体为与秘密图像 大小相同的256色图像,进行LSB水印图像 的嵌入与提取。 • 将秘密图像嵌入到载体图像的最低位平面 实现信息的隐藏。 • 提取伪装对象的最低位平面恢复隐藏的图像
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
• 不同位平面 源自文库要程度不同
1 极差 严重影响
质量评价——语音信号
2、客观评价 基于输入-输出的评价方法; 基于输出 提取特征参量做研究对象,设计失真距离 • SNR评价方法 信噪比通常用来计算信号失真程度。 高信噪比是高质量语音的必要条件, 不是充分条件。 改进:分段信噪比,变频分段信噪比
质量评价——图像信号
1、主观评价:平均意见分MOS
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 位平面算法
图像的表示_位图信息头
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 时域替换技术
imfinfo 用于图形图像文件信息的查询 imfinfo('LENA.bmp')
3.3 其他隐藏技术
图形图像文件信息的查询imfinfo imfinfo读取图像文件的有关信息 imfinfo('E:\wm.bmp')
• • • •
Format: ‘bmp‘ %格式 FileSize: 66614 %图像大小 BitDepth: 8 %位深度 ImageDataOffset: 1078 %偏移地址
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向下取整
ans =
Filename: [1x29 char] FileModDate: '26-Apr-2008 20:24:08' FileSize: 66614 Format: 'bmp' FormatVersion: 'Version 3 (Microsoft Windows 3.x)' Width: 256 Height: 256 BitDepth: 8 ColorType: 'indexed' FormatSignature: 'BM' NumColormapEntries: 256 Colormap: [256x3 double] RedMask: [] GreenMask: [] BlueMask: [] ImageDataOffset: 1078 BitmapHeaderSize: 40 NumPlanes: 1 CompressionType: 'none' BitmapSize: 65536 HorzResolution: 0 VertResolution: 0 NumColorsUsed: 0 NumImportantColors: 0
位图阵列信息:按行的顺序依次记录图像的每 一个像素的数据。
若用到调色板,则阵列中记录颜色的索引值。
图像的表示_位图文件头
位图文件头 typedef struct tagBITMAPFILEHEADER { UINT bfType; //文件类型,"BM" DWORD bfSize; //文件大小 (字节) UINT bfReserved1; //保留 -- 一般为0 UINT bfReserved2; //保留 -- 一般为0 DWORD bfOffBits; }BITMAPFILEHEADER; // bfOffBits 指定从BitmapFileHeader 到图像首 部的字节偏移量
真彩色RGB图像
• 欧几里德距离
d R G B
2 2
2
• 相似度测量
M ij
Dij D
, [0,1]
D为最大欧几里德颜色距离;Dij是两个颜色 见的欧几里德距离
真彩色图像的LSB算法
1、信息隐藏嵌入算法 • 将待隐藏信息转化为二进制数据流; • 将二进制数据流嵌入到彩色图像信息的最 低位; 例:新的图像分量=原图像分量 水印分量 2、信息隐藏提取算法 从BMP文件的数据部分分离出最低位的信 息,进而提取出隐藏的信息字节;
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
分 质量标准 评价 5 极好 感觉不到有差别 4 较好 感觉到有差别但无影响 3 一般 感觉到差别但能容许 2 较差 干扰严重能容许 1 极差 由于干扰图像不清楚,不能接受
质量评价——语音信号
语音质量一般从两方面衡量: • 语音的清晰度 • 自然度:通过语音识别讲话人的难易程度 语音质量评价分为主观评价、客观评价两类 1、平均意见分 分 质量标准 受损程度 MOS 5 极好 不可觉察 较好 可觉察但不影响 费时费力 4 3 一般 轻微影响 稳定性低 2 较差 影响听觉效果
%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 位平面算法
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
真彩色图像的LSB算法
例:嵌入算法 • 将待隐 藏信息的字节长度写入BMP文件标 头部分的保留字节中; • 将隐藏信息转化为二进制数据码流; • 将BMP文件图像数据部分的每个字节的高7 位依次异或后再与上述二进制数码流异或后 的结果写入最低位;
真彩色图像的LSB算法
例:提取算法 (1)读BMP文件头中的保留字节,设为L, 若为0则没有隐藏信息,终止算法;若不为 0则其值为隐藏信息的字节长度; (2)将BMP文件图像数据部分的每个字节的 8位依次异或,并保存其结果; (3)重复第(2)步,使每8个BMP文件图像数 据部分字节经过运算后组成一个隐藏信息 字节; (4)重复(2)、(3)直到隐藏信息字节长度为L。
3.1.1 LSB方法
嵌入方法 ? 秘密信息原样嵌入最低有效位? ? 新的图像分量=原图像分量 秘密信息 P55
m
x7 X6 X5 X4 X3 X2 X1 x0
图像的表示
BMP文件格式 一般由三个部分组成: 位图文件头14:文件类型,大小,偏移字节数 位图信息
● 位图信息头40:图像宽、高和位图数据大小等 ● 调色板:大小取决于色彩数,真彩色图不需要。
3.1.1 LSB方法
? 载体元素数大于秘密信息的比特数,如何 确定秘密信息的嵌入位置? 简单做法:从第一个元素顺序嵌入,其余不变。 安全问题:载体的已修改部分和未修改部分, 具有不同的统计特性 解决方法: • 嵌入秘密信息后,继续嵌入伪随机序列 • 重复嵌入秘密信息,直到载体结束 • 随机间隔:双方利用相同的伪随机数发生 器和伪装密钥,确定隐藏位置。(碰撞)
第三章 信息隐藏算法
第三章 信息隐藏算法
信息隐藏系统的分类 载体 1、 不同载体 隐藏方法不同
图 视 语 文 各类 像 频 音 本 数据 2、载体的修改方式 时域替换技术 P52 变换域技术 扩展频谱技术 …… ……
3.1 位平面算法
♪ 任何数字多媒体信息,在扫描和采样时, 都会产生物理随机噪声,而人的感官系统 对这些随机噪声是不敏感的。 ♪ 替换技术试图用秘密信息比特替换掉随机 噪声,从而达到隐藏秘密信息的目的。 ? 在图像和声音信号中,哪些地方可以用来 隐藏信息的?
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(‘去除第一位平面’)
高位: 图像信息
低位: 噪声 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
Imfinfo 查询结果
真彩色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')
3.1.1 LSB方法
• LSB方法(Least Significant Bit) 最不重要位/最低有效位 • 用秘密信息替换掉最低有效位的数据。 例:秘密图像为二值图像,载体为与秘密图像 大小相同的256色图像,进行LSB水印图像 的嵌入与提取。 • 将秘密图像嵌入到载体图像的最低位平面 实现信息的隐藏。 • 提取伪装对象的最低位平面恢复隐藏的图像
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
• 不同位平面 源自文库要程度不同
1 极差 严重影响
质量评价——语音信号
2、客观评价 基于输入-输出的评价方法; 基于输出 提取特征参量做研究对象,设计失真距离 • SNR评价方法 信噪比通常用来计算信号失真程度。 高信噪比是高质量语音的必要条件, 不是充分条件。 改进:分段信噪比,变频分段信噪比
质量评价——图像信号
1、主观评价:平均意见分MOS
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 位平面算法
图像的表示_位图信息头
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 时域替换技术
imfinfo 用于图形图像文件信息的查询 imfinfo('LENA.bmp')
3.3 其他隐藏技术
图形图像文件信息的查询imfinfo imfinfo读取图像文件的有关信息 imfinfo('E:\wm.bmp')
• • • •
Format: ‘bmp‘ %格式 FileSize: 66614 %图像大小 BitDepth: 8 %位深度 ImageDataOffset: 1078 %偏移地址
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向下取整
ans =
Filename: [1x29 char] FileModDate: '26-Apr-2008 20:24:08' FileSize: 66614 Format: 'bmp' FormatVersion: 'Version 3 (Microsoft Windows 3.x)' Width: 256 Height: 256 BitDepth: 8 ColorType: 'indexed' FormatSignature: 'BM' NumColormapEntries: 256 Colormap: [256x3 double] RedMask: [] GreenMask: [] BlueMask: [] ImageDataOffset: 1078 BitmapHeaderSize: 40 NumPlanes: 1 CompressionType: 'none' BitmapSize: 65536 HorzResolution: 0 VertResolution: 0 NumColorsUsed: 0 NumImportantColors: 0
位图阵列信息:按行的顺序依次记录图像的每 一个像素的数据。
若用到调色板,则阵列中记录颜色的索引值。
图像的表示_位图文件头
位图文件头 typedef struct tagBITMAPFILEHEADER { UINT bfType; //文件类型,"BM" DWORD bfSize; //文件大小 (字节) UINT bfReserved1; //保留 -- 一般为0 UINT bfReserved2; //保留 -- 一般为0 DWORD bfOffBits; }BITMAPFILEHEADER; // bfOffBits 指定从BitmapFileHeader 到图像首 部的字节偏移量
真彩色RGB图像
• 欧几里德距离
d R G B
2 2
2
• 相似度测量
M ij
Dij D
, [0,1]
D为最大欧几里德颜色距离;Dij是两个颜色 见的欧几里德距离
真彩色图像的LSB算法
1、信息隐藏嵌入算法 • 将待隐藏信息转化为二进制数据流; • 将二进制数据流嵌入到彩色图像信息的最 低位; 例:新的图像分量=原图像分量 水印分量 2、信息隐藏提取算法 从BMP文件的数据部分分离出最低位的信 息,进而提取出隐藏的信息字节;
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
分 质量标准 评价 5 极好 感觉不到有差别 4 较好 感觉到有差别但无影响 3 一般 感觉到差别但能容许 2 较差 干扰严重能容许 1 极差 由于干扰图像不清楚,不能接受
质量评价——语音信号
语音质量一般从两方面衡量: • 语音的清晰度 • 自然度:通过语音识别讲话人的难易程度 语音质量评价分为主观评价、客观评价两类 1、平均意见分 分 质量标准 受损程度 MOS 5 极好 不可觉察 较好 可觉察但不影响 费时费力 4 3 一般 轻微影响 稳定性低 2 较差 影响听觉效果
%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 位平面算法
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
真彩色图像的LSB算法
例:嵌入算法 • 将待隐 藏信息的字节长度写入BMP文件标 头部分的保留字节中; • 将隐藏信息转化为二进制数据码流; • 将BMP文件图像数据部分的每个字节的高7 位依次异或后再与上述二进制数码流异或后 的结果写入最低位;
真彩色图像的LSB算法
例:提取算法 (1)读BMP文件头中的保留字节,设为L, 若为0则没有隐藏信息,终止算法;若不为 0则其值为隐藏信息的字节长度; (2)将BMP文件图像数据部分的每个字节的 8位依次异或,并保存其结果; (3)重复第(2)步,使每8个BMP文件图像数 据部分字节经过运算后组成一个隐藏信息 字节; (4)重复(2)、(3)直到隐藏信息字节长度为L。
3.1.1 LSB方法
嵌入方法 ? 秘密信息原样嵌入最低有效位? ? 新的图像分量=原图像分量 秘密信息 P55
m
x7 X6 X5 X4 X3 X2 X1 x0
图像的表示
BMP文件格式 一般由三个部分组成: 位图文件头14:文件类型,大小,偏移字节数 位图信息
● 位图信息头40:图像宽、高和位图数据大小等 ● 调色板:大小取决于色彩数,真彩色图不需要。
3.1.1 LSB方法
? 载体元素数大于秘密信息的比特数,如何 确定秘密信息的嵌入位置? 简单做法:从第一个元素顺序嵌入,其余不变。 安全问题:载体的已修改部分和未修改部分, 具有不同的统计特性 解决方法: • 嵌入秘密信息后,继续嵌入伪随机序列 • 重复嵌入秘密信息,直到载体结束 • 随机间隔:双方利用相同的伪随机数发生 器和伪装密钥,确定隐藏位置。(碰撞)
第三章 信息隐藏算法
第三章 信息隐藏算法
信息隐藏系统的分类 载体 1、 不同载体 隐藏方法不同
图 视 语 文 各类 像 频 音 本 数据 2、载体的修改方式 时域替换技术 P52 变换域技术 扩展频谱技术 …… ……
3.1 位平面算法
♪ 任何数字多媒体信息,在扫描和采样时, 都会产生物理随机噪声,而人的感官系统 对这些随机噪声是不敏感的。 ♪ 替换技术试图用秘密信息比特替换掉随机 噪声,从而达到隐藏秘密信息的目的。 ? 在图像和声音信号中,哪些地方可以用来 隐藏信息的?
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(‘去除第一位平面’)