数字水印

基于matlab的lsb数字水印

北战南征 提交于 2020-02-04 19:09:24
写本文的目的是记录自己做过的一些东西,深化理解,理清思路,便于回忆。 数字水印将标识信息直接嵌入数字载体,而不影响原载体的使用价值,使用者不易察觉但可以被生产方识别和辨认,可以保护信息安全,实现防伪溯源,也是信息隐藏技术的研究领域之一。 LSB(least significant bits)是最为简单的数字水印制造方法,可以保证水印不被使用人所见,但可以被制造者辨认。 算法原理:通俗来讲我们看到的图片都是由一个个小的像素点来构成的,所有像素点摆在一起,构成一个大方块,这个大方块就是我们所见的图像。灰度图像(也就是我们平时所说的黑白图像)是由一层像素点组成的,而彩色图像是由三层这样的灰度图像组成的。这里拿灰度图像举例,我们之所以能在图像上看到黑色和白色,是因为每个像素点的像素值不同。0表示纯黑,255表示纯白,灰色就是由这两个数字之间的值构成。越靠近0越黑,越靠近255越白。那为什么是0和255呢?因为计算机是二进制,它会用8个比特来表示一个像素点,所以最大值是255,最小是0。lsb就是基于2进制来隐藏信息的,因为人眼并不是很精密的颜色或亮度的感知器,所以把像素上下微调1是不会被人眼察觉的,当我们把图片每个像素的最后一位按照我们的想法改变,使他表现为我们想要的信息,这就是lsb数字水印。​​​ 首先引入一张灰度图像 (从微博上弄下来的,源程序和图片都不见了)

信息隐藏与数字水印技术-转

此生再无相见时 提交于 2019-12-23 04:43:06
1 信息隐藏 1. 1 信息隐藏模型 信息隐藏 (Information Hiding)不同于传统的密码学技术。密码技术主要是研究如何将机密信息进行特殊的编码,以形成不可识别的密码形式 (密文 )进行传递;而信息隐藏则主要研究如何将某一机密信息秘密隐藏于另一公开的信息中,然后通过公开信息的传输来传递机密信息。对加密通信而言,可能的监测者或非法拦截者可通过截取密文,并对其进行破译,或将密文进行破坏后再发送,从而影响机密信息的安全;但对信息隐藏而言,可能的监测者或非法拦截者则难以从公开信息中判断机密信息是否存在,难以截获机密信息,从而能保证机密信息的安全。多媒体技术的广泛应用,为信息隐藏技术的发展提供了更加广阔的领域。 我们称待隐藏的信息为秘密信息 (secret message),它可以是版权信息或秘密数据,也可以是一个序列号;而公开信息则称为载体信息 (cover message),如视频、音频片段。这种信息隐藏过程一般由密钥 (Key)来控制,即通过嵌入算法(Embedding algorithm)将秘密信息隐藏于公开信息中,而隐蔽载体 (隐藏有秘密信息的公开信息 )则通过信道 (Communication channel)传递,然后检测器 (Detector)利用密钥从隐蔽载体中恢复 /检测出秘密信息。 信息隐藏技术主要由下述两部分组成 :(1 )信息嵌入算法

数字水印处理的小小心得!!!

ε祈祈猫儿з 提交于 2019-11-27 23:20:33
因为最近帮老师做一些,有关数字水印的东西,在这里我想记录一下,自己在这次帮老师做数字水印过程中的一些小小心得。 在这个项目中,我们做的是 基于DCT变换的数字水印 ,语言方面用的 java 来实现,当中还用到了, JAVACV 来处理图形。 下面我来说说,我们是如何准备这次数字水印的项目。 第一天,老师先叫我们,看看数字水印的相关论文,然后在网上找代码,在下周二的时候集中讨论,讲讲你找的数字水印算法,是如何实现的,它的基本原理是什么? 那天我就开始找算法,发现网上很多都是,用 matlab 或者 C++ 来实现的,由于本人matlab 不会,再加上呢? 学 C++的时候学的都是一些皮毛,所以我不是特别想找用 c++ 来实现的代码,然后我就一直找,终于在找了很久的情况下,我终于找到了,一个用 java 实现的数字水印代码,然后直接将其copy下来,运行一下,可以成功,感觉不错,然后我就开始了,漫长的 “考古”之旅,因为本人java的相关知识在那个时候,还在努力学习当中,说以当时那个 java 算法中 有些东西是我第一次接触,不是特别懂,比如 BufferedImage 等相关用法不是特别懂,还有对于 图片 的一些性质也不是特别懂,经过几天的查找资料,然后终于,把这个算法看懂了, 在这里我来说说,我第一个找到的,用 java写的数字水印算法,的实现过程 ,第一步,我们在这里设置一个常数