文章目录

  • 前言
  • 一、图像处理基础
  • 二、LSB数字隐写算法
  • 三、LSB数字隐写算法实现
  • 四、数字隐写和提取过程
  • 总结

前言

已经好久没写博客了,最近是在有些忙,但是忙里偷闲写一篇新学的知识点,所以准备写这篇博客与大家分享。这篇博文是关于信息安全中的一个简单算法:LSB(最低有效位)算法实现图片数字水印隐写功能,就是如何将我们的水印图片嵌入到主体图像中,其中源码已经上传至GitHub,各位读者可以下载使用。其中不仅包括算法源码还有可视化图形界面的代码,方便读者调试使用。废话不多说,下面开始本篇博文的具体内容。


一、图像处理基础

  1. 图像的分类
    我们日常生活中的图像大致分为三类:黑白图像、灰度图像、彩色图像
  2. 二进制图像
    二进制图像顾名思义就是图像像素只存在0,1两个值。一个二进制图像显然是纯黑白的。每一个像素值将取两个离散值(0或1)中的一个,0表示黑,1表示白。
  3. 灰度图像
    灰度图像是每个像素只有一个采样颜色的图像。这类图像通常显示为从最暗黑色到最亮的白色的灰度。一般使用使用无符号8位整型表示
  4. 灰度图像的二维矩阵表示
    ①:本张图片为一张灰度图片,我们要将其转换为二进制代码表示的矩阵形式,可以使用MatLab或者Python进行处理,在这里我使用MatLab读取图片:A=imread(`background.bmp`);
    ②:下图为读取后的灰度图像对应的二维矩阵,可以看到都是由0-255的数字组成,只有一个通道
  5. 灰度图像的二值化方法
    所谓灰度图像的二值化方法实际上解决的就是将灰度图像转换为二值图像(黑白图像)这一问题。转换的方法可用伪C语言描述为:
设 G(x,y) 为图像的灰度G的像素 float threshold; //定义一个转换阈值if (G(x,y) >=threshold) B(x,y)=1; else B(x,y)=0;

则下图为G的二值转换图。

  1. RGB图像
    RGB图像仅是一类图像的总称,每一个像素的颜色由存储在相应位置的红、 绿、蓝颜色分量共同决定。RGB图像是 24位图像,红、绿、蓝分量分别占用8位,理论上可以包含16M种不同颜色,由于这种颜色精度能够再现图像的真实色彩, 所以又称RGB图像为真彩图像。
  2. RGB的表示
    我们可以用一个由R、G、B为坐标轴定义的单位立方体来描述一个符合视觉理论的颜色模型。 原点代表黑色,(1,1,1)代表白色,将坐标轴上的顶点称为基色。立方体中的每一个颜色由一个三元组(R,G,B)表示,每一个分量的数值一般在[0,255]区间,每个位置代表不同的颜色,如下两图表示。

二、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流程
  4. LSB特点
  • 方法有一般性,可用于变化域
  • 非常简单
  • 非常快
  • 易于实现
  • 很高的容量和嵌入效率
  • LSB位是随机的,与高位和其他点无关
  • 优化比较方便

三、LSB数字隐写算法实现

  1. 初始化载体图像
  2. 初始化水印图像
  3. 嵌入水印
  4. 提取已嵌入水印

四、数字隐写和提取过程

  1. 运行image_processing_interface.m进入主界面
  2. 载入宿主图片
  3. 载入水印图片
  4. 嵌入水印后的宿主图片
  5. 提取到的水印图片
  6. 二值化后的水印图片

总结

到此为止这篇博文也告一段落了,这个算法作为信息安全技术的入门算法,还是比较简单易学的,以后我可能会写更多的关于信息安全方面的博客,因为也准备好好学学这个方向,所以请各位读者敬请期待!

