基於奇異值分解法(SVD)的浮水印技術

Ken Huang
電腦視覺
Published in
4 min readOct 12, 2020

奇異值分解法(Singular Value Decomposition)是由GolubKahan在1965年提出,推倒過程可以參考這篇論文,後來被Chung等人結合向量量化法來做影像植入浮水印的功能,可參考這篇論文

如果對於SVD的推導與計算想了解得更深入,可以參考交大周老師的這篇文章,這邊僅介紹一些基本觀念。假設有一張灰階影像A,其長度為m*n,而A的Rank為m,則A的SVD可表示為:

V和U是Orthogonal Matrix且Σ為:

奇異值(Singular Values)還具有下列兩個特性:

若我們令

則λi為第i個Eigen-value,那與Singular Values會成下列關係:

一般用SVD來壓縮影像會產生較大失真,若結合VQ可在壓縮與失真之間取得更好的平衡。

假設我們要把B影像植入A影像中作為浮水印,用SVD之所以可行的原因在於,先將B的奇異值透過一個private key壓縮變小,這時會得到可被植入的B',接著植入影像A,植入方法是將A影像中較小的奇異值取代為剛剛壓縮過的B',即可得到植入完成的A'。

合併結果比較:

以這例子而言,我將B影像的前半奇異值除了10,並且 concat 到A影像的前半奇異值後面。

A' = [A前半的奇異值 + B前半的奇異值]

所以如果要還原影像就是把A'奇異值取出後,將後半段乘10並直接當作前半段奇異值產生一個∑,再把B影像做SVD後的U和VT metrix乘回去,就完成還原了。(目前這作法因為捨棄掉原圖一半的奇異值會造成一點失真,但如果用別的壓縮方法將原本奇異值壓縮成一半,就可以在還原後更接近原圖)

因為B的奇異值已經過壓縮,所以合併後的結果不易被察覺,而取出Singular Values後要還原B影像也需要握有一開始壓縮的private key才知道原始內容。

--

--

Ken Huang
電腦視覺

在網路上自學的過程中,體會到開放式資源的美好,希望藉由撰寫文章記錄研究所的學習過程,同時作為回饋網路世界的一種方式。Email : kenhuang2019iii@gmail.com ,如果有任何問題都歡迎與我聯繫。