【图像隐藏】基于LSB算法的数字水印嵌入攻击提取附Matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,
代码获取、论文复现及科研仿真合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab完整代码及仿真定制内容点击👇
智能优化算法 神经网络预测 雷达通信 无线传感器 电力系统
信号处理 图像处理 路径规划 元胞自动机 无人机
🔥 内容介绍
图像隐藏一直是数字水印领域的研究热点之一。数字水印技术可以在不影响原始图像质量的情况下,将一些隐秘信息嵌入到图像中,以实现身份认证、版权保护、内容完整性验证等功能。LSB(Least Significant Bit)算法是一种常用的数字水印嵌入技术,它通过修改图像像素的最低有效位来嵌入水印信息。
然而,正是因为LSB算法的普遍应用,使得图像隐藏系统更容易受到攻击。攻击者可以通过一些技术手段来提取嵌入在图像中的数字水印,从而破坏数字水印的安全性。因此,对LSB算法的攻击提取技术进行研究和分析具有重要意义。
在进行LSB算法的攻击提取研究时,首先需要了解LSB算法的原理和实现方式。LSB算法是通过将水印信息嵌入到图像像素的最低有效位中,来实现对图像的隐藏。攻击者可以通过分析图像的像素值,提取出嵌入的水印信息。常见的攻击提取技术包括统计分析、差异分析、噪声干扰等方法。
统计分析是一种常见的LSB算法攻击提取技术。攻击者可以通过对图像像素值的统计分布进行分析,从而提取出嵌入的水印信息。差异分析则是通过比较原始图像和水印图像的差异来提取水印信息,这种方法对嵌入水印的影响较小,但需要大量的计算资源。噪声干扰是通过向图像中添加噪声来破坏水印信息,从而提取出水印信息。
除了攻击提取技术,LSB算法的安全性还受到一些其他因素的影响。例如,图像的压缩、格式转换、旋转等操作都可能导致嵌入的水印信息丢失或损坏,从而影响数字水印的可靠性。因此,在设计图像隐藏系统时,需要综合考虑这些因素,以提高数字水印的安全性和稳定性。
总的来说,LSB算法是一种常用的数字水印嵌入技术,但也容易受到攻击。攻击者可以通过统计分析、差异分析、噪声干扰等技术来提取嵌入的水印信息,从而破坏数字水印的安全性。因此,对LSB算法的攻击提取技术进行研究和分析具有重要意义,可以帮助提高数字水印系统的安全性和稳定性。希望未来能够有更多的研究关注于数字水印领域,为数字水印技术的发展和应用提供更多的支持和保障。
📣 部分代码
%读取图像
clear all;
clc;
file_name='Lena3.jpg';
cover_object=imread(file_name);
Res =isgray(cover_object); % 判断是否为灰度图,若为0则不是灰度图
if Res == 0
cover_object= rgb2gray(cover_object);
end
%读入信息
file_name1='4.jpg';
message=imread(file_name1);
Res =isgray(message); % 判断是否为灰度图,若为0则不是灰度图
if Res == 0
message= rgb2gray(message);
end
figure
subplot(2,2,1);
imshow(cover_object);
title('载体图像');
hold on;
subplot(2,2,2);
imshow(message);
title('信息图像');
hold on;
LSB_bit=4;
m1=size(message,1);
n1=size(message,2);
[cover_object1,message2]=LSB_encode(cover_object,message,LSB_bit);
subplot(2,2,3);
imshow(uint8(cover_object1));
title('嵌入图像(LSB)');
hold on;
[Img1]=LSB_decode(m1,n1,cover_object1,LSB_bit);
Img1=uint8(Img1);
subplot(2,2,4);
imshow(Img1);
title('提取信息');
hold on;
PSNR=psnr(cover_object1, cover_object);
%1:63.6979,0.9567,0.3442;2:57.5525,0.7440,0.3485;3:51.5839,0.4897,0.3366;4:45.8109,0.2716,0.3306;
% j=imnoise(uint8(cover_object1),'gaussian',0,0.5^2/255^2);
j=imnoise(uint8(cover_object1),'salt & pepper',0.01);
figure
subplot(2,2,1);
imshow(uint8(cover_object));
title('载体图像');
hold on;
subplot(2,2,2);
imshow(uint8(message));
title('信息图像');
hold on;
subplot(2,2,3);
imshow(j);
title('嵌入图像(LSB,加高斯噪声/椒盐)');
hold on;
j=double(j);
[Img1]=LSB_decode(m1,n1,j,LSB_bit)
Img1=uint8(Img1);
subplot(2,2,4);
imshow(Img1);
title('提取信息');
hold on;
Img1=double(Img1);
message=double(message);
error=length(find((Img1-message)~=0))/(size(message,1)*size(message,2));
⛳️ 运行结果


🔗 参考文献
[1] 王东东,王福明.基于LSB数字水印算法的研究与实现[J].山西电子技术, 2014(5):2.DOI:10.3969/j.issn.1674-4578.2014.05.033.
[2] 黄仿元.基于LSB的数字水印算法及MATLAB实现[J].现代机械, 2008(2):3.DOI:10.3969/j.issn.1002-6886.2008.02.025.