├── LSB_program ├── PSNR.m ├── cuc.jpg ├── 说明.txt ├── lena.jpg ├── LSB_embed.m ├── LSB_embed.asv ├── LSB_extract.asv ├── LSB_extract.m ├── lsb_watermarked.bmp └── test picture │ ├── lsb_watermarked_JPEG_40.bmp │ ├── lsb_watermarked_JPEG_70.bmp │ ├── lsb_watermarked_JPEG_80.bmp │ ├── lsb_watermarked_JPEG_90.bmp │ ├── lsb_watermarked_NOISE_0.1.bmp │ ├── lsb_watermarked_ROT_0.01.bmp │ ├── lsb_watermarked_ROT_0.02.bmp │ ├── lsb_watermarked_ROT_0.03.bmp │ ├── lsb_watermarked_ROT_0.04.bmp │ ├── lsb_watermarked_NOISE_0.01.bmp │ ├── lsb_watermarked_NOISE_0.03.bmp │ ├── lsb_watermarked_NOISE_0.05.bmp │ ├── test_JPEG.txt │ ├── test_ROT.txt │ └── test_NOISE.txt └── README.md /LSB_program/PSNR.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Resulte/digital-watermarking/HEAD/LSB_program/PSNR.m -------------------------------------------------------------------------------- /LSB_program/cuc.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Resulte/digital-watermarking/HEAD/LSB_program/cuc.jpg -------------------------------------------------------------------------------- /LSB_program/说明.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Resulte/digital-watermarking/HEAD/LSB_program/说明.txt -------------------------------------------------------------------------------- /LSB_program/lena.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Resulte/digital-watermarking/HEAD/LSB_program/lena.jpg -------------------------------------------------------------------------------- /LSB_program/LSB_embed.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Resulte/digital-watermarking/HEAD/LSB_program/LSB_embed.m -------------------------------------------------------------------------------- /LSB_program/LSB_embed.asv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Resulte/digital-watermarking/HEAD/LSB_program/LSB_embed.asv -------------------------------------------------------------------------------- /LSB_program/LSB_extract.asv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Resulte/digital-watermarking/HEAD/LSB_program/LSB_extract.asv -------------------------------------------------------------------------------- /LSB_program/LSB_extract.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Resulte/digital-watermarking/HEAD/LSB_program/LSB_extract.m -------------------------------------------------------------------------------- /LSB_program/lsb_watermarked.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Resulte/digital-watermarking/HEAD/LSB_program/lsb_watermarked.bmp -------------------------------------------------------------------------------- /LSB_program/test picture/lsb_watermarked_JPEG_40.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Resulte/digital-watermarking/HEAD/LSB_program/test picture/lsb_watermarked_JPEG_40.bmp -------------------------------------------------------------------------------- /LSB_program/test picture/lsb_watermarked_JPEG_70.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Resulte/digital-watermarking/HEAD/LSB_program/test picture/lsb_watermarked_JPEG_70.bmp -------------------------------------------------------------------------------- /LSB_program/test picture/lsb_watermarked_JPEG_80.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Resulte/digital-watermarking/HEAD/LSB_program/test picture/lsb_watermarked_JPEG_80.bmp -------------------------------------------------------------------------------- /LSB_program/test picture/lsb_watermarked_JPEG_90.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Resulte/digital-watermarking/HEAD/LSB_program/test picture/lsb_watermarked_JPEG_90.bmp -------------------------------------------------------------------------------- /LSB_program/test picture/lsb_watermarked_NOISE_0.1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Resulte/digital-watermarking/HEAD/LSB_program/test picture/lsb_watermarked_NOISE_0.1.bmp -------------------------------------------------------------------------------- /LSB_program/test picture/lsb_watermarked_ROT_0.01.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Resulte/digital-watermarking/HEAD/LSB_program/test picture/lsb_watermarked_ROT_0.01.bmp -------------------------------------------------------------------------------- /LSB_program/test picture/lsb_watermarked_ROT_0.02.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Resulte/digital-watermarking/HEAD/LSB_program/test picture/lsb_watermarked_ROT_0.02.bmp -------------------------------------------------------------------------------- /LSB_program/test picture/lsb_watermarked_ROT_0.03.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Resulte/digital-watermarking/HEAD/LSB_program/test picture/lsb_watermarked_ROT_0.03.bmp -------------------------------------------------------------------------------- /LSB_program/test picture/lsb_watermarked_ROT_0.04.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Resulte/digital-watermarking/HEAD/LSB_program/test picture/lsb_watermarked_ROT_0.04.bmp -------------------------------------------------------------------------------- /LSB_program/test picture/lsb_watermarked_NOISE_0.01.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Resulte/digital-watermarking/HEAD/LSB_program/test picture/lsb_watermarked_NOISE_0.01.bmp -------------------------------------------------------------------------------- /LSB_program/test picture/lsb_watermarked_NOISE_0.03.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Resulte/digital-watermarking/HEAD/LSB_program/test picture/lsb_watermarked_NOISE_0.03.bmp -------------------------------------------------------------------------------- /LSB_program/test picture/lsb_watermarked_NOISE_0.05.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Resulte/digital-watermarking/HEAD/LSB_program/test picture/lsb_watermarked_NOISE_0.05.bmp -------------------------------------------------------------------------------- /LSB_program/test picture/test_JPEG.txt: -------------------------------------------------------------------------------- 1 | ---------------------------------------------- 2 | ImageWM_Benchmark log file 3 | ---------------------------------------------- 4 | 5 | 6 | 7 | ---------------------------------------------- 8 | Original Image Name: 9 | 10 | Embeding Image Name:C:\Users\liwei\Desktop\LSB\LSB_program\lsb_watermarked.bmp 11 | ---------------------------------------------- 12 | 13 | JPEG Attack Parameter:90 14 | 15 | JPEG Attacked Image:C:\Users\liwei\Desktop\LSB\LSB_program\lsb_watermarked_JPEG_90.bmp 16 | 17 | JPEG Attack Parameter:70 18 | 19 | JPEG Attacked Image:C:\Users\liwei\Desktop\LSB\LSB_program\lsb_watermarked_JPEG_70.bmp 20 | 21 | JPEG Attack Parameter:80 22 | 23 | JPEG Attacked Image:C:\Users\liwei\Desktop\LSB\LSB_program\lsb_watermarked_JPEG_80.bmp 24 | 25 | 26 | JPEG Attack Parameter:40 27 | 28 | JPEG Attacked Image:C:\Users\liwei\Desktop\LSB\LSB_program\lsb_watermarked_JPEG_40.bmp 29 | 30 | -------------------------------------------------------------------------------- /LSB_program/test picture/test_ROT.txt: -------------------------------------------------------------------------------- 1 | ---------------------------------------------- 2 | ImageWM_Benchmark log file 3 | ---------------------------------------------- 4 | 5 | 6 | 7 | ---------------------------------------------- 8 | Original Image Name: 9 | 10 | Embeding Image Name:C:\Users\liwei\Desktop\LSB\LSB_program\lsb_watermarked.bmp 11 | ---------------------------------------------- 12 | 13 | Rotation Attack Parameter:1202590843 14 | 15 | Rotation Attacked Image:C:\Users\liwei\Desktop\LSB\LSB_program\lsb_watermarked_ROT_0.01.bmp 16 | 17 | Rotation Attack Parameter:1202590843 18 | 19 | Rotation Attacked Image:C:\Users\liwei\Desktop\LSB\LSB_program\lsb_watermarked_ROT_0.02.bmp 20 | 21 | Rotation Attack Parameter:-1717986918 22 | 23 | Rotation Attacked Image:C:\Users\liwei\Desktop\LSB\LSB_program\lsb_watermarked_ROT_0.05.bmp 24 | 25 | 26 | Rotation Attack Parameter:-343597384 27 | 28 | Rotation Attacked Image:C:\Users\liwei\Desktop\LSB\LSB_program\lsb_watermarked_ROT_0.03.bmp 29 | -------------------------------------------------------------------------------- /LSB_program/test picture/test_NOISE.txt: -------------------------------------------------------------------------------- 1 | ---------------------------------------------- 2 | ImageWM_Benchmark log file 3 | ---------------------------------------------- 4 | 5 | 6 | 7 | ---------------------------------------------- 8 | Original Image Name: 9 | 10 | Embeding Image Name:C:\Users\liwei\Desktop\LSB\LSB_program\lsb_watermarked.bmp 11 | ---------------------------------------------- 12 | 13 | AddNoise Attack Parameter:-1717986918 14 | 15 | AddNoise Attacked Image:C:\Users\liwei\Desktop\LSB\LSB_program\lsb_watermarked_NOISE_0.05.bmp 16 | 17 | AddNoise Attack Parameter:-1717986918 18 | 19 | AddNoise Attacked Image:C:\Users\liwei\Desktop\LSB\LSB_program\lsb_watermarked_NOISE_0.1.bmp 20 | 21 | AddNoise Attack Parameter:1202590843 22 | 23 | AddNoise Attacked Image:C:\Users\liwei\Desktop\LSB\LSB_program\lsb_watermarked_NOISE_0.01.bmp 24 | 25 | AddNoise Attack Parameter:-343597384 26 | 27 | AddNoise Attacked Image:C:\Users\liwei\Desktop\LSB\LSB_program\lsb_watermarked_NOISE_0.03.bmp 28 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # digital-watermarking 2 | 数字水印技术,基于LSB算法图像信息隐藏 3 | 4 | ### 1、基本原理 5 | 6 | 首先将原始图片位平面分解: 7 | 8 | ![位平面](https://edu-boker.oss-cn-beijing.aliyuncs.com/crypto/digital1.png) 9 | 10 | 可以看到一幅256灰度的图像为例, 256灰度共需要8个位来表示, 但其中每一个位的作用是不一样的, 越高位对图像的影响越大, 反之越低的位影响越小, 甚至不能感知。 11 | 12 | 从几个位平面图中可以看出, 较高的位平面反映的图像的轮廓等主要信息, 而较低的位平面反映的是图像的细节信息, 最低的2个位平面看上去和图像几乎没有相关性, 像是噪声。 13 | 14 | 故LSB算法利用了数字图像处理中位平面的原理, 即改变图像的最低位的信息, 对图像信息产生的影响非常小,人眼的视觉感知系统往往不能察觉。基于这个原理, 如果将最低位替换成数字水印的数据, 人眼也难以察觉加入数字水印前后的图像的变化, 这样就能够实现数字水印的不可感知性。 15 | 16 | LSB 算法简单实现容易, 同时可以保证数字水印的不可见性, 由于可以在最低位的每个像素上都插入数字水印信息, 因此有较大的信息嵌入量。但是由于数字水印位于图像的不重要像素位上, 因此很容易被图像过滤、量化和几何型变等操作破坏, 以致无法恢复数字水印。 17 | 18 | ### 2、水印嵌入 19 | 20 | 要嵌入的水印的信息: 21 | 22 | ![水印](https://edu-boker.oss-cn-beijing.aliyuncs.com/crypto/digital2.png) 23 | 24 | 嵌入到LSB位平面后: 25 | 26 | ![LSB](https://edu-boker.oss-cn-beijing.aliyuncs.com/crypto/digital3.png) 27 | 28 | 可以主观的看到,两幅图像的差别是非常小的,人眼的视觉感知系统很难感知。这样就能够实现数字水印的不可感知性。 29 | 30 | 我们也可以对比一下将水印嵌入到其他位平面的效果: 31 | 32 | ![其他位平面](https://edu-boker.oss-cn-beijing.aliyuncs.com/crypto/digital4.png) 33 | 34 | 也可以很主观的看到,嵌入的位平面越高,能感知到的水印信息也越多。 35 | 36 | ### 3、客观评价 37 | 38 | 当然我们也计算一些客观评价指标来衡量: 39 | 40 | 位平面0嵌入信息后的PSNR:50.5353,SSIM: 0.9970 41 | 42 | 位平面1嵌入信息后的PSNR:44.5323,SSIM: 0.9883 43 | 44 | 位平面2嵌入信息后的PSNR:38.5038,SSIM: 0.9559 45 | 46 | 位平面3嵌入信息后的PSNR:32.5212,SSIM: 0.8633 47 | 48 | 位平面4嵌入信息后的PSNR:26.2755,SSIM: 0.6746 49 | 50 | 位平面5嵌入信息后的PSNR:20.5513,SSIM: 0.4933 51 | 52 | 位平面6嵌入信息后的PSNR:14.3360,SSIM: 0.2566 53 | 54 | 位平面7嵌入信息后的PSNR:7.8879,SSIM: 0.1071 55 | 56 | 位平面越高,PSNR越小,SSIM也越小。 57 | 58 | 与前面实验中得到的主观差别趋势是一致:位平面越高,与原图差异越大,隐藏信息暴露出来的越多。 59 | 60 | 综上,在LSB位平面也就是位平面0嵌入的客观评价指标是最好的,所以选择LSB位平面嵌入水印。 --------------------------------------------------------------------------------