基于DCT(离散余弦变换)的图像水印算法,Matlab实现

        博主简介: 专注、专一于Matlab图像处理学习、交流,matlab图像代码代做/项目合作可以联系(QQ:3249726188

        个人主页:Matlab_ImagePro-CSDN博客

        原则:代码均由本人编写完成,非中介,提供有偿Matlab算法代码编程服务,不从事不违反涉及学术原则的事。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        本次分享的是基于DCT的图像水印算法,用matlab实现。

        一、案例背景介绍

        前期的博文中,我们介绍了DWT数字水印算法,并对数字水印的背景、算法分类情况等做了比较详细的介绍,这里就不再重复叙述了,前期链接如下:

        基于DWT(离散小波变换)的图像水印算法(基于DWT(离散小波变换)的图像水印算法,Matlab实现-CSDN博客)

        这次我们分享的是基于DCT的图像水印算法。

        二、算法原理和算法流程

        嵌入过程:

        1、读取原图、水印图像文件

        2、 对水印图进行灰度化、二值化

        3、二值化后的水印图像置乱,置乱算法arnold

        4、水印图嵌入原图中将原载体图像由rgb变换为Ycbcr空间

        (1)对亮度空间进行8*8分块DCT变换,并嵌入水印,嵌入到DCT变换后的图像块中

        (2)图像块进行反变换,IDCT变换

        (3)Ycbcr空间转回RGB空间

        (4)嵌入完成

        提取过程:

        1、 读取嵌入后水印的图

        2、 读取原图

        3、 提取水印

        (1)   原始图像转换为Ycbcr空间

        (2)   嵌入后水印的图像转换为Ycbcr空间

        (3)   分别获取原始图像、嵌入后水印的图像Y图层

        (4)   分别对原始图像、嵌入后水印的图像Y图层进行8*8分块,进行差值计算,得到二值图分块图像

        (5)   二值图分块图像还原为水印尺寸,得到水印图

        4、对提取到的二值图进行水印反置乱(iarnold),得到最终水印图。

        三、Matlab实现效果

        嵌入:

  

  

  

  

        提取效果:

  

  

        

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

专注、专一于Matlab图像处理学习、交流、代做

QQ:3249726188

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/779378.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何为 Git 配置邮箱地址

在使用 Git 进行版本控制时,每个提交都会关联一个提交者邮箱地址。该邮箱不仅用于标识提交者身份,还可能与您的 Git 托管服务(如 GitHub、GitLab)账户关联,以确保提交记录正确计入您的个人贡献。本篇博客将指导您如何为…

牛角工具箱源码 轻松打造个性化在线工具箱,附带系统搭建教程

这是一款在线工具箱程序,您可以通过安装扩展增强她的功能 通过插件模板的功能,您也可以把她当做网页导航来使用~ 🎊 环境要求 PHP > 7.2.5 MySQL > 5.7 fileinfo扩展 使用Redis缓存需安装Redis扩展 去除禁用函数proc_open、putenv、s…

C语言-写一个简单的Web服务器(四)

经过以上几次的构建,我们基本上已经构建出来了一个简易的Web服务器,接下来将使用查询从文本中查询我们的问题。 查询结果 在这里我设置了一个page全局参数用来记录是哪个页面,避免和登录页面进行冲突重复查询(大家可以自行优化&am…

YOLOv9改进策略 :blcok优化 | 极简的神经网络VanillaBlock 实现涨点 |华为诺亚 VanillaNet

💡💡💡本文改进内容: VanillaNet,是一种设计优雅的神经网络架构, 通过避免高深度、shortcuts和自注意力等复杂操作,VanillaNet 简洁明了但功能强大。 💡💡💡引…

303.【华为OD机试】报数游戏(约瑟夫环算法解题—JavaPythonC++JS实现)

本文收录于专栏:算法之翼 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目二.解题思路三.题解代码Python题解代码JAVA题解代码C/C++题解代码JS题解代码四.代码讲解(Ja…

c语音函数大全(W开头)

c语音函数大全(W开头) There is no nutrition in the blog content. After reading it, you will not only suffer from malnutrition, but also impotence. The blog content is all parallel goods. Those who are worried about being cheated should leave quickly. 函数名…

二、CentOS基础配置(1.网络与包管理)

文章目录 二、基础配置操作1、网络管理(配置静态地址并进行ssh远程连接)(1.)静态地址配置(2.)IP配置注释(3.)配置SSH远程连接 2、包管理(1.)yum软件包管理器1…

Fastgpt 无法启动或启动后无法正常使用的讨论(启动失败、用户未注册等问题这里)

FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景! FastGPT是非常实用并且相当厉害的个人知识库AI项目,项目是非常…

Python:文档注释、类型标注和注释宏# type:

目录 1、增加文档注释2、增加类型标注3、增加注释宏 看一段简单的代码 def add(x, y):return x y如下代码调用函数,可以正常执行 print(add(1, 2)) # 3 print(add(1, 2)) # 121、增加文档注释 def add(x, y):"""sum x and y:param x: int:param y…

DVWA-CSRF通关教程-完结

DVWA-CSRF通关教程-完结 文章目录 DVWA-CSRF通关教程-完结Low页面使用源码分析漏洞利用 Medium源码分析漏洞利用 High源码分析漏洞利用 impossible源码分析 Low 页面使用 当前页面上,是一个修改admin密码的页面,只需要输入新密码和重复新密码&#xff…

怎么学习写代码?

学习编写代码是一项既有挑战性又充满乐趣的任务,它可以帮助你创建各种应用程序、网站、游戏,甚至解决复杂问题。以下是一份详细的步骤指南,帮助你开始学习写代码: 1. 确定学习目标: - 明确你希望通过学习编程实现什…

git 合并当前分支到 指定仓库的指定分支

要将当前分支的更改合并到指定仓库的指定分支,可以按照以下步骤进行: 确保当前分支的更改已经提交并推送到当前仓库中。 添加目标仓库的远程地址。假设目标仓库的远程地址是 https://github.com/example/target-repo.git,你可以使用以下命令…

github项目名称变更sourcetree如何同步

github项目名称变更sourcetree如何同步 方法1:删除本地仓库 重新从URL克隆 方法2:修改远程地址链接 1.打开项目所在文件夹的终端 2.删除本地关联的这个远程仓库origin git remote rm origin 3.关联修改名字后的远程仓库地址 git remote add origin <新的远程仓库地址&…

详解TCP的三次握手和四次挥手

文章目录 1. TCP报文的头部结构2. 三次握手的原理与过程三次握手连接建立过程解析 3. 四次挥手的原理与过程四次挥手连接关闭过程的解析 4. 常见面试题 深入理解TCP连接&#xff1a;三次握手和四次挥手 在网络通信中&#xff0c;TCP&#xff08;传输控制协议&#xff09;扮演着…

Linux-进程控制

&#x1f30e;进程控制【上】 文章目录&#xff1a; 进程控制 为什么要有地址空间和页表 程序的内存       程序申请内存使用问题 写时拷贝与缺页中断 父子进程代码共享       为什么需要写时拷贝       页表的权限位       缺页中断 退出码和错误码…

WindowManager工具类

WindowManager提供三个方法&#xff1a; addView()、updateLayout()、removeView()。分别对应是添加view、更新view、移除view。 <!--悬浮窗权限--><uses-permission android:name"android.permission.SYSTEM_ALERT_WINDOW"/> WindowManagerUtil pack…

【ENSP】交换机和交换机之间实现静态路由

1.概念 三层交换机只能在Vlanif逻辑口配置iP地址 2.实现方法 交换机允许对应vlan通行&#xff0c;配置vlanif的ip地址&#xff0c;做静态路由 3.静态路由配置方法 ip route-static 目的网段 子网掩码 下一跳设备 LSW1三层交换机配置 u t m sys vlan batch 10 20 …

JavaEE初阶之线程状态

题外话 今天连更两篇 正题 线程的六种状态及含义 1.NEW 安排了工作,还未开始行动 只是创建了Tread对象和要完成的代码,但并没有启动线程 2.RUNNABLE 可工作的.又可以分成正在工作中和即将开始工作 正在执行线程中 3.BLOCKED:这几个都表示排队等着其他事情 4.WAITING:这…

HarmonyOS 应用开发之UIAbility组件生命周期

概述 当用户打开、切换和返回到对应应用时&#xff0c;应用中的UIAbility实例会在其生命周期的不同状态之间转换。UIAbility类提供了一系列回调&#xff0c;通过这些回调可以知道当前UIAbility实例的某个状态发生改变&#xff0c;会经过UIAbility实例的创建和销毁&#xff0c;…

每日一题:C语言经典例题之鸡兔同笼

题目描述 鸡兔同笼&#xff0c;共有n个头&#xff0c;m条腿&#xff0c;求鸡和兔子各有多少只。 输入 输入头数和腿数。 输出 鸡和兔子的只数。 样例输入 35 94 样例输出 23 12 代码&#xff1a; #include <stdio.h> int main() {int n, m,x,y;scanf("%d %d"…