當前位置:
首頁 > 最新 > 隱寫術:基於2D-FFT的圖像數字水印技術

隱寫術:基於2D-FFT的圖像數字水印技術

隱寫術:基於2D-FFT的圖像數字水印技術

提到「水印」,想必大家都不會感到陌生,最常見的例如我們日常使用的小錢錢就嵌有水印(就下面這種),這種水印存在的一個重要作用就是為了防偽。

「數字水印(Digital Watermarking)技術是將一些標識信息(即數字水印)直接嵌入數字載體當中(包括多媒體、文檔、軟體等)或是間接表示(修改特定區域的結構),且不影響原載體的使用價值,也不容易被探知和再次修改。但可以被生產方識別和辨認。通過這些隱藏在載體中的信息,可以達到確認內容創建者、購買者、傳送隱秘信息或者判斷載體是否被篡改等目的。數字水印是保護信息安全、實現防偽溯源、版權保護的有效辦法,是信息隱藏技術研究領域的重要分支和研究方向。」(摘自百度百科)

通過上面的這段話,我們至少可以知道,數字水印在版權保護方面具有重大的意義,而我們這篇推送也是聚焦於數字水印技術在圖像版權保護方面的應用。

首先,我們區分將要討論的「圖像水印」技術指的並不是是我們日常見到的這種水印:

原因就在於這種水印不僅影響原圖片質量,而且安全性太差,只需要用圖像處理軟體稍加處理就可以輕鬆的將水印去除,變成下面這樣的了:

圖像水印一旦去除,版權保護自然也就成了空談,畢竟你也沒辦法證明這圖片就是你的啊,你叫它一聲它又不會答應!

那麼問題來了,我們如何做到「不影響原載體的使用價值,也不容易被探知和再次修改,但可以被生產方識別和辨認」呢?本文的標題回答了這個問題——隱寫術:基於2D-FFT的圖像數字水印技術。

由於我們所做的工作都是針對RGB格式的圖像,所以在此之前我們先對此做個簡介。

三原色光模式(RGB color model)即RGB顏色模型或紅綠藍顏色模型,是一種加色模型,將紅(Red)、綠(Green)、藍(Blue)三原色的色光以不同的比例相加,以產生多種多樣的色光。(三原色的紅綠藍不可能用其他單色光合成)

最直觀的,我們將一張RGB格式的圖像在Photoshop中打開,查看圖像的通道(如下圖):

可以看到一張RGB格式的圖像是由紅、綠、藍三通道合成的。更進一步地,我們在matlab打開Lena的800*800像素jpg格式的圖像:

可以看到,該RGB格式的圖像顯示為三層矩陣,無法直接顯示出來。我們將其轉換為單通道的灰度圖再次在matlab裡面打開:

可以看到這是一個800*800的方陣,並且其中的數值在0-255範圍以內。了解完這些我們也就知道,數字圖像處理本質上也是對一堆數據進行處理罷了。

關於傅里葉變換(DFT)及其改進演算法快速傅里葉變換(FFT)二維快速傅里葉變換(2D-FFT)以及開源計算機視覺庫(OpenCV),在此不做詳細的闡述,有興趣可以參考以下鏈接:(這可都是我精心挑選的啊~)

1.形象展示傅里葉變換:

https://www.bilibili.com/video/av19141078/

2.一小時學會快速傅里葉變換(FFT):

https://zhuanlan.zhihu.com/p/31584464

3.二維傅里葉變換是怎麼進行的?

https://www.zhihu.com/question/22611929

4.OpenCV簡介:

https://zh.wikipedia.org/wiki/OpenCV

下面我們就以2D-FFT演算法為核心,在visual studio平台,使用C++語言結合OpenCV來為我們的圖像添加數字盲水印。圖像數字水印添加大致的流程如下圖所示:(在水印的嵌入和檢測模型中密碼都不是必須包含的部分,但增加密碼卻可以大大提高水印的魯棒性,本文僅用於驗證,未增加密碼)

圖像數字水印提取大致的流程如下圖所示:

下面我們在matlab中對原圖像做2D-FFT,選擇Lena的800*800像素JPG格式的圖像作為輸入:

做2D-FFT後得到的結果如下圖所示:(需要注意的是,matlab的2D-FFT很暴力,能直接對三通道圖像進行變換,而其他的平台,例如OpenCV則需要先對RGB圖像進行通道分解後才能做傅里葉變換。)

我們使用C++結合OpenCV對單通道圖像做2D-FFT的結果如圖所示:

接下來在頻域添加數字水印:

添加水印後的頻譜圖:

然後再對上面的頻域圖像做逆二維快速傅里葉變換(2D-IFFT),得到添加水印後的圖像(與原圖像幾乎無太大差別,反正你肉眼肯定是看不出來啥的~):

接下來我們對上圖做一些攻擊實驗:

1.塗抹攻擊實驗:

水印提取結果:

2.剪切攻擊實驗:

水印提取結果:

3.圖像疊加攻擊實驗:

水印提取結果:

以上,我們簡要介紹了基於2D-FFT的圖像數字水印技術,在visual studio平台使用C++結合OpenCV進行了驗證,並且對添加水印後的圖像做了一些簡單的攻擊實驗,由上述實驗結果可知該方法的隱匿性、魯棒性良好,能夠達到版權保護的目的。

最後,這個有趣的小項目是由娜姐、小晨晨還有我共同完成的,感謝隊友們辛勤滴付出,抽空總結整理出來,希望大家喜歡喲!

這是一群致力於科研傳播的faculty & PhD記錄分享點滴思考的平台,這裡有我們在各自領域(機器學習,醫療影像,材料科學,凝聚態物理,圖像處理,光學)涉獵研究的點滴感悟,有我們在國內,海外求學工作奮鬥的酸甜苦辣,亦有偶爾的風月和我們的詩與遠方。

想關注更多有趣的機器學習/計算物理/醫療影像/圖像處理的科普/前沿研究,請關注我們的公眾號:

REC

GIF

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 純真學者出神入化 的精彩文章:

TAG:純真學者出神入化 |