数字水印算法

任务背景及简介

 随着互联网的普及和数字技术的广泛应用,信息媒体的数字化极大地提高了信息的存取效率, Intenet 的普及又为数字信息在世界范围内的迅速传递开辟了便捷的途径数字产品变得极大丰富并且传播便捷,但与此同时版权保护问题也日益突出。传统的信息安全技术在数字产品版权保护方面存在的不足,促成了数字水印技术的发展。数字水印技术将数字水印隐藏于数字媒体中,以便在版权纠纷中为版权所有者提供版权证明然而数字水印技术处在起步阶段,许多技术还不成熟很多问题和方法有待进一步的研宄和解决

实验课题主要是研究数字水印在数字图像中的嵌入、检测提取的方法,在水印算法中引入图像的变换域用于嵌入水印,并利用人类的视觉系统对不同颜色的敏感程度不同以此增强水印的透明性。

算法原理及实现

理论基础

(1)DCT变换

在水印算法中引入图像的变换域用于嵌入水印,以此增强水印的透明性。(将一组光强数据转换成频率数据,以便得知强度变化的情形。若对高频的数据做些修饰,再转回原来形式的数据时,显然与原始数据有些差异,但是人类的眼睛却是不容易辨认出来。)

(2)人类视觉系统特性

人类的视觉系统对不同颜色的敏感程度不同。人眼对绿色光最为敏感,对红色光的敏感程度次之,对于蓝色光最不敏感。人眼对红色光和蓝色光的敏感程度之和与对绿色光的敏感程度较为接近。实验课题使用红色和蓝色光部分作为 Pacthwork 算法的 A 集合,绿色光作为 B 集合,两个集合在嵌入信息时使用相逆的操作,可以在一定程度上互相抵消嵌入信息引起的图像视觉上的变化,提高水印透明性。

具体算法

(1)水印的嵌入

图片预处理:

载体图像original与水印图像mark选取正方形的RGB图像,并满足载体图像的边长为 8 的倍数且载体图像边长为水印图像边长的8倍。将载体图像的 3个颜色通道分离,得到IR、IG、IB 3个颜色分量; 将水印图像的3个颜色通道分离,得到WR、WG、WB 3个颜色分量。

对水印Arnold置换:

对WR、WG、WB三个颜色分量进行Arnold变换,(变换的过程可以看作是拉伸、压缩、折叠及拼接的过程)经过变换得到WRA、WGA、WBA。Arnold变换过程如下:

 

其中(x,y)为图像上点坐标。

对载体图像进行DCT变换并提取直流分量:

载体图像的各分量以8×8的大小为一个单位划分为若干子块。将子块视为一个整体,最左上角的子块位置坐标为(1,1),其相邻的右边的子块位置坐标为(1,2) ,依此类推。对每一个子块分别应用DCT 变换,然后取出变换后的每一个子块左上角的直流分量组成一个新矩阵,位置坐标为(1,1) 的子块的直流分量作为新矩阵( 1,1) 位置的元素,位置坐标为 (1,2) 的子块的直流分量作为新矩阵(1,2) 位置的元素,依此类推。最终所得的矩阵称为直流分量矩阵IRD、IBD、IGD。

在直流分量矩阵中嵌入水印:

在直流分量矩阵上嵌入水印,嵌入方法是增加/减去置乱的水印图像分量k倍的亮度。分量提取公式如下:

其中绿色分量在亮度处理时使用减操作,红色分量和蓝色分量使用加操作。(由人类视觉系统的特性知这两个互逆的操作可以在一定程度上互相抵消嵌入信息引起的图像视觉上的变化,提高水印透明性。)

合成嵌入水印图像:

嵌入水印后的直流分量矩阵 IRDE、IBDE、IGDE按照对应位置替换各个子块的直流分量,再对各个子块分别应用反DCT 变换完成各颜色分量的水印嵌入。

最后将三个分量合成为水印图像。

(2)水印的提取

预处理:

将含有数字水印的载体图像I_embed的3个颜色通道分离,得到PR、PG、PB 3个颜色分量; 将原始载体图像original的3个颜色通道分离,得到IR、IG、IB 3 个颜色分量。

对含有水印的图像进行分块 DCT 变换并提取直流分量:

对带水印载体图像P使用和水印嵌入时相同直流分量提取方式,得到PRD、PBD、PGD。

从直流分量矩阵中提取置乱的水印:

将三个分量进行逆Arnold变换后组合成提取出的水印。

实验结果及分析

嵌入水印并提取:

已知原图original为jpg格式,水印mark为png格式直接对图片进行加水印和提取水印操作

直观上来看,可以发现嵌入载体后和嵌入载体前图像肉眼无法分辨差异,但是提取出的水印图像和原水印间存在一定失真。

结果分析:

(1)隐蔽性分析:

