批量去水印技術原理(以我的衣櫥為例,給老趙找找麻煩)

weixin_34037977發表於2009-12-19

批量去水印是個邪惡的技術,以老趙的衣櫥為例子就更邪惡了。之所以以衣櫥為例子而不以時尚網為例子,是標題需要。實際上,時尚網的水印批量去除效果更佳。閒話少說,擺原理,上圖片(程式碼就不上了)。

======================================

通過觀察可以發現,如果以圖片的右下角為基準,很多網站圖片的水印位置是固定的,因此,可以通過以下步驟去除:

第一步:制定一張mask圖片,這張圖片標記了水印的位置。

mask圖片可以用photoshop或其它工具做。我最初的想法是讓程式智慧提取,輸入兩張帶有水印的圖片,根據水印區域相似性來找到水印區。這個思路實現起來比較難,試了幾個方法,都不理想。還是用photoshop扣掉非水印區域省心。

下面是我做的“衣櫥”的mask圖片,其中非白色的畫素便是水印區:

mask2

第二步:對於要去水印的圖片,根據mask圖片,通過程式摳掉其中的水印區域。這一步可以省略,摳不摳都不影響最終結果。放在這裡是為了把原理講的更清晰些。經過第二步,我們得到了一張區域性殘缺的圖片。

第三步:圖片復原。圖片復原是一種影像處理技術,英文叫Image Inpainting。原理很複雜,網上的論文大把抓,有興趣的可以去看看。

我用的是OpenCV的影像復原函式。先看看OpenCV影像復原的演示,對這個技術有個直觀認識。這是一張殘缺的照片:

image

復原後的照片:

image

效果很棒。:P

我按上面思路寫了一個 demo,拿老趙的衣櫥做實驗,結果如下:

image

換張圖片試試:

image

再換張:

image

水印去掉了,復原後的圖片,仔細看,還能看出痕跡。mask模板再製作精良點,選擇更好的演算法估計效果會好一些。

相關文章