MATLAB 图像嵌入水印图像程序
MATLAB 图像嵌入水印图像程序
原理:
水印的嵌入:
- 对64x64像素的水印图像(可为rgb或灰度图像)进行猫脸变换,得到置乱后的水印图像W′W'W′;
- 对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);
- 对BijB_{ij}Bij矩阵进行奇异值分解SVD,取最大的奇异值构成矩阵AAA,再对AAA进行奇异值分解: A=USVTA=USV^TA=USVT;
- 将置乱后的水印图像矩阵W′W'W′叠加到矩阵SSS上,
- D=S+αW′D=S+\alpha W'D=S+αW′ (常数α\alphaα为嵌入因子)
- 奇异值分解 D=U1S1V1TD = U_1S_1V_1^TD=U1S1V1T
- 反变换得 A′=US1VTA'=US_1V^TA′=US1VT
- 将 A′A'A′中相应的元素替换 BijB_{ij}Bij中的最大奇异值,将变换后的中频系数矩阵 BijB_{ij}Bij还原回相应的块中;
- 对每一块嵌入了水印信息的矩阵进行逆DCT变换,最后得到嵌入了水印图像信息的图像I′I'I′。
水印的提取:
- 对图像I*分成8x8的小块,并对每一个小块进行DCT离散余弦变换;
- 取每一块中的16个中频系数,构成矩阵Bij*; 后对其进行奇异值分解SVD,取最大奇异值构成矩阵A*;
- 设需要提取的水印图像为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)/α
- 将提取出的灰度水印图像经过猫脸逆变换,得到水印图像。
程序
此程序将水印图像添加到载体图像中以进行加密。此程序包含 3 个文件,分别是:
watermark_main.m
: 添加水印的主函数,ArnoldTransform.m
: 猫脸变换函数(arnold transform),InverseArnoldTransform.m
: 猫脸逆变换函数(inverse arnold transform).
watermark_main函数的输入参数为:
base_img_path
: 载体图像路径,watermark_img_path
: 水印图像路径,save_img1_path
: 保存加过水印的图像路径,save_img2_path
: 保存提取的水印图像路径.
该程序需要一个载体图像,即想要使用水印加密的图像和想要嵌入到载体图像中的水印图像。在水印嵌入过程中,载体图像和水印图像会从rgb转换为灰度,水印图像也会被转换成64*64像素。
这个博客中的程序可从github中下载使用。
MATLAB 图像嵌入水印图像程序相关推荐
- 【Matlab 图像】图像基础操作
图像基础操作 读取图片 读取视频 读取图片 % 读取图像 Img = imread('test2.png'); subplot(2,2,1); imshow(Img); title('原图(RGB图) ...
- matlab 多个波段,MatLab读取ENVI图像统计多波段图像信息
在ENVI统计遥感多波段图像中每个波段的均值.方差.最大值.最小值是比较容易办到的,但是如果要处理多批的数据就没有那么方便了,这里转载一个MatLab读取ENVI图像(img+hdr)的程序,并且计算 ...
- MATLAB小波变换的图像融合系统[完美运行,GUI界面,详细教程,万字文稿]
课题题目 基于MATLAB小波变换的图像融合系统 GUI框架链接:戳这里 课题背景介绍 数字图像融合是一项最新发展起来的应用,对于数字图像处理和数字图像分析起着非常重要的重要.虽然现阶段,对于图像处理 ...
- MATLAB#183;提取图像中多个目标
基于matlab工具箱提取图像中的多目标特征(代码如下): 代码前面部分为提取图像的边界信息,调用了后面的遍历函数Pixel_Search,函数实现方法见后~ %%ROI Testing close ...
- MATLAB计算杨氏模量,基于MATLAB处理动态图像的杨氏模量测量方法.doc
7A版优质实用文档 PAGE PAGE 16 7A版优质实用文档 基于MATLAB处理动态图像的杨氏模量测 量方法 黄浩钊1,陈玥琦2,李家卉3 第三军医大学学员13营,重庆,400038:2.第三军 ...
- matlab 画图白边,matlab保存画框图像去白边
在matlab图像处理中,为了标识出图像的目标区域来,需要利用plot函数或者rectangle函数,这样标识目标后,就保存图像. 一般saves保存的图像存在白边,可以采用imwrite对图像进行保 ...
- MATLAB图形图像处理——图像灰度变换
MATLAB图形图像处理--图像灰度变换 一.MATLAB入门知识 1.什么是MATLAB 2.MATLAB处理图像 图像数据 数据类型 位深 函数 imread imwrite 二.图像灰度变换基础 ...
- matlab wdencmp函数,图像的小波阈值降噪_小波降噪函数 - 全文
小波降噪的方法有多种,如利用小波分解与重构的方法滤波降噪.利用小波变换模极大值的方法去噪.利用信号小波变换后空域相关性进行信噪分离.非线性小波阈值方法去噪.平移不变量小波降噪法,以及多小波降噪等等.归 ...
- matlab ndims 图像对称,MATLAB实现将图像转换为素描(简笔画)风格
代码: colorgrad.m function [VG, A, PPG] = colorgrad(f, T) if (ndims(f)~=) || (size(f,)~=) error('Input ...
最新文章
- UINavigationController技巧一——修改返回按钮的标题
- 【STM32】FreeRTOS 调度器开启和任务相关函数详解
- python用turtle库绘制树图形_使用Python中的Turtle库绘制简单的图形
- linux怎么安装git服务器,linux下安装git服务端
- js 把字符串格式化成时间
- 如何监视SQL Server tempdb数据库
- 时序分析基本概念介绍——时钟sdc
- python编写骰子和的程序_简单掷骰子程序发行
- curlopt_ssl_verifypeer后https还是验证不过_为什么 HTTPS 需要 7 次握手和 9 倍时延
- 超硬核的Java学习路线图(宫斗版)一般程序员一看就懂
- Go解决报错 error obtaining VCS status: exit status 128 Use -buildvcs=false to disable VCS stamping
- 如何设置word的默认输入法——搜狗输入法
- 【DKN】(二)config.py
- 语音信号a率压缩算法c语言,基于OMAP5912平台的语音压缩算法实现
- 详细说明register关键字
- 穿山甲成长中心——人能尽其才则百事兴
- python抓取京东联盟优惠券_[爬虫]使用python抓取京东全站数据(商品,店铺,分类,评论)...
- 开源的烽火 “烽火”的开源
- 【学习总结】VIO初始化学习1:Monocular Visual–Inertial State Estimation With Online Initialization and Camera–IMU
- jap重定向 中文乱码