MATLAB 图像嵌入水印图像程序

原理:

水印的嵌入

  1. 对64x64像素的水印图像(可为rgb或灰度图像)进行猫脸变换,得到置乱后的水印图像W′W'W′;
  2. 对512x512像素的载体图像分割成互不重叠的8x8的小方块,后对每个小块进行DCT离散余弦变换,取变换矩阵中的中频系数构成4x4的矩阵Bij(i=1,2,...,m;j=1,2,...,n)B_{ij}(i=1,2,...,m; j=1,2,...,n)Bij​(i=1,2,...,m;j=1,2,...,n);
  3. 对BijB_{ij}Bij​矩阵进行奇异值分解SVD,取最大的奇异值构成矩阵AAA,再对AAA进行奇异值分解: A=USVTA=USV^TA=USVT;
  4. 将置乱后的水印图像矩阵W′W'W′叠加到矩阵SSS上,
    • D=S+αW′D=S+\alpha W'D=S+αW′ (常数α\alphaα为嵌入因子)
    • 奇异值分解 D=U1S1V1TD = U_1S_1V_1^TD=U1​S1​V1T​
    • 反变换得 A′=US1VTA'=US_1V^TA′=US1​VT
  5. 将 A′A'A′中相应的元素替换 BijB_{ij}Bij​中的最大奇异值,将变换后的中频系数矩阵 BijB_{ij}Bij​还原回相应的块中;
  6. 对每一块嵌入了水印信息的矩阵进行逆DCT变换,最后得到嵌入了水印图像信息的图像I′I'I′。

水印的提取

  1. 对图像I*分成8x8的小块,并对每一个小块进行DCT离散余弦变换;
  2. 取每一块中的16个中频系数,构成矩阵Bij*; 后对其进行奇异值分解SVD,取最大奇异值构成矩阵A*;
  3. 设需要提取的水印图像为W*,提取步骤为:
    • A=U∗S∗V∗TA=U*S*V*TA=U∗S∗V∗T
    • D=U1∗S∗V1TD = U_{1}*S*V_1^TD=U1​∗S∗V1T​
    • W∗=(D−S)/αW^* = (D-S)/\alphaW∗=(D−S)/α
  4. 将提取出的灰度水印图像经过猫脸逆变换,得到水印图像。

程序

此程序将水印图像添​​加到载体图像中以进行加密。此程序包含 3 个文件,分别是:

  1. watermark_main.m : 添加水印的主函数,
  2. ArnoldTransform.m : 猫脸变换函数(arnold transform),
  3. InverseArnoldTransform.m : 猫脸逆变换函数(inverse arnold transform).

watermark_main函数的输入参数为:

  1. base_img_path: 载体图像路径,
  2. watermark_img_path: 水印图像路径,
  3. save_img1_path: 保存加过水印的图像路径,
  4. save_img2_path: 保存提取的水印图像路径.

该程序需要一个载体图像,即想要使用水印加密的图像和想要嵌入到载体图像中的水印图像。在水印嵌入过程中,载体图像和水印图像会从rgb转换为灰度,水印图像也会被转换成64*64像素。

这个博客中的程序可从github中下载使用。

