一、LSB Matching Revisited摘要


这篇本章提出了对最低有效位(LSB)匹配的修改,这是一种将信息位嵌入静止图像的隐写法。在LSB匹配中,从载体图像的像素中增加或减少一个的选择是随机的。新方法使用选择将两个载体像素的二进制函数设置为所需的值。使用一对像素作为单位来执行嵌入,其中第一个像素的LSB携带一个比特的信息,两个像素值的函数携带另一个比特的信息。因此,改进后的方法允许嵌入与LSB匹配相同的有效载荷,但对载体图像的变化较少。实验结果表明,该方法在失真和抗隐写分析方面优于传统的LSB匹配。

二、提出的方法

提出的方法使用灰度载体图像。信息嵌入一次针对两个载体图像的像素进行。这两个像素的灰度值是xi和xi+1。信息嵌入后,第i个信息位mi的值等于隐写图像的第i个像素yi的LSB。第i+1个信息位mi+1的值是yi和yi+1的函数,其中函数为 f(yi,yi+1)=LSB(⌊yi/2⌋+yi+1)。一对像素的嵌入算法如下图所示:

注意文中提出的一个细节:

A step in the algorithm yi+1=xi+1 ±1 either adds or subtracts one from the cover image pixel xi+1. The choice of whether to add or subtract one is performed separately, both for the even- and odd-valued regions. The even- and odd-valued regions refer to the areas of the cover image where the pixel values are even and odd, respectively.
即:算法中的一个步骤是yi+1=xi+1 ±1,从载体图像像素xi+1中增加或减去一个。对偶数和奇数区域来说,是加一还是减一的选择是单独进行的。偶数和奇数区域指的是载体图像中像素值分别为偶数和奇数的区域。暗示我们在复现论文时,需要对奇偶区域分情况讨论

2008年一篇名为An Information Hiding Scheme Using Sudoku的文章对LSB Matching Revisited提出的算法总结得更加到位:

三、实例验证

(1)M1:

解释:信息位和载体图像像素值的LSB都是0,保持不变。

(2)M2:


解释:信息位分别为0和1,第一个信息位与第一个载体图像像素值LSB相等,进入算法的第二if,有f(120,130)不等于第二个信息位,执行加减一操作即有两个值,此处需要判断第二信息位奇偶,算法中并没有明确分情况讨论仅以yi+1=xi+1 ±1表示。

(3)M3:

解释:信息位分别为1和0,第一个信息位与第一个载体图像像素值LSB不相等,进入else,又第二信息位与f(119,130)不相等(简单计算一下:119/2向下取整为59,又59+130=189,其二进制数为10111101,即LSB为1,0和1不相等),即进入else中的else操作,即yi=120+1=121,直接令yi+1=xi+1。

(4)M4:

解释:信息位分别为1和0,第一个信息位与载体图像第一个像素值LSB不相等,进入else,根据算法又第二个信息位与f(119,130)相等(简单计算一下:119/2向下取整为59,又59+130=189,其二进制数为10111101,即LSB为1),则yi=120-1=119,直接令yi+1=xi+1。

四、matlab代码复现

1、lsbmatching.m

