3
雷鋒網(wǎng)按:本文作者fuqiang liu,文章原載于知乎,雷鋒網(wǎng)已獲授權(quán)。
本文通過一個的實(shí)驗(yàn),簡要介紹頻域手段添加數(shù)字盲水印的方法,并進(jìn)一步驗(yàn)證其抗攻擊性。在上述實(shí)驗(yàn)的基礎(chǔ)上,總結(jié)躲避數(shù)字盲水印的方法。(多圖預(yù)警)
本文分為四個部分,第一部分綜述;第二部分頻域數(shù)字盲水印制作原理介紹;第三部分盲水印攻擊性實(shí)驗(yàn);第四部分總結(jié);
一、綜述
本文提供的一種實(shí)現(xiàn)“阿里通過肉眼無法識別的標(biāo)識碼追蹤員工”的技術(shù)手段。通過看其他答主的分析,阿里可能還沒用到頻域加水印的技術(shù)。
相對于空域方法,頻域加盲水印的方法隱匿性更強(qiáng),抵抗攻擊能力更強(qiáng)。這類算法解水印困難,你不知道水印加在那個頻段,而且受到攻擊往往會破壞圖像原本內(nèi)容。本文簡要科普通過頻域手段添加數(shù)字盲水印。對于web,可以添加一個背景圖片,來追蹤截圖者。
所謂盲水印,是指人感知不到的水印,包括看不到或聽不見(沒錯,數(shù)字盲水印也能夠用于音頻)。其主要應(yīng)用于音像作品、數(shù)字圖書等,目的是,在不破壞原始作品的情況下,實(shí)現(xiàn)版權(quán)的防護(hù)與追蹤。
添加數(shù)字盲水印的方法簡單可分為空域方法和頻域方法,這兩種方法添加了冗余信息,但在編碼和壓縮情況不變的情況下,不會使原始圖像大小產(chǎn)生變化(原來是10MB添加盲水印之后還是10MB)。
空域是指空間域,我們?nèi)粘K姷膱D像就是空域??沼蛱砑訑?shù)字水印的方法是在空間域直接對圖像操作(之所以說的這么繞,是因?yàn)椴粌H僅原圖是空域,原圖的差分等等也是空域),比如將水印直接疊加在圖像上。
我們常說一個音有多高,這個音高是指頻率;同樣,圖像灰度變化強(qiáng)烈的情況,也可以視為圖像的頻率。頻域添加數(shù)字水印的方法,是指通過某種變換手段(傅里葉變換,離散余弦變換,小波變換等)將圖像變換到頻域(小波域),在頻域?qū)D像添加水印,再通過逆變換,將圖像轉(zhuǎn)換為空間域。相對于空域手段,頻域手段隱匿性更強(qiáng),抗攻擊性更高。
所謂對水印的攻擊,是指破壞水印,包括涂抹,剪切,放縮,旋轉(zhuǎn),壓縮,加噪,濾波等。數(shù)字盲水印不僅僅要敏捷性高(不被人抓到),也要防御性強(qiáng)(抗打)。就像Dota的敏捷英雄往往是脆皮,數(shù)字盲水印的隱匿性和魯棒性是互斥的。(魯棒性是抗攻擊性的學(xué)術(shù)名字)
信號是有頻率的,一個信號可以看做是無數(shù)個不同階的正弦信號的的疊加。
上式為傅里葉變換公式,是指時(shí)域信號(對于信號我們說時(shí)域,因?yàn)槭桥c時(shí)間有關(guān)的,而圖像我們往往說空域,與空間有關(guān)),是指頻率。想要對傅里葉變換有深入了解的同學(xué),建議看一下《信號與系統(tǒng)》或者《數(shù)字信號處理》的教材,里面系統(tǒng)介紹了傅里葉變換、快速傅里葉變換、拉普拉斯變換、z變換等。
簡而言之,我們有方法將時(shí)域信號轉(zhuǎn)換成為頻域,同樣,我們也能將二維信號(圖像)轉(zhuǎn)換為頻域。在上文中提到,圖像的頻率是指圖像灰度變換的強(qiáng)烈情況。關(guān)于此方面更系統(tǒng)的知識,參見岡薩雷斯的《圖像處理》。
下面以傅里葉變換為例,介紹通過頻域給圖像添加數(shù)字盲水印的方法。注意,因?yàn)閳D像是離散信號,我們實(shí)際用的是離散時(shí)間傅里葉變換,在本文采用的都是二維快速傅里葉變換,快速傅里葉變換與離散時(shí)間傅里葉變換等價(jià),通過蝶型歸并的手段,速度更快。下文中傅里葉變換均為二維快速傅里葉變換。
上圖為疊加數(shù)字盲水印的基本流程。編碼的目的有二,一是對水印加密,二控制水印能量的分布。以下是疊加數(shù)字盲水印的實(shí)驗(yàn)。
這是原圖像,尺寸300*240
之后進(jìn)行傅里葉變換,下圖變換后的頻域圖像,
這是我想加的水印,尺寸200*100,
這是我編碼后的水印,編碼方式采用隨機(jī)序列編碼,通過編碼,水印分布到隨機(jī)分布到各個頻率,并且對水印進(jìn)行了加密,
將上圖與原圖的頻譜疊加,可見圖像的頻譜已經(jīng)發(fā)生了巨大的變化,
之后,將疊加水印的頻譜進(jìn)行傅里葉逆變換,得到疊加數(shù)字水印后的圖像,
肉眼幾乎看不出疊加水印后的圖像與原圖的差異,這樣,數(shù)字盲水印已經(jīng)疊加到圖像中去。
實(shí)際上,我們是把水印以噪聲的形式添加到原圖像中。
下圖是在空域上的加水印圖與原圖的殘差(調(diào)整了對比度,不然殘差調(diào)小看不見),
可以看出,實(shí)際上上述方法是通過頻域添加冗余信息(像噪聲一樣)。這些噪聲遍布全圖,在空域上并不容易破壞。
最終,均方誤差(MSE)為0.0244
信噪比(PSNR)為64.2dB
那么,為什么頻譜發(fā)生了巨大的變化,而在空域卻變化如此小呢?這是因?yàn)槲覀儽荛_了圖像的主要頻率。下圖是原圖頻譜豎過來的樣子,其能量主要集中在低頻。
水印提取是水印疊加的逆過程,
經(jīng)提取后,我們得到如下水印,問:為什么水印要對稱呢?嘿嘿,大家想想看。
本部分進(jìn)行攻擊性實(shí)驗(yàn),來驗(yàn)證通過頻域手段疊加數(shù)字盲水印的魯棒性。
1.進(jìn)行涂抹攻擊,這是攻擊后的圖片:
再進(jìn)行水印提取:
2.進(jìn)行剪切攻擊,就是網(wǎng)上經(jīng)常用的截圖截取一部分的情況:
進(jìn)行循環(huán)補(bǔ)全:
提取水?。?/p>
3.伸縮攻擊(這個實(shí)驗(yàn)明碼做的,水印能量較高,隱匿性不強(qiáng)):
提取水印(水印加的不好,混頻挺嚴(yán)重的):
4.旋轉(zhuǎn)攻擊(明碼):
提取水?。?/p>
5.JPEG壓縮后(這個實(shí)驗(yàn)我好像是拿明碼做的,能量主要加在了高頻):
提取結(jié)果:
6. PS 4像素馬賽克/均值濾波等,攻擊后圖像
提取水印后圖像:
7.截屏,
截屏后我手動摳出要測試的圖像區(qū)域,并且抽樣或者插值到原圖尺寸:
測試結(jié)果:
8. 亮度調(diào)節(jié)(明碼):
水印提?。?/p>
9.色相調(diào)節(jié)(明碼):
水印提?。?/p>
10.飽和度調(diào)節(jié)(明碼):
水?。?/p>
11.對比度(明碼):
水印:
12. 評論區(qū)用waifu2x去噪后圖片:
解水印:
13.美圖秀秀,我對我女票一鍵美顏,美白,磨皮,加腮紅,加唇彩(有一種很羞恥的感覺,捂臉):
提取水印:
14. 對于背景純色的圖其實(shí)也是無所謂的
能量系數(shù)為10時(shí)加水印圖片:覺得太顯噪就把能量系數(shù)調(diào)低,不過水印的隱秘性和魯棒性是互斥的
最終提取出的水?。?/p>
15.我用將RGB>600的像素設(shè)置成為(0,255,0)來模擬PS魔術(shù)手,
提取水印為:
16.屏攝,好吧,這個實(shí)驗(yàn)我做哭了
屏攝圖:
實(shí)驗(yàn)結(jié)果:
我把水印能量系數(shù)調(diào)整到2000都沒有用。
屏攝之后與原圖信噪比為4dB左右,我用多抽樣濾波的方式試過,濾不掉屏攝引入的噪聲。屏攝不僅引入了椒鹽噪聲,乘性噪聲,還有有規(guī)律的雪花紋理(摩爾紋)。
基于頻域的盲水印方法隱藏性強(qiáng),魯棒性高,能夠抵御大部分攻擊。但是,對于盲水印算法,魯棒性和隱匿性是互斥的。
本文方法針對屏攝不行,我多次實(shí)驗(yàn)沒有成功,哪位大神可以做一下或者討論討論。還有二值化不行,這是我想當(dāng)然的,覺得肯定不行所以沒做實(shí)驗(yàn)。其他的我試了試,用給出的方法調(diào)整一下能量系數(shù)都可以。
我想大家最關(guān)心的是什么最安全,不會被追蹤。
不涉及圖像的都安全,比如拿筆記下來。
涉及圖像的屏攝最安全,
截屏十分不安全。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。