MATLAB 图像嵌入水印图像程序相关推荐

  1. 【Matlab 图像】图像基础操作

    图像基础操作 读取图片 读取视频 读取图片 % 读取图像 Img = imread('test2.png'); subplot(2,2,1); imshow(Img); title('原图(RGB图) ...

  2. matlab 多个波段,MatLab读取ENVI图像统计多波段图像信息

    在ENVI统计遥感多波段图像中每个波段的均值.方差.最大值.最小值是比较容易办到的,但是如果要处理多批的数据就没有那么方便了,这里转载一个MatLab读取ENVI图像(img+hdr)的程序,并且计算 ...

  3. MATLAB小波变换的图像融合系统[完美运行,GUI界面,详细教程,万字文稿]

    课题题目 基于MATLAB小波变换的图像融合系统 GUI框架链接:戳这里 课题背景介绍 数字图像融合是一项最新发展起来的应用,对于数字图像处理和数字图像分析起着非常重要的重要.虽然现阶段,对于图像处理 ...

  4. MATLAB#183;提取图像中多个目标

    基于matlab工具箱提取图像中的多目标特征(代码如下): 代码前面部分为提取图像的边界信息,调用了后面的遍历函数Pixel_Search,函数实现方法见后~ %%ROI Testing close ...

  5. MATLAB计算杨氏模量,基于MATLAB处理动态图像的杨氏模量测量方法.doc

    7A版优质实用文档 PAGE PAGE 16 7A版优质实用文档 基于MATLAB处理动态图像的杨氏模量测 量方法 黄浩钊1,陈玥琦2,李家卉3 第三军医大学学员13营,重庆,400038:2.第三军 ...

  6. matlab 画图白边,matlab保存画框图像去白边

    在matlab图像处理中,为了标识出图像的目标区域来,需要利用plot函数或者rectangle函数,这样标识目标后,就保存图像. 一般saves保存的图像存在白边,可以采用imwrite对图像进行保 ...

  7. MATLAB图形图像处理——图像灰度变换

    MATLAB图形图像处理--图像灰度变换 一.MATLAB入门知识 1.什么是MATLAB 2.MATLAB处理图像 图像数据 数据类型 位深 函数 imread imwrite 二.图像灰度变换基础 ...

  8. matlab wdencmp函数,图像的小波阈值降噪_小波降噪函数 - 全文

    小波降噪的方法有多种,如利用小波分解与重构的方法滤波降噪.利用小波变换模极大值的方法去噪.利用信号小波变换后空域相关性进行信噪分离.非线性小波阈值方法去噪.平移不变量小波降噪法,以及多小波降噪等等.归 ...

  9. matlab ndims 图像对称,MATLAB实现将图像转换为素描(简笔画)风格

    代码: colorgrad.m function [VG, A, PPG] = colorgrad(f, T) if (ndims(f)~=) || (size(f,)~=) error('Input ...

最新文章

  1. UINavigationController技巧一——修改返回按钮的标题
  2. 【STM32】FreeRTOS 调度器开启和任务相关函数详解
  3. python用turtle库绘制树图形_使用Python中的Turtle库绘制简单的图形
  4. linux怎么安装git服务器,linux下安装git服务端
  5. js 把字符串格式化成时间
  6. 如何监视SQL Server tempdb数据库
  7. 时序分析基本概念介绍——时钟sdc
  8. python编写骰子和的程序_简单掷骰子程序发行
  9. curlopt_ssl_verifypeer后https还是验证不过_为什么 HTTPS 需要 7 次握手和 9 倍时延
  10. 超硬核的Java学习路线图(宫斗版)一般程序员一看就懂
  11. Go解决报错 error obtaining VCS status: exit status 128 Use -buildvcs=false to disable VCS stamping
  12. 如何设置word的默认输入法——搜狗输入法
  13. 【DKN】(二)config.py
  14. 语音信号a率压缩算法c语言,基于OMAP5912平台的语音压缩算法实现
  15. 详细说明register关键字
  16. 穿山甲成长中心——人能尽其才则百事兴
  17. python抓取京东联盟优惠券_[爬虫]使用python抓取京东全站数据(商品,店铺,分类,评论)...
  18. 开源的烽火 “烽火”的开源
  19. 【学习总结】VIO初始化学习1:Monocular Visual–Inertial State Estimation With Online Initialization and Camera–IMU
  20. jap重定向 中文乱码

热门文章

  1. excel中怎么拆分表格
  2. 拼多多数据分析笔试题(附代码答案)
  3. pocketsphinx 模型库_PocketSphinx声学模型的训练与使用
  4. 项目实训第一周第三篇
  5. 简单概括 文明进化的各个阶段 (39)
  6. Test Flight 测试使用说明
  7. 那些年,从博客到出书的博主
  8. Android studio实现番茄钟
  9. ios 自架验证服务器,iOS 13-Sign In with Apple(苹果登录)APP+后端验证
  10. 30系列显卡安装深度学习pytorch坏境