1.9 万 Star!打马赛克就安全么?这个“一秒还原”的工具了解一下

1,175 阅读2分钟

【导语】:Depix 是用于将数字、字母从像素化的图片中还原的工具。

简介

Depix 是用于将数字、字母从像素化的图片中还原的Python工具,简单点说,就是从马赛克中恢复原始内容,目前有它的一些限制,仅适用于使用线性滤波器创建的像素化图像。

许多领域都使用像素化来混淆图片中的信息,像素化描述了部分降低图片分辨率以审查信息的过程,Depix的算法使用了线性滤波器的原理,线性滤波器采用一组像素,并用这组像素中所有像素的平均值覆盖这些像素。线性滤波器是一种确定性算法,因此对相同值进行像素化将始终产生相同的结果。

项目地址是:

github.com/beurtschipp…

安装使用

  • Clone仓库源码:
git clone https://github.com/beurtschipper/Depix.git
cd Depix
  • 安装依赖:
python -m pip install -r requirements.txt
  • 运行:
python depix.py -p /path/to/your/input/image.png -s images/searchimages/debruinseq_notepad_Windows10_closeAndSpaced.png -o /path/to/your/output.png
  • 对使用Notepad创建并使用Greenshot像素化的示例图像进行去像素化:
python3 depix.py -p images/testimages/testimage3_pixels.png -s images/searchimages/debruinseq_notepad_Windows10_closeAndSpaced.png

  • 对使用Sublime创建并使用Gimp像素化的示例图像进行去像素化:
python3 depix.py -p images/testimages/sublime_screenshot_pixels_gimp.png -s images/searchimages/debruin_sublime_Linux_small.png --backgroundcolor 40,41,35 --averagetype linear

原理简介

  1. 使用与马赛克图相同的字体设置,包括字体、颜色、大小等,将debruinseq.txt(在源码仓库中有)的内容放到编辑器(例如上面介绍的两个例子,就是分别放到Notepad和Sublime Text)中并截图,截图的结果作为识别搜索的训练数据,用于识别马赛克图中的内容。

  2. 算法利用线性滤波器单独处理每个马赛克块。对于每个块,它将搜索图像中的所有像素化块以检查直接匹配。

  3. 对于大多数像素化图像,Depix设法找到单一匹配结果。算法将周围多个匹配块的进行几何比较,重复该过程输出最终结果。

  4. 限制:该算法通过整数块边界匹配。因此,它有一个基本假设,对于所有渲染的字符,文本定位都是在像素级别完成的。

此前已有网友用这个工具做过测试,如下图:

给敏感信息打码,看来不大管用了。

开源前哨 日常分享热门、有趣和实用的开源项目。参与维护 10万+ Star 的开源技术资源库,包括:Python、Java、C/C++、Go、JS、CSS、Node.js、PHP、.NET 等。