查看原文
其他

GitHub标星7000+,快速恢复像素化图像,效果惊人

整理 | 高卫华

出品 | AI科技大本营

像素化(类似于马赛克)被许多领域用来加密图像中的重要信息, 例如很多公司会将内部文档中的密码像素化以加密数据,但之后并没有工具来恢复被像素化的图像。

对此,GitHub上的一个开发者创建了一个工具Depix,适用于使用线性方框滤波器创建的像素化图像,可从像素化屏幕快照中恢复密码,测试效果如下:

 

此前一项人工智能的相关研究引起人们的关注,声称“研究人员创建了一种可以完美消除脸部像素的工具”。事实上,它并没有做到这一点。这种最新的PULSE算法类似于Google在2016年开发的RAISR算法。当像素化时,AI可生成相同图像的人脸,但其恢复的人脸并不是原始人脸。

参考链接:

https://gizmodo.com/researchers-have-created-a-tool-that-can-perfectly-depi-1844051752

诸如PULSE这类的算法看起来是新发展,但其实它们源于众多去模糊工具。

M. W. Buie在1994年编写了一个用于生成“ Plutos”的工具,可对图像进行模糊处理,并将其与观察到的图像进行匹配。

在2006年发表的一篇文章中,D.Venkatraman提出了一种用于恢复被像素化的信用卡号的算法,D.Venkatraman生成了所有信用卡号,对它们进行像素化,然后将恢复结果与被像素化的卡号进行比较。

2019年,S.Sangwan解释了如何通过锐化图像以及Google图像查找,来利用Photoshop为OSINT恢复面部。与其他技术类似,它通过Google图像查找的结果作“外力”参考,来恢复被像素化的面部图像。

可以注意到,上述解决方案之间有相似之处:如果没有足够的信息来适当地平滑图像,则选择的技术是将相似数据像素化再检查是否匹配。同时,这也是Depix从屏幕快照中恢复密码的算法基础。


像素化


像素化描述了降低图像分辨率以检查信息的过程。

Depix所用的滤波器不同于普通的线性方框滤波器, 其线性方框滤波器采用一个像素框,使用该框中所有像素的平均值覆盖像素,实现起来非常简单,且由于它可以并行处理多个块,其运行速度很快。

表情符号的图像分为四个块(block),块的平均颜色会覆盖块的像素,从而产生最终的像素化图释。由于原始信息丢失,因此无法直接反转滤波器。下图为线性方框滤波器的示例:

图像模糊处理可以通过多种方式进行,使用线性方框滤波器的像素化可以看作是模糊技术的子集,大多数模糊算法在尝试模仿由摇晃的相机或聚焦问题引起的自然模糊时,往往会通过散布像素的方式。


算法说明


由于线性方框滤波器是确定性算法,将相同的值进行像素化会导致相同的像素块。也就是说,使用相同的块位置对相同的文本进行像素化将产生相同的块值,因此可以尝试对文本进行像素化以找到匹配的模式。

该算法要求在相同背景上具有相同的文本大小和颜色。而现代的文本编辑器还添加了色相、饱和度和亮度,允许使用大量可能的字体设置来拍摄屏幕截图。其解决方案非常简单:采用De Bruijn预期字符序列,将其粘贴到同一编辑器中,再进行截图。该屏幕截图用作类似块的查找图像。例如:

该序列包括预期字符的所有2个字符的组合。使用2个字符的组合很重要,因为某些块可以重叠两个字符。

要找到适当的匹配项,需要在搜索图像中存在相同像素配置的精确块。在测试图像中,Depix所用的算法找不到'o'的一部分,这是因为在搜索图像中,搜索块还包含下一个字母的一部分(“ d”),但在原始图像中会有一个空格。

创建一个在其周围带有空格的De Bruijn字母序列显然会带来相同的问题:该算法将无法为连续字母找到合适的块,带有间隔和接近的字母的图像需要更长的搜索时间,但会产生更好的结果。

该算法利用线性方框滤波器,分别处理每个块,对搜索图像中的所有块进行像素化,以检查直接匹配。

对于大多数像素化图像,Depix先设法找到单匹配结果,然后假设这些是正确的,与周围多匹配块的结果进行比较,得出在几何上与像素化图像相同,匹配也被视为正确,接着重复此过程几次。当正确的块不再具有几何匹配之后,直接输出所有正确的块。对于多匹配块,输出所有匹配的平均值。

虽然Depix的输出远未达到完美的水平,但性能相当不错,可以正确读取大多数字符。下图显示了带有随机字符的测试图像。


使用方法


1.从屏幕快照中将像素化的块切出为单个矩形。

2.在具有相同字体设置(文本大小,字体,颜色,hsl)的编辑器中,粘贴带有预期字符的De Bruijn序列。

3.制作序列的屏幕截图,最好使用与创建像素化图像相同的屏幕截图工具。

跑python depix.py -p [pixelated rectangle image] -s [search sequence image] -o output.png

参考链接:

https://github.com/beurtschipper/Depix

https://www.linkedin.com/pulse/recovering-passwords-from-pixelized-screenshots-sipke-mellema

https://damip.net/article-de-bruijn-sequence

更多精彩推荐

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存