基于MatLab实现LSB(最低有效位)算法完成图片数字水印隐写功能
# 前言
已经好久没写博客了,最近是在有些忙,但是忙里偷闲写一篇新学的知识点,所以准备写这篇博客与大家分享。这篇博文是关于信息安全中的一个简单算法:LSB(最低有效位)算法实现图片数字水印隐写功能,就是如何将我们的水印图片嵌入到主体图像中,其中源码已经上传至GitHub(如上所示),各位读者可以下载使用。其中不仅包括算法源码还有可视化图形界面的代码,方便读者调试使用。废话不多说,下面开始本篇博文的具体内容。
# 一、图像处理基础
1. 图像的分类
我们日常生活中的图像大致分为三类:黑白图像、灰度图像、彩色图像
![在这里插入图片描述](https://img-blog.csdnimg.cn/1903cc46d6234170bed0d7e705cb2ef3.png)
2. 二进制图像
二进制图像顾名思义就是图像像素只存在0,1两个值。一个二进制图像显然是纯黑白的。每一个像素值将取两个离散值(0或1)中的一个,0表示黑,1表示白。
![在这里插入图片描述](https://img-blog.csdnimg.cn/c12a128fe08f4d7ab078878d6637e0a0.png)
3. 灰度图像
灰度图像是每个像素只有一个采样颜色的图像。这类图像通常显示为从最暗黑色到最亮的白色的灰度。一般 使用使用无符号8位整型表示
![在这里插入图片描述](https://img-blog.csdnimg.cn/b2c7f31f8721444aacb307eacbd9e3ef.png)
4. 灰度图像的二维矩阵表示
①:本张图片为一张灰度图片,我们要将其转换为二进制代码表示的矩阵形式,可以使用MatLab或者Python进行处理,在这里我使用MatLab读取图片:A=imread(\`background.bmp\`);
②:下图为读取后的灰度图像对应的二维矩阵,可以看到都是由0-255的数字组成,只有一个通道
![在这里插入图片描述](https://img-blog.csdnimg.cn/eb1331052f6943bb94e62596e1c1747b.png)
5. 灰度图像的二值化方法
所谓灰度图像的二值化方法实际上解决的就是将灰度图像转换为二值图像(黑白图像)这一问题。转换的方法可用伪C语言描述为:
```c
设 G(x,y) 为图像的灰度G的像素
float threshold; //定义一个转换阈值
if (G(x,y) >=threshold)
B(x,y)=1;
else
B(x,y)=0;
```
则下图为G的二值转换图。
![在这里插入图片描述](https://img-blog.csdnimg.cn/74526b4a34674d399ed05a0a8d0ec386.png)
6. RGB图像
RGB图像仅是一类图像的总称,每一个像素的颜色由存储在相应位置的红、 绿、蓝颜色分量共同决定。RGB图像是 24位图像,红、绿、蓝分量分别占用8位,理论上可以包含16M种不同颜色,由于这种颜色精度能够再现图像的真实色彩, 所以又称RGB图像为真彩图像。
![在这里插入图片描述](https://img-blog.csdnimg.cn/d48b57788308494aa5618a4439f79386.png)
7. RGB的表示
我们可以用一个由R、G、B为坐标轴定义的单位立方体来描述一个符合视觉理论的颜色模型。 原点代表黑色,(1,1,1)代表白色,将坐标轴上的顶点称为基色。立方体中的每一个颜色由一个三元组(R,G,B)表示,每一个分量的数值一般在[0,255]区间,每个位置代表不同的颜色,如下两图表示。
![在这里插入图片描述](https://img-blog.csdnimg.cn/3604876e296344d9b5875321891cb2fd.png)
# 二、LSB数字隐写算法
1. LSB简介
空域图像水印技术是指在图像的空间域中嵌入水印的技术。 最简单和有代表性的方案就是用秘密信息代替图像的最低有效位(LSB)或者多个位平面的所有比特的算法。 LSB(Least Significant Bits)算法:将秘密信息嵌入到载体图像像素值的最低有效位。如下图,我们可以将其每八位的最后一位替换成我们的秘密信息,也就完成了信息隐写的过程。
![在这里插入图片描述](https://img-blog.csdnimg.cn/17d1e37146ba414298bd53eddb1544b9.png)
2. LSB原理
①:LSB隐写原理源于图片中的像素一般是由三种颜色组成,即三原色(红绿蓝),由这三种原色可以组成其他各种颜色,在PNG图片的存储中,每个颜色占有8bit,即有256种颜色,一共包含256的三次方颜色,即16777216中颜色,人类的眼睛可以区分约1000万种不同的颜色,剩下无法区分的颜色就有6777216,当我们把其中一些信息改变,图片只发生位变化(取最低位,权值最小),而人是觉察不到这种变化的,当时里面的信息却发生了变化,这样就实现了我们的数字隐写功能。PNG图片格式和BMP图片格式都是一种无损压缩,LSB隐写就是修改了像素中的最低位缩的图片上实现LSB隐写,如果是JPG图片,就没办法使用LSB隐写了,因为其是有损压缩。
②:例如,10进制的235表示的是绿色,我们修改二进制中的最低位,颜色依旧看不出有什么变化,还能保存我们的秘密水印,从而达到隐藏信息的目的
![在这里插入图片描述](https://img-blog.csdnimg.cn/7438796b3c2d427687dfd6fb5a97b62c.png)
3. LSB流程
![在这里插入图片描述](https://img-blog.csdnimg.cn/95ba28acd4d8469eb6d079add015b860.png)
4. LSB特点
- 方法有一般性,可用于变化域
- 非常简单
- 非常快
- 易于实现
- 很高的容量和嵌入效率
- LSB位是随机的,与高位和其他点无关
- 优化比较方便
# 三、LSB数字隐写算法实现
1. 初始化载体图像
![在这里插入图片描述](https://img-blog.csdnimg.cn/379c81cef529451c8a7faf8ee7816e71.png)
2. 初始化水印图像
![在这里插入图片描述](https://img-blog.csdnimg.cn/135336e53d00484c82038ad1d93a7cd7.png)
3. 嵌入水印
![在这里插入图片描述](https://img-blog.csdnimg.cn/b2143588f4294ee78c9ad978c791d464.png)
4. 提取已嵌入水印
![在这里插入图片描述](https://img-blog.csdnimg.cn/a974f3178a49424085d397037f1d9ada.png)
# 四、数字隐写和提取过程
1. 运行image_processing_interface.m进入主界面
![在这里插入图片描述](https://img-blog.csdnimg.cn/b5360f6ebeca411385a122e357c688b8.png)
2. 载入宿主图片
![在这里插入图片描述](https://img-blog.csdnimg.cn/c07b5c7369824e1690a647d669b987c7.png)
3. 载入水印图片
![在这里插入图片描述](https://img-blog.csdnimg.cn/bf5f62e89e314368a171580db0941770.png)
4. 嵌入水印后的宿主图片
![在这里插入图片描述](https://img-blog.csdnimg.cn/b71f95afefb04982863869ee6da9843b.png)
5. 提取到的水印图片
![在这里插入图片描述](https://img-blog.csdnimg.cn/c714ea23f8c844f2accf9aa80c14e20b.png)
6. 二值化后的水印图片
![在这里插入图片描述](https://img-blog.csdnimg.cn/6ec0c695fff44e9b919d57e1dda16da1.png)
# 总结
到此为止这篇博文也告一段落了,这个算法作为信息安全技术的入门算法,还是比较简单易学的,以后我可能会写更多的关于信息安全方面的博客,因为也准备好好学学这个方向,所以请各位读者敬请期待!
没有合适的资源?快使用搜索试试~ 我知道了~
基于MatLab实现LSB(最低有效位)算法完成图片数字水印隐写功能.zip
共39个文件
sample:14个
bmp:4个
head:4个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 191 浏览量
2024-05-08
01:08:52
上传
评论
收藏 1.85MB ZIP 举报
温馨提示
基于MatLab实现LSB(最低有效位)算法完成图片数字水印隐写功能 1. LSB简介 空域图像水印技术是指在图像的空间域中嵌入水印的技术。 最简单和有代表性的方案就是用秘密信息代替图像的最低有效位(LSB)或者多个位平面的所有比特的算法。 LSB(Least Significant Bits)算法:将秘密信息嵌入到载体图像像素值的最低有效位。如下图,我们可以将其每八位的最后一位替换成我们的秘密信息,也就完成了信息隐写的过程。 2. LSB原理 ①:LSB隐写原理源于图片中的像素一般是由三种颜色组成,即三原色(红绿蓝),由这三种原色可以组成其他各种颜色,在PNG图片的存储中,每个颜色占有8bit,即有256种颜色,一共包含256的三次方颜色,即16777216中颜色,人类的眼睛可以区分约1000万种不同的颜色,剩下无法区分的颜色就有6777216,当我们把其中一些信息改变,图片只发生位变化(取最低位,权值最小),而人是觉察不到这种变化的,当时里面的信息却发生了变化,这样就实现了我们的数字隐写功能。PNG图片格式和BMP图片格式都是一种无损压缩,LSB隐写就是修改了像素中的最低位缩的图片上实现LSB隐写,如果是JPG图片,就没办法使用LSB隐写了,因为其是有损压缩。 ②:例如,10进制的235表示的是绿色,我们修改二进制中的最低位,颜色依旧看不出有什么变化,还能保存我们的秘密水印,从而达到隐藏信息的目的 3. LSB特点 - 方法有一般性,可用于变化域 - 非常简单 - 非常快 - 易于实现 - 很高的容量和嵌入效率 - LSB位是随机的,与高位和其他点无关 - 优化比较方便
资源推荐
资源详情
资源评论
收起资源包目录
基于MatLab实现LSB(最低有效位)算法完成图片数字水印隐写功能.zip (39个子文件)
LSBInformationHiding
LSB_Decode.m 524B
LSB_Encode.m 930B
image_processing_interface.m 7KB
background.bmp 23KB
.git
index 882B
HEAD 21B
refs
heads
main 41B
tags
remotes
origin
HEAD 30B
objects
pack
pack-4be9f7d7f5b6c9923d2fd9df79792801df19b322.idx 2KB
pack-4be9f7d7f5b6c9923d2fd9df79792801df19b322.rev 120B
pack-4be9f7d7f5b6c9923d2fd9df79792801df19b322.pack 934KB
info
description 73B
packed-refs 112B
FETCH_HEAD 110B
info
exclude 240B
logs
HEAD 195B
refs
heads
main 195B
remotes
origin
HEAD 359B
hooks
post-update.sample 189B
sendemail-validate.sample 2KB
prepare-commit-msg.sample 1KB
commit-msg.sample 896B
pre-receive.sample 544B
update.sample 4KB
pre-commit.sample 2KB
pre-rebase.sample 5KB
applypatch-msg.sample 478B
fsmonitor-watchman.sample 5KB
push-to-checkout.sample 3KB
pre-applypatch.sample 424B
pre-push.sample 1KB
pre-merge-commit.sample 416B
config 372B
main.m 1KB
SmallPig.bmp 598KB
WatermarketImg.bmp 257KB
lena.bmp 768KB
image_processing_interface.fig 58KB
README.md 7KB
共 39 条
- 1
资源评论
凉亭下
- 粉丝: 619
- 资源: 283
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功