利用python脚本对载体图像和水印图像进行互相关系数计算:

从计算结果可以看出两张图片具有99%的相似性,该算法具有隐蔽性。

(2)容量分析:从容量上来看,假设该算法载体图像大小为mm,水印图像可为(m/8)(m/8)

(3)鲁棒性检验:对嵌入水印的图片I_embed进行白噪声攻击、高斯滤波攻击、裁剪攻击和旋转攻击

白噪声攻击

对进行攻击后的水印与原水印进行互相关系数计算

2、高斯滤波攻击

计算互相关系数

3、裁剪攻击:

计算互相关系数

4、旋转攻击:

计算互相关系数

从上述各实验效果可看出该算法具有一定鲁棒性。

参考博客:https://blog.csdn.net/qq_44465615/article/details/116420445?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162320718416780262565873%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162320718416780262565873&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-7-116420445.pc_search_result_control_group&utm_term=matlab%E5%AE%9E%E7%8E%B0%E6%95%B0%E5%AD%97%E6%B0%B4%E5%8D%B0%E7%AE%97%E6%B3%95%EF%BC%8C%E9%AA%8C%E8%AF%81%E9%B2%81%E6%A3%92%E6%80%A7&spm=1018.2226.3001.4187

计算图片的互相关系数(python脚本)
from PIL import Image
from numpy import average, linalg, dotdef get_thumbnail(image, size=(1200, 750), greyscale=False):image = image.resize(size, Image.ANTIALIAS)if greyscale:image = image.convert('L')return image
def image_similarity_vectors_via_numpy(image1, image2):image1 = get_thumbnail(image1)image2 = get_thumbnail(image2)images = [image1, image2]vectors = []norms = []for image in images:vector = []for pixel_tuple in image.getdata():vector.append(average(pixel_tuple))vectors.append(vector)norms.append(linalg.norm(vector, 2))a, b = vectorsa_norm, b_norm = normsres = dot(a / a_norm, b / b_norm)return res
image1 = Image.open('F:\TEST4\mark.png')
image2 = Image.open('F:\TEST4\whirl_mark.png')
cosin = image_similarity_vectors_via_numpy(image1, image2)
print(cosin)
%% 初始化
clc;
clear ;
figure(1);      %打开窗口
%% 载入数据
I=imread("original.jpg");
%I=imresize(I,[512,512],'nearest'); 
subplot( 2,2,1) ,imshow(I),title('载体图像');
W=imread("mark.png");
%W=imresize(W,[64,64],'nearest');
subplot(2,2,2),imshow(W),title('水印图像');
[row,col,t] = size(W);%% 嵌入水印部分
%分离R,G,B通道
IR=I(:,:,1);
IG=I(:,:,2);
IB=I(:,:,3);
WR=W(:,:,1);
WG=W(:,:,2);
WB=W(:,:,3);
%设置k,不同图片k值不同
k=0.162;%% 使用Arnold变换置乱水印
WRA=arnold(WR,1,1,1);
WRA=double(WRA);
WGA=arnold(WG,1,1,1);
WGA=double(WGA);
WBA=arnold(WB,1,1,1);
WBA=double(WBA);
%%
% 对载体图像进行8*8分块处理,然后对每块分别DCT变化
IRD=blkproc(IR,[8,8],'dct2');
IGD=blkproc(IG,[8,8],'dct2');
IBD=blkproc(IB,[8,8],'dct2');
IRDE=IRD;
IGDE=IGD;
IBDE=IBD;%% 提取直流分量,并向矩阵中嵌入水印
for i=0:(row-1)for j=0:(col-1)x=i*8;y=j*8;IRDE(x+1,y+1)=IRD(x+1,y+1)+k*WRA(i+1,j+1);IBDE(x+1,y+1)=IBD(x+1,y+1)+k*WBA(i+1,j+1);IGDE(x+1,y+1)=IGD(x+1,y+1)-k*WGA(i+1,j+1);end
end%% 对载体图像进行分块反DCT变换
IR2=blkproc(IRDE,[8,8],'idct2');
IG2=blkproc(IGDE,[8,8],'idct2');
IB2=blkproc(IBDE,[8,8],'idct2');
IR2=uint8(IR2);
IG2=uint8(IG2);
IB2=uint8(IB2);%% 合成
I_embed = I;
I_embed(:,:,1) = IR2;
I_embed(:,:,2) = IG2;
I_embed(:,:,3) = IB2;
subplot( 223) ,imshow(I_embed),title('嵌入水印后的载体图像');%% 提取水印
%% 分离通道
P=I_embed;
PR=P(:,:,1);
PG=P(:,:,2);
PB=P(:,:,3);%% 将带水印图像进行DCT变换
PRD=blkproc(PR,[8,8],'dct2');
PGD=blkproc(PG,[8,8],'dct2');
PBD=blkproc(PB,[8,8],'dct2');
WR2=WR;
WB2=WB;
WG2=WG;
%% 提取水印
for i=0:(row-1)for j=0:(col-1)x=i*8;y=j*8;WR2(i+1,j+1)=(PRD(x+1,y+1)-IRD(x+1,y+1))/k;WB2(i+1,j+1)=(PBD(x+1,y+1)-IBD(x+1,y+1))/k;WG2(i+1,j+1)=(IGD(x+1,y+1)-PGD(x+1,y+1))/k;end
end
%% 逆arnold 
WR2=uint8(WR2);
WG2=uint8(WG2);
WB2=uint8(WB2);
WR2=rearnold(WR2,1,1,1);
WG2=rearnold(WG2,1,1,1);
WB2=rearnold(WB2,1,1,1);
%% 合成水印
W2=W;
W2(:,:,1)=WR2;
W2(:,:,2)=WG2;
W2(:,:,3)=WB2;
subplot( 224) ,imshow(W2),title('提取出的水印');
imwrite(I_embed,'I_embed.png');
imwrite(W2,'W2.png');
%% arnold变换
function arnoldImg = arnold(img,a,b,n)
[h,w] = size(img);
N=h;
arnoldImg = zeros(h,w);
for i=1:nfor y=1:hfor x=1:w%防止取余过程中出现错误,先把坐标系变换成从0 到 N-1xx=mod((x-1)+b*(y-1),N)+1;yy=mod(a*(x-1)+(a*b+1)*(y-1),N)+1;  arnoldImg(yy,xx)=img(y,x);              endendimg=arnoldImg;
end
arnoldImg = uint8(arnoldImg);
endfunction img = rearnold(arnoldImg,a,b,n)
[h,w] = size(arnoldImg);
img = zeros(h,w);
N = h;
for i=1:nfor y=1:hfor x=1:w           xx=mod((a*b+1)*(x-1)-b*(y-1),N)+1;yy=mod(-a*(x-1)+(y-1),N)+1  ;      img(yy,xx)=arnoldImg(y,x);              endendarnoldImg=img;
end

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

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

