打格仔就安全了嗎?AI消除馬賽克技術面世 厚格文字也能神還原

撰文:機器之心
出版:更新:

像素化(又稱馬賽克或「打格仔」)是一種常見的打碼方式,通過降低圖像中部分區域的分辨率來隱藏某些關鍵信息,但是,在你想隱藏訊息的同時,有一些技術卻反其道而行之,試圖將圖片還原為原始狀態。

最近,一個名為Depix的GitHub項目爆火,上線三天star量已經高達6.9k。項目作者Sipke Mellema是一名資訊安全顧問。Depix能夠從像素化圖像截圖中恢復原圖中包含的文字密碼。該項目適用於使用線性方框濾波器(linear box filter)創建的像素化圖像。如下圖所示,項目作者給出了像素化圖像、恢復之後的效果和原圖的對比結果(點擊放大瀏覽)▼▼▼

使用Depix從像素化圖像截圖中恢復文字密碼,操作也比較簡單:從截圖中分割出矩形像素化block;在具有相同字體設置(包括文本大小、字體、顏色、hsl)的編輯器中,粘貼待處理字符的德布魯因(De Bruijn sequence);給該序列截圖,盡可能使用和像素化圖像相同的截圖工具。

Depix算法利用線性方框濾波器單獨處理每一個block這一事實。它對搜索圖像中的每一個block執行像素化以尋找直接匹配。對於大部分像素化圖像,Depix盡量尋找單匹配結果,並假設這些匹配是正確的。至於周圍多匹配block的結果被看作像素化圖像中相同的幾何距離,並認為這些匹配也是正確的。該過程重複多次。在正確的block沒有更多幾何匹配後,Depix將直接輸出所有正確的block。對於多匹配block,Depix將輸出所有匹配的平均值。

【延伸閱讀】全裸監督|日本人創意去「格仔」 實測「馬賽克消除機」結果是……(點擊放大瀏覽)▼▼▼

+12

Depix背後的算法

像素化常使用線性方框濾波器實現。線性方框濾波器的實現很簡單,速度很快,可以並行處理多個block。由於線性方框濾波器是一種確定性算法,對同樣的值執行像素化通常會產生同樣的像素化block。使用同樣位置的block 對相同文本執行像素化,會得到同樣的block值。我們可以嘗試像素化文本來找出匹配的模式。幸運的是,這對於秘密值的一部分同樣奏效。我們可以把每個block或block組合看作一個子問題。

項目作者沒有選擇創建潛在字體的查找表。該算法要求在相同背景上具備相同的文本大小和顏色。現代文本編輯器還會添加色調、飽和度和亮度,也就是說存在海量潛在字體。項目作者給出的解決方案也很簡單:使用待處理字符的德布魯因序列,將其粘貼到相同的編輯器中,然後截圖。該截圖可以用作相似block的查找圖像,例如:

待處理字符的德布魯因序列截圖。(github.com)

德布魯因序列包括待處理字符的所有雙字符組合。這很重要,因為一些block會重疊兩個字符。找出恰當的匹配需要搜索圖像中具備相同像素配置的block。創建字母的德布魯因序列時加上空格顯然會帶來同樣的問題:算法無法找到後續字母的恰當block。有空格又有字母的圖像需要更長的搜索時間,但結果也更好。

對於大部分像素化圖像而言,Depix似乎能夠找到block的單匹配結果,並假設這是正確的。然後將其周圍多匹配block 的匹配結果看作在像素化圖像中處於相同的幾何距離,並假設這些匹配也是正確的。在正確的block沒有更多幾何匹配後,Depix直接輸出所有正確的block。對於多匹配block,Depix將輸出所有匹配的平均值。雖然Depix的輸出並不完美,但已經算不錯了。

對這個項目感興趣的讀者,可以自行嘗試。以後截圖時給敏感信息打碼,看來不能簡單地用「馬賽克」了。

【延伸閱讀】Adobe與學者研新技術把Selfie自拍變「他拍」 魔術修圖效果驚人(點擊放大瀏覽)▼▼▼

+7

【延伸閱讀】蘇格蘭球賽AI取代攝影師 誤認旁證光頭是球全場追拍 氣壞球迷(點擊放大瀏覽)▼▼▼

+12

【本文轉自「機器之心」,微信公眾號:almosthuman2014】