一般用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才知道原始內容。
Ref:
https://zh.wikipedia.org/zh-tw/%E5%A5%87%E5%BC%82%E5%80%BC%E5%88%86%E8%A7%A3#%E5%B9%BE%E7%A8%AE%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80%E4%B8%AD%E8%AE%A1%E7%AE%97SVD%E7%9A%84%E5%87%BD%E5%BC%8F%E7%AF%84%E4%BE%8B
https://ccjou.wordpress.com/2009/09/01/%E5%A5%87%E7%95%B0%E5%80%BC%E5%88%86%E8%A7%A3-svd/
https://ccjou.wordpress.com/2013/01/17/%E7%B7%9A%E6%80%A7%E8%AE%8A%E6%8F%9B%E8%A7%80%E9%BB%9E%E4%B8%8B%E7%9A%84%E5%A5%87%E7%95%B0%E5%80%BC%E5%88%86%E8%A7%A3/
https://blog.csdn.net/u012162613/article/details/42214205