相关文章

数字图像中添加水印

实际上,在产品里能够设置密码并且在产品中添加水印是最理想的防盗措施,因为设置密码是为了防止别人剽窃技术或使用产品,而添加水印更多的是一种补救措施,是在他人成功盗取自己技术的前提下,在法律上夺取主动权的砝码。下面来介绍一下如何在MATLAB中实现往数字图像中添加水印效果…

信息隐藏与数字水印技术

1 信息隐藏 1. 1 信息隐藏模型信息隐藏 (Information Hiding)不同于传统的密码学技术。密码技术主要是研究如何将机密信息进行特殊的编码,以形成不可识别的密码形式 (密文 )进行传递;而信息隐藏则主要研究如何将某一机密信息秘密隐藏于另一公开的信息…

给图片加盲水印(数字水印)所有功能免费使用

盲水印是不可见,但实际存在图片中的水印。需通过特殊的技术手段才能获取到水印。 . 一次可以给十张图片加图片水印或文字水印,不限使用次数 . 只能给单张图片解水印且需要原水印图片或水印文字 . 水印密码必须为数字,可设可不设。如设置了…

“数字水印”来临,一波“反ChatGPT”的技术开始冒头 | 星球资讯

数科星球 原创 作者丨数数 编辑丨十里香 ChatGPT爆火,对于这项技术来说,似乎无所不能。从作曲、小说、文章再到编剧,人们这些天为该项技术忙活的不亦乐乎。 但事情很快得到了反转,有些人开始担心这项新的技术会被坏人所利用。而…

微软半日游,和CSDN同学们走进名企

上周三(2021-11-24),跟随 CSDN 《新程序员》组织的 "走进名企"活动,和邹欣老师等一众大佬们探访了北京微软亚洲研究院。真是一次令我开眼界的旅程,一起看看~ 作为一个普普通通的北漂程序员来说,大…

Seata 与三大平台携手编程之夏,百万奖金等你来拿

作者:Seata社区 社区简介 Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。在 Seata 开源之前,Seata 在阿里系内部一直扮演着分布式数据一致性中间件的角色,几乎每笔交易都要…

阿里技术官整合的四大主流中间件笔记,让你高薪摸鱼,不再秃头背锅

RabbitMQ: 优点:轻量,迅捷,容易部署和使用,拥有灵活的路由配置 缺点:性能和吞吐量较差,不易进行二次开发 RocketMQ: 优点:性能好,稳定可靠,有活…

一位微软技术大牛,工作8年的职业经验分享

写在前面 进击的叻叻是小灰的一位朋友,本文整理了他今年9月返校进行校友职场经验分享的内容,从职业选择、职业发展、工作体验和职业认知四个方面,分享自己微软八年职业生涯的经历和感悟。 这篇文章是对当时校友职场经验分享会内容的精炼和补充…

