Blog3 12月周报

我与影子孤独终老i 提交于 2019-12-29 11:40:04

12月1日
这周的任务主要是针对各科的大作业进行了一定的投入,对 论文里面的实验的 789 和 10 进行了一定的代码的撰写和调试, 虽然结果还不是很正确,但相比之前已经有了很大的改善。 目前比较困惑的点就是, 1. 实验 4 的 Heat map of density distribution,已经会将显示一个 图像的 heatmap,可利用函数 hom=HeatMap(flipud(im2double(a)),‘Standardize’,‘COLUMN’);显 示,但是论文是显示分块类型中的 4 和 5 的嵌入块数随第一部分 的 0 或 1 的个数 n’概率分布的热图,目前会显示块数和 n’,但是 还不能实现其概率和热图。 2. 实验 5 等,论文里面的叙述是,先进性数据提取,再进行图 像解密和图像恢复,但是论文的实验却都在显示嵌入数据之后的 图像解密和图像恢复的图像,代码实现之后,虽然能恢复图像, 但图像的质量不是很高,视觉效果也很差。因为在加密图像的基 础上进行的嵌入数据,我认为应该先提前取出数据,而且论文中 加进嵌入数据时,利用稀疏矩阵的冗余块加密,嵌入的是 water=randn(1,num)<0.5;的随机产生的数据,也并没再提及之前 论文所示的数据加密密钥,我认为这个随机数据应该充当密钥, 在提取时,仍然使用这个 water 的值。 3. 后续的一些 78910 等都是一些嵌入率和信噪比的比较结果, 目前能显示一幅幅图像的结果,但是不知道什么原因导致数据还 有出入,正在调试。
12月·8日
通过和论文作者的沟通,这周大致弄明白了上周的论文疑惑 处,对论文的实验有了进一步的了解,知道嵌入率和信噪比的率 失真性能曲线是作者模拟出来的,同时提取数据和恢复图像是可 交换的顺序,论文并没有提出先后。对于图像置乱解密已经弄懂, 但对于提取数据,恢复图像,进行操作后数据总是出错。作者说 并未按照文章叙述的进行解密,所以,目前对数据提取的操作还 存在疑惑。 此外,这周还完成了专业数学的论文报告,选择了一篇有关 奇异值分解的数字水印的论文,通过修改 CSDN 上下载的代码, 实现了数字水印在 SVD 域的水印嵌入和提取,混入噪声后的嵌 入和提取验证了该方案的鲁棒性。并完成了网络与系统安全的大 作业。
12月·15日
本周主要是答疑了那篇论文中的问题和基本理解了数字水印在空域(时域)的代表算法 LSB 和在变换 域的代表算法 DCT,看懂其基本的代码和理解其思路方法。 一、论文答疑部分 1 信息熵 信息熵比论文中要高,说明加密效果更好,所以检查下加密步骤对不对,或者我俩用的图像是不是相同的 2 kh 密钥 数据嵌入的秘钥 Kh 就相当于数据加密密钥,也就是说嵌入之前对信息进行加密,所以可以用随机数模拟加 密后的信息(无序)。直接提取的信息是加密的,用密钥解密就可以得到信息。嵌入信息不是随机产生的。 比如现在需要嵌入的信息是 00000001111111,利用 Kh 将其加密,就变成了 0010110101010110 这样无序混 乱的信息,将这一串加密后的信息嵌入进加密图像中。之后将信息提取出来后(也就是 0010110101010110), 利用 Kh 解密,得到 00000001111111。我程序中省去了 Kh 加密这个步骤,反正信息加密后是无序混乱的, 所以我就用随机数来代替,程序偷懒了 3 解密图像 这里的解密图像不是原图,是包含了加密信息的原图,与原图有些差异。具体是在根据嵌入率的不同在原 图的 LSB 中嵌入了加密信息 理论上如果有解密密钥的话,是可以直接得到原图的。但是一般解密图像的定义是知道图像内容,并且包 含了嵌入进的信息。所以我这里在解密后仍然将加密后的信息重新嵌入进了原图中,将这个图像取名解密 图像。 还是有点没明白,解密图像是直接对原图进行嵌入信息得到的还是对置乱加密图像嵌入信息,然后解密置 乱得到的啊?还是两个都一样的 不一样的,因为在算法的第二个部分,将信息嵌入进加密图像的 LSB,将图像解密置乱后,信息是留在了 原图的 MSB 中,这时 PSNR 会很小。所以我是将置乱解密、反编码恢复图像后,将信息转移到了 LSB 中置乱 解密,之后嵌入信息在 MSB,再进行提取信息,得到原图,在 LSB 中嵌入信息就是解密图像, 4 heatmap heat map 这张图只是统计了 lena 图中 n’和块的对应关系 横坐标是前半块中 0,1 个数,纵坐标是 4,5 类型空余位数 就是说明 n’=0,嵌入 bit 为 7 的这种情况比较多而已 因为 n’=0,大概率 m 比较小,所以后半块也没几个少数的 0 或者 1,所以空余位多 5 嵌入率 例如 lena 的最大嵌入率为 1.7,可以选取几个不高于 1.7 的几个嵌入率,0.5,1.0,1.5,1.7 等 比如 lena 大小为 100100,嵌入率取为 0.5,那么就生成 5000 个随机的 01 代表信息,将这 5000 个 01 替 换掉 lena 原图的一半像素的第 8 个 bit,从而得到 psnr 嵌入率为 1 则生成 10000 个随机 01,替换所有像素的第 8 个 bit 嵌入率为 1.5 时,生成 15000 个随机 01,替换所有像素的的第 8 个 bit 和一半像素的第 7 个 bit 6 置乱解密和嵌入数据解密顺序 先图像置乱然后嵌入数据的,数据提取和图像解密这个前后顺序都可以的,解密的部分没有按照论文来, 是模拟出的。 因为在接收端有加密密钥的话,就可以将图像无损恢复,解密图像是将加密图像中嵌入的信息提取出, 然后利用加密密钥对图像恢复后,再次将信息嵌入进恢复图像的 LSB 中。 模拟就是首先计算出图像的最大嵌入率,然后根据嵌入率生成对应数量的随机数,将这随机数嵌入进图像 的 lsb 就可以得到解密图像,从而计算 psnr。 二、LSB 随机替换的嵌入与提取实现 LSB 是最不重要比特位,LSB 算法是利用数字图像中位平面的原理。改变图像的最低位的信息,256 灰 度图像共需要 8 个位来表示,越高位的影响越大,反之,越低的位影响越小,甚至不能感知。如果嵌入最
低的 1 位,则可以嵌入的信息量是原始图像信息量的 1/8,如果是最低 2 位,则是 1/4。还要适当调整数字 水印图像的大小和比特位数,以适应数字水印图像数据量的要求。先将原始图像中要使用的最低位置 0, 再将数字水印数据放入原始图像最低位即可。置 0 的方法是调用模 2 函数 mod(a,2)将得到的数值与原 水印相减,从而得到最低位为 0 的图片。使用两位最低有效位的话,则使用 mod (a, 4)。 将 message.txt 中的明文消息随机嵌入到载体图像中,得到载密图像。从载密图像中将消息提取出来, 放至文件 secret.txt 中。运行 LSB.m 文件就可以得到原图,嵌入信息之后的图,和 LSB 平面的分布图。主 要是调用了 lsbRhide 进行信息的隐藏,lsbRget 得到了信息的提取,其中 randinterval 可以得到信息嵌 入的位置。主要涉及的核心代码是有 嵌入位置: randinterval 函数找到嵌入位置[row col]=randinterval(C,L,K) %每次第一次调用 rand(1,L)时,结果都是相同的 rand(‘seed’,k); a=rand(1,L); 嵌入信息隐藏: C_M(row(i),col(i))=C1(row(i),col(i))-mod(C1(row(i),col(i)),2)+M1(i,1) 提取隐藏信息: S(1,i)=mod(C_M1(row(i),col(i)),2); 三.DCT 原理及基本方法 D = A
IA’; 和 D1 = dct2(I); %matlab DCT 函数进行 DCT 变换,D 和 D1 的结果是一致的。 主要是利用二维 DCT 变换和逆变换进行水印嵌入和提取。在基于 DCT 的变换编码中,图像是先经分块 (8×8 或 16×16)后再经 DCT,这种变换是局部的,只反映了图像某一部分的信息。当然也可以对整幅图 像的特点,但是运算速度比分块 DCT 要慢。算法思路是:嵌入信息是首先将原始图像进行 88 分块的 DCT 变换,DCT 系数量化后将密文信息嵌入进去,然后进行 IDCT 变换得到隐秘图像。提取水印信息是将隐秘图 像进行 8*8 分块,再 DCT 变换后进行信息提取得到水印信息。 主要就是应用 matlab 里面的函数 dct2 和 idct2 进行变换的。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!