function cover_image=lsbmatching(cover_image,message_image,M,N,m,n)
% lsbmatching函数实现将信息图像嵌入载体图像
% lsb_image为载体图像
% message_image为信息图像
% M,N,m,n为载体和信息图像大小(其实M=m,N=n,即要求载体和信息图像大小相等才可以实现改进的LSB匹配算法)for i=1:mfor j=1:2:n    % 注意改进的LSB算法中,要求对一对像素值同时进行操作,故对于列要以间隔为2进行遍历,且注意数组越界问题(当列等于图像的宽或宽减一时说明已经遍历到头则需进行下一行的遍历)if (j==n||j==n-1)&&(i<m)i=i+1;endif message_image(i,j)==mod(cover_image(i,j),2) % 信息图像第一个像素值与载体图像的LSB相同的前提下进入判断if message_image(i,j+1)~=mod((floor(cover_image(i,j)/2)+cover_image(i,j+1)),2) %  信息图像第二个像素值与公式计算出的载体图像的LSB不相同时,对载体图像的像素值执行加一或减一操作if mod(cover_image(i,j+1),2)==1              % 当载体图像的像素值为奇数时执行减一操作cover_image(i,j+1)=cover_image(i,j+1)-1;endif mod(cover_image(i,j+1),2)==0              % 当载体图像的像素值为偶数时执行加一操作cover_image(i,j+1)=cover_image(i,j+1)+1;endelse   % 信息图像第二个像素值与公式计算出的载体图像的LSB相同时,载体图像的第二个像素值保持不变cover_image(i,j+1)=cover_image(i,j+1);end    % 上面已经判断过信息图像第一个像素值与载体图像的LSB相同,载载体图像的第一个像素值保持不变cover_image(i,j)=cover_image(i,j);elseif message_image(i,j)~=mod(cover_image(i,j),2)if message_image(i,j+1)==mod((floor(cover_image(i,j)/2-1)+cover_image(i,j+1)),2)cover_image(i,j)=cover_image(i,j)-1;elsecover_image(i,j)=cover_image(i,j)+1;end    % 上面已经判断过信息图像第二个像素值与载体图像的LSB相同,载载体图像的第二个像素值保持不变cover_image(i,j+1)=cover_image(i,j+1);endend
end
end

2、main.m

% 此三句清空语句需要写,若不写执行一次后,注释掉计算M,N,m,n的语句后仍能正常运行
close all;
clear all;
clc;
% 此处一定要注意im2double和double的区别,此处不能使用im2double,否则提取不出信息图像
% 应用LSB算法的图像格式需为位图形式,即图像不能经过压缩(如LSB算法多应用于png、bmp等格式,而jpg格式较少)
cover_image=double(rgb2gray(imread('football.bmp')));
message_image=double(imbinarize(rgb2gray(imread('message.bmp'))));
[M,N]=size(cover_image);
[m,n]=size(message_image);
hide_image=lsbmatching(cover_image,message_image,M,N,m,n);figure(1),
subplot(131),imshow(cover_image,[]);
title('载体图像');
subplot(132),imshow(message_image,[]);
title('信息图像');
subplot(133),imshow(hide_image,[]);
title('隐藏信息后的图像');B=8;         % 编码一个像素用多少二进制位
MAX=2^B-1;   % 图像有多少灰度级
MES=sum(sum((cover_image-hide_image).^2))/(M*N);     % 均方差
PSNR=20*log10(MAX/sqrt(MES));                        % 峰值信噪比
fprintf ('峰值信噪比是: % f\n' ,PSNR);

3、实现效果

命令行的输出结果:

峰值信噪比是:  53.171460

五、文章不足

1、对于像素值255和0无法进行加一和减一的操作,造成越界。
2、本算法只适用于灰度图像,无法在彩色图像上进行操作。
3、没有研究如何改变秘密信息嵌入的顺序来抵御传播过程中的失真。
4、文章只给出了秘密信息的嵌入算法,并没有给出秘密信息的提取算法,正常的思路只能是通过嵌入的逆向操作来获取秘密信息,但是过程中可能存在安全性问题。

由于刚刚开始学习图像处理,对于很多知识理解不到位。如有错误,恳请指正,任重而道远,慢慢加油!

PS:对秘密信息的提取算法尚未成功复现,后面若复现成功,再回来补充!

论文网址:
(1)LSB matching revisited
(2)An Information Hiding Scheme Using Sudoku