尚硅谷商品汇项目复习文档

项目资料 项目源码:https://gitee.com/HusePanghu/project-SP 项目地址:HusePanghu.SPH 前言 提示:本文档的编撰初衷是用于复习和回顾该项目,而非该项目的教程文档,弊处多多,敬请包涵。欢迎大家在评论区交…

千橡CEO陈一舟5日聊微软入股Facebook和校内网

千橡CEO陈一舟5日聊微软入股Facebook和校内网 http://www.sina.com.cn 2007年11月01日 17:50 新浪科技 千橡集团董事长兼CEO陈一舟(新浪科技配图) 新浪科技讯 11月1日消息,千橡集团董事长兼CEO陈一舟将于11月5日10:30做客新浪科技白银时代,届时他将就微…

今天面了个阿里秒杀项目组的,见识到了基础天花板被震撼到了

在京东工作了8年,工作压力大,节奏快,但是从技术上确实得到了成长,尤其是当你维护与大促相关的系统的时候,熬到P7也费了不少心思,小编也是个爱学习的人,把这几年的工作经验整理成了一份完整的笔记…

互联网暴力裁员,唯有神技面试八股文手册,能助各位码农突破囧境

很多人都说今年对于IT行业根本没有所谓的“金三银四”“金九银十”。在各大招聘网站或者软件上不管是大厂还是中小公司大多都是挂个招聘需求,实际并不招人;在行业内的程序员基本都已经感受到了任老前段时间口中所谓的“寒气”。 虽然事实确实是如此&…

27位技术实战派负责人齐聚 深聊降本增效 你一定不想错过!

倒计时6天,11月4日 杭州云栖大会-探索增长动能峰会即将启动 阿里巴巴集团CTO线&阿里云智能互联网行业线& ​阿里云智能基础产品事业部联合出品 27位技术实战派负责人齐聚 共同深入讨论企业降本增效的话题 欢迎一起来 看点 1:27位实战…

商汤科技推出“日日新SenseNova”,大模型体系赋能人工智能新未来

2023年4月10日,商汤科技SenseTime技术交流日活动在上海举行,分享了以“大模型大算力”推进AGI(通用人工智能)发展的战略布局,并公布了商汤在该战略下的“日日新SenseNova”大模型体系。 公开信息显示,商汤科…

AI抢饭碗成真!近500家美国企业用ChatGPT取代员工,有公司省下超10万美元

Alex 发自 凹非寺量子位 | 公众号 QbitAI 自从ChatGPT掀起浪潮,不少人都在担心AI快要抢人类饭碗了。 然鹅,现实可能更残酷QAQ...... 据就业服务平台Resume Builder调查统计,在1000多家受访美国企业中,用ChatGPT取代部分员工的&…

阿里CEO下令所有产品接入大模型!钉钉对标微软Office,已解锁近10项新功能

丰色 发自 凹非寺量子位 | 公众号 QbitAI “阿里版GPT”通义千问邀测没过几天—— 今天,在2023阿里云峰会现场,CEO张勇就宣布: 阿里巴巴所有产品未来都将接入“通义千问”大模型,进行全面改造。 与此同时,通义千问的能…

GPT-3核心成员出走打造ChatGPT最强竞品!12项任务8项更强,最新估值50亿美元

衡宇 萧箫 发自 凹非寺量子位 | 公众号 QbitAI 因不满老东家成为微软附庸,11名OpenAI前员工怒而出走。 如今带着“ChatGPT最强竞品”杀回战场,新公司估值50亿美元,一出手就获得3亿美元融资。 这家公司名叫Anthropic,新推出的聊天机…

一页PPT自动生成短视频的研究

希望通过一些技术,将以前自己讲过的PPT转换成有解说的短视频,从而进行一些分发 旁白到语音 从文字转换成语音我们首先想到的就是TTS,这其中我也是用了各式各样的TTS,发现发音电子音非常强,听听起来很不舒服。后来发现…

Edge浏览器安装油猴插件以及好用的插件推荐

目录 一、介绍 二、下载步骤 一、介绍 油猴插件是非常好用的,可以帮助我们解放双手眼睛这些。帮助学习,通过这些 二、下载步骤 1.打开edge浏览器,右上角点击三小点,选择扩展 2.点击这个 3.点击下载油猴插件 下载失败的看&a…

如虎添翼!6款备受欢迎的Edge浏览器插件

Microsoft Edge以其低资源消耗、强大的安全性和丰富的创新功能,使其备受欢迎。Edge浏览器正在逐渐替代Chrome成为很多用户的首选浏览器。 而作为桌面浏览器必不可少的一部分,扩展程序是很多用户选择一款浏览器重要的衡量标准。 扩展程序可以增强你的浏…