空间域LSB的数字水印
根据数字水印技术作用域的不同,数字水印技术可以分为空间域水印技术和变换域水印技术。空间域技术都是使用各种方法直接改变图像的像素,直接将水印信息加载在数据上,属于早期的数字水印研究,典型的几种空域水印算法包括:最低有效位方法(LSB)、Patchwork方法、文档结构微调方法等。我们今天来详细介绍一下作为空间域水印的基础LSB方法的数字水印。
LSB方法的原理
在敲代码之前,我们先解释一下LSB方法的原理,了解了原理会更好的理解每一步代码。LSB全称为Least Significant Bit,解释为“最低有效位”,什么是最低有效位?我们知道,像素是数字图像的基本元素,图像是由像素构成的,而每个像素又是由多比特的方式构成的,在灰度图像中,每个像素通常为8位,在RGB图像中,每个像素为24比特(R,G,B三色各8位)每一位的取值为0或1。
对于8位的灰度图像,我们可以把图像分为8个位平面,从LSB(最低有效位0)到MSB(最高有效位7)。从位平面的分布来看,随着位平面从低位到高位(即从位平面0到位平面7),位平面图像的特征逐渐变得复杂,细节不断增加,比较低的位平面包含的图像信息很少,所以,改变低位对图像的质量影响不大。LSB方法就是利用了这一点,在图像的低位隐藏水印信息。
从原理上我们就能看出这种方法简单,计算量小,隐藏量大,但很明显,鲁棒性很差,攻击者只需通过简单的操作删除图像低位数据或者对数字图像进行某种简单数学变换就可将水印信息滤除或破坏掉,因此以LSB方法为原型,产生了很多变形的LSB方法。
LSB数字水印源代码(matlab)
嵌入部分:
%将水印图像按最不重要位(LSB)方法嵌入到载体图像中,并计算PSNR
clc
clear all;
close all;
% 读入载体图像
file_name='lena.bmp';
cover_object=imread(file_name);
cover_object=rgb2gray(cover_object);
figure(1);subplot(1,2,1);
imshow(cover_object,[]);
title('原始图像');
% 读入水印图像
file_name='64.bmp';
message=imread(file_name);
message
发布者:admin,转转请注明出处:http://www.yc00.com/web/1754939421a5217878.html
评论列表(0条)