图像处理之LSB Matching Revisited论文复现相关推荐

  1. 人工智能:为什么很多机器学习和深度学习的论文复现不了?

    吴恩达老师曾经说过,看一篇论文的关键,是复现作者的算法. 然而,很多论文根本就复现不了,这是为什么呢? 一.数据关系 因为作者使用的数据比较私密,一般人拿不到,这种情况下,即使作者提供了源代码,但是读 ...

  2. 论文无法复现「真公开处刑」,PapersWithCode上线「论文复现报告」

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源丨机器之心 编辑丨极市平台 导读 近日,机器学习资源网站 Pap ...

  3. 公开处刑:PapersWithCode上线“论文复现报告”,遏制耍流氓行为!

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 成功复现一篇论文到底有多难? 大概就像这样吧: 可太TM难了--相信这是大多数机器学习研究者都吐槽过的 ...

  4. 经典论文复现 | LSGAN:最小二乘生成对抗网络

    来源:PaperWeekly 本文约2500字,建议阅读10分钟. 本文介绍了经典AI论文--LSGAN,它比常规GAN更稳定,比WGAN收敛更迅速. 笔者这次选择复现的是 Least Squares ...

  5. 这个顶会论文复现比赛,单篇最高现金奖3W!

    飞桨论文复现挑战赛(第六期)和春天一起来啦!本次挑战赛再度升级,无论是奋战过前五期比赛的复现冠军,还是首次接触论文复现的潜力选手,都有惊喜赛题任务等你来挑战. 论文复现是深入掌握前沿模型原理的最优方式 ...

  6. 宅在家限制智力输出?这场论文复现赛让思维发光

    农历庚子鼠年,我们经历了一个不一样的春节. 大朋友和小朋友宅在家中,囤了口罩,肥了蛮腰,同时还收获了大把的时间来感受宅的无聊.但宅真的一无是处吗?显然并非如此. 当前,宅不仅是一种有效的为国做贡献的举 ...

  7. 这场论文复现的华山论剑,谁能拔得头筹

    问世间,AI技术谁家最高? 每人都有不同的看法.而在各个市场调研机构的眼中,评价一家企业AI技术实力最直观的数据,就是其AI专利和相关论文的产出量. 而评价一个员工在AI方面能力的高低就要复杂一些.因 ...

  8. 经典论文复现 | 基于深度卷积网络的图像超分辨率算法

    过去几年发表于各大 AI 顶会论文提出的 400 多种算法中,公开算法代码的仅占 6%,其中三分之一的论文作者分享了测试数据,约 54% 的分享包含"伪代码".这是今年 AAAI ...

  9. 经典论文复现 | 基于标注策略的实体和关系联合抽取

    过去几年发表于各大 AI 顶会论文提出的 400 多种算法中,公开算法代码的仅占 6%,其中三分之一的论文作者分享了测试数据,约 54% 的分享包含"伪代码".这是今年 AAAI ...

最新文章

  1. 比较顺利 - Python基础2
  2. C 语言编程 — GCC 工具链
  3. VTK:颜色顶点查找表用法实战
  4. boost::container实现显式实例map的测试程序
  5. Java实现Huffman哈夫曼树(数组实现)
  6. java linearlayout_LinearLayout属性用法和源码分析
  7. python虚拟机 基于寄存器_虚拟机随谈(一):解释器,树遍历解释器,基于栈与基于寄存器,大杂烩...
  8. Xcode 7.3 解决自定义类无法自动联想
  9. iOS开发之获取当前手机语言
  10. (已更新)漫画小程序更新修复接口,自动采集资源,漫画源码漫画小程序源码简单即可发布
  11. 对JSON格式的城市按照拼音首字母排序
  12. 软件项目需求调研报告模板下载_「软件项目管理入门」(21) 需求调研和需求分析怎么做?...
  13. 广告投放媒体发展简史
  14. Android打开项目一直build的问题解决
  15. Java面试题大全(part_4)
  16. linux进程监控及管理
  17. Material Design 总结
  18. 6-4 批量求和(*) (20分)
  19. 游戏团队,各职位人员离职所带来的影响和不同
  20. 移动宽带运营商服务器未响应,中国移动宽带网络有问题怎么办

热门文章

  1. 错误:is quoted with which must be escaped when used within the value
  2. 巧用搜索引擎---如何在指定网站中搜索
  3. 新手入门linux必看
  4. Kubernetes_28_Ingress服务暴露
  5. 【PR 基础】PR界面简介
  6. 偏导数(Partial Derivative)
  7. 关于 Flash Builder
  8. cad注释比例和打印比例不一样_CAD注释性比例该如何设置?看完你就懂了
  9. 清末民初张家口地区服饰习俗变迁探研
  10. 运营︱快速提高app日活的方法