基于MatLab实现LSB(最低有效位)算法完成图片数字水印隐写功能相关推荐

  1. LSB最低有效位算法实现

    LSB是空域数字水印的一项技术,顾名思义就是在图片的每个像素的最低位上嵌入水印信息. 介绍原理的博客资料网上很多,说点不一样的. 一开始学习的时候在网上看了一个讲解的python实现 此文中的大致意思 ...

  2. 数字水印_最低有效位算法

    最低有效位( Least Significant Bit.,LSB)指的是一个二进制数中的第0位(即最低位) 最低有效位信息隐藏指的是,将一个需要隐藏的二值图像信息嵌入载体图像的最低有效位,即将载体图 ...

  3. matlab 压缩感知矩阵_【精读】基于MATLAB的钢筋下料优化算法

    基于MATLAB的钢筋下料优化算法 摘要:运用MATLAB软件求解实际工程中一维钢筋下料优化的问题,提出了首先列举出单根原料分割的所有可行解,其次采用线性规划的方法求出理想条件下最优方案,最后通过整数 ...

  4. 【单目标优化求解】基于matlab增强型黑猩猩优化器算法求解单目标优化问题【含Matlab源码 2013期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[单目标优化求解]基于matlab增强型黑猩猩优化器算法求解单目标优化问题[含Matlab源码 2013期] 点击上面蓝色字体,直接付费下 ...

  5. 【聚类算法】基于matlab划分法k-means聚类算法【含Matlab源码 1941期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[聚类算法]基于matlab划分法k-means聚类算法[含Matlab源码 1941期] 点击上面蓝色字体,直接付费下载,即可. 获取代码 ...

  6. 基于matlab GUI Powell+蚁群算法图像配准

    基于matlab GUI Powell+蚁群算法图像配准 一.简介 1 蚁群算法(ant colony algorithm,ACA)起源和发展历程 Marco Dorigo等人在研究新型算法的过程中, ...

  7. 转载:基于MATLAB的几种图像分割算法

    基于MATLAB的几种图像分割算法 转载自:https://blog.csdn.net/bentleydelll/article/details/82456150 最大类间方差法 基本思路是根据直方图 ...

  8. 【图像重建】基于matlab布雷格曼迭代算法集合ART算法CT图像重建【含Matlab源码 1905期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[图像重建]基于matlab布雷格曼迭代算法集合ART算法CT图像重建[含Matlab源码 1905期] 获取代码方式2: 通过订阅紫极神光 ...

  9. 虹膜识别算法 matlab,基于MATLAB GUI 的虹膜识别算法测试平台

    基于MATLAB GUI 的虹膜识别算法测试平台 田启川;潘泉;程咏梅;张洪才 [期刊名称]<计算机仿真> [年(卷),期]2006(023)002 [摘要]虹膜识别是一种重要的利用生物学 ...

最新文章

  1. 点击通知栏后打开Activity,并传参
  2. oracle数据库如何写翻页_ORACLE数据库分页查询/翻页 最佳实践
  3. html5+ mui框架 微信授权登录后跳回app无任何回调事件
  4. html文章整体居中,div居中与div内容居中
  5. DIV弹窗 JS刷新页面
  6. 聊一聊:你都用什么方式回忆青春呢?
  7. iOS-CoreImage简单使用
  8. 云平台管理与部署---虚拟化平台-----KVM
  9. mysql数据库制定位置_MySQL数据库在指定位置增加字段
  10. SQL Server 2008 修改安装路径后安装出错的解决方法
  11. Linux中Shell脚本函数库的笔记
  12. apache ant 安装_Jmeter+ Ant+jenkins 接口自动化框架实现
  13. Kotlin学习笔记 第二章 类与对象 第二节属性
  14. goland sql 脚本运行_Flink 1.9 实战:使用 SQL 读取 Kafka 并写入 MySQL
  15. cropper固定宽高裁剪_cropper实现基本的裁剪图片并上传
  16. ASP.NET Razor - html中使用if else
  17. 杭电oj2035c语言答案,小白详细讲解快速幂--杭电oj2035-A^B
  18. python变量使用前必须先声明_Python变量使用前必须先声明,并且一旦声明就不能再当前作用域内改变其类型。_学小易找答案...
  19. svn汉化依然失败无解
  20. OriginPro 2021 设置成中文(软件自带)

热门文章

  1. 企业微信可以自动上班打卡吗?
  2. 花了5000元改了一个带触摸板的小红点键盘
  3. 3-5数据链路层-局域网
  4. LOB字段相关概念(自动创建LOB索引段和重建索引方法)
  5. 手机中Ram和Rom详解
  6. python相关岗位面试题总结(五)(持续更新)
  7. 灾难性遗忘/增量学习的研究现状
  8. 在职研究生(多重继承)
  9. 《Windows驱动开发技术详解》学习笔记
  10. 使用Python调用百度地图的API在地图上添加标记