天天看點

揭秘版權保護下的視訊隐形水印算法(下篇)

視訊水印,作為保護知識産權的重要手段,早已被大衆習慣且接受,但是這種方法仍然存在着多方面的不足。對于觀衆來說,蓋在畫面一角的logo多少會影響到他們的觀賞體驗。對于視訊所有者來說,這種直接顯示在畫面上的水印也很容易被定位和攻擊。一些廠家為了應對這些攻擊,将水印時不時地從随機的方向插入到畫面裡,進而增加delogo的難度,但這就更進一步降低了觀衆的觀看體驗。

針對這些問題,隐形水印這門技術被提出并逐漸發展了起來。在《視訊隐形水印算法(上篇)》中,我們給大家介紹了封裝層以及基于LSB的隐形水印技術。這些方法雖然運算量較低,易于實作,但添加的水印也比較脆弱。比起保護知識版權,它們更多地被應用于隐藏資料或傳輸附屬資訊。接下來,本文将介紹一些在變換域上操作的隐形水印算法,它們能夠更好地應對各類攻擊。

在閱讀本文前可能需要一些前置知識,包括離散餘弦變換(DCT),離散小波變換(DWT)以及奇異值分解(SVD)等等。若你對這些内容感到陌生,可以浏覽以下幾個知乎專欄文章連結大緻了解一下:

  • 詳解離散餘弦變換(DCT):https://zhuanlan.zhihu.com/p/85299446
  • 形象易懂講解算法I——小波變換:https://zhuanlan.zhihu.com/p/22450818
  • 奇異值分解(SVD):https://zhuanlan.zhihu.com/p/29846048

01

DCT隐形水印

基于DCT的隐形水印是一類很常見的隐形水印算法,選擇DCT的原因有很多。

一是人眼對圖像中不同頻率的信号敏感程度不同,直接在頻率域上操作資料有利于控制主觀感覺到的失真程度,以保證水印的“隐形”。

二是不同頻率的信号穩定性不同,在頻率域加水印有助于控制水印的魯棒性,保證水印在載體經曆各類損傷後依然能夠還原出來。三是理論上這類方法可以直接嵌入一些編碼器,進而減少運算量。

但需要注意的是,上述一二兩點其實是有沖突的,水印資料所屬的頻率範圍越低,魯棒性越高,但圖像失真也越大,反之亦然。是以大部分實作會選擇在中頻範圍内添加水印。

下圖是一個常見的水印嵌入流程。圖像經過DCT變換後,把水印資料加到選好的頻率系數上,再使用IDCT還原圖像,這樣水印的嵌入就完成了。

揭秘版權保護下的視訊隐形水印算法(下篇)

常見的基于DCT的水印嵌入流程

如果在提取水印時有原始圖像作為參考,則圖中的嵌入邏輯一般有如下幾種選擇。式中vi表示原始系數,xi表示水印系數,α為常量。

揭秘版權保護下的視訊隐形水印算法(下篇)

有參時的水印嵌入公式

揭秘版權保護下的視訊隐形水印算法(下篇)

對應的水印提取流程

如果沒有原始圖像做參考,那麼可以參考上篇的LSB方法,在嵌入時将原始系數以低精度形式量化,再将水印資料存儲在高精度的區域中。

02

DWT與SVD

上文有提到隐形水印算法需要同時滿足低視覺損失和高魯棒性。能達到這個效果的工具不止DCT,DWT和SVD也是兩個常見的選擇。

其中DWT一般使用Haar小波,其運算量較低,可以将圖像分解成不同頻帶的四份,并且可以遞歸地執行多次,顯著減少後續需要處理的資料量。是以它常被用來做隐形水印的預處理。而SVD則是将圖像資料單純地視為二維矩陣,利用奇異值的穩定性來保護水印。

下圖是一個結合DWT和SVD的隐形水印例子。圖中雖然僅進行了一輪DWT,并選擇了LL低頻資料進行處理。但實際上也存在使用多輪DWT,以及利用LH和HL資料做SVD的實作。它們對應的水印提取流程也隻是個逆過程,這裡就不再貼圖了。

揭秘版權保護下的視訊隐形水印算法(下篇)

基于DWT與SVD的水印嵌入例子

03

萬事皆可機器學習

為了進一步提升效果,一些研究者們也跟着流行的腳步,嘗試使用機器學習的方法實作隐形水印。例如筆者撰寫此文時參考的Python開源庫invisible-watermark[2]中,就有一種機器學習實作,名叫RivaGAN。其架構如下圖所示。Attention子產品根據原始圖像推導出目标資料的分布Attention Mask,Encoder子產品再利用這個資料将水印資料D嵌入視訊中。RivaGan在訓練過程中分别使用了一個Critic網絡評估畫面失真和一個Adversary網絡模拟主動攻擊,并且增加了人工設計的Noise網絡模拟常見的傳輸失真(包括縮放、裁剪、有損壓縮),以期同時在畫面失真和魯棒性方面得到較好的結果。

揭秘版權保護下的視訊隐形水印算法(下篇)

RivaGAN的水印處理流程

04

水印的混淆與加密

使用隐形水印時一般需要公開算法,畢竟沒有人信任一個黑盒子的提取結果。但公開後,再複雜的水印嵌入方法都有被攻擊者提取、抹除甚至替換可能性。為了防止這種情況,在嵌入水印時,往往會對水印資料本身或者嵌入的坐标資訊進行混淆加密,通過key的形式管理。這樣一來,隻要攻擊者沒有密鑰,即便他們已經知道水印的嵌入方式,也沒辦法探測出原有的水印資料。

揭秘版權保護下的視訊隐形水印算法(下篇)

完整的隐形水印系統

05

總結

本文簡單介紹了隐形水印的頻域方法和機器學習方法。由于這半篇内容涉及到了一些專業知識,無法像上篇那樣詳細地解釋原理和細節。若讀者對省略的部分感興趣,除了相關論文,閱讀Python的invisibal-watermak庫源碼也是一個不錯的選擇,它實作了三種水印嵌入方案,本文提到的幾種變換都有用到。

參考文獻

[1] I.J. Cox, J. Kilian, F.T. Leighton, T. Shamoon. Secure spread spectrum watermarking for multimedia. 1997.

[2] https://github.com/ShieldMnt/invisible-watermark

[3] Zhang, Kevin Alex and Xu, Lei and Cuesta-Infante, Alfredo and Veeramachaneni, Kalyan. Robust Invisible Video Watermarking with Attention. MIT EECS, September 2019.

[4] C.I. Podilchuk, E.J. Delp. Digital watermarking: algorithms and applications. 2001.

揭秘版權保護下的視訊隐形水印算法(下篇)

繼續閱讀