Depix
Depix 是一种从像素化屏幕截图中恢复纯文本的技术的 PoC。
此实现适用于使用线性盒式过滤器创建的像素化图像。在本文中,我将介绍像素化和类似研究的背景信息。
例子

更新
- 27 十一月 ’23:重构并删除了所有这些 pip 内容。我喜欢可以直接运行的脚本。如果找不到包,只需安装它。还添加了
tool_show_boxes.py
显示框检测器有多糟糕(您必须真正精确地剪切出像素)。做了一个 TODO 来创建一个只剪切静态大小框的版本。
安装
- 安装依赖项
- 运行 Depix:
python3 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 像素化的示例图像进行去像素化。Greenshot 通过平均伽马编码的 0-255 值来取平均值,这是 Depix 的默认模式。
python3 depix.py \ -p images/testimages/testimage3_pixels.png \ -s images/searchimages/debruinseq_notepad_Windows10_closeAndSpaced.png
- 对使用 Sublime 创建并使用 Gimp 像素化的示例图像进行去像素化,其中以线性 sRGB 进行平均。backgroundcolor 选项会过滤掉编辑器的背景颜色。
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
- (可选)您可以使用 查看盒子检测器是否找到了您的像素
tool_show_boxes.py
。如果看起来全是乱七八糟的,请考虑使用较小的像素批次。好看的盒子示例:
python3 tool_show_boxes.py \ -p images/testimages/testimage3_pixels.png \ -s images/searchimages/debruinseq_notepad_Windows10_closeAndSpaced.png
- (可选)您可以使用 创建像素化图像
tool_gen_pixelated.py
。
python3 tool_gen_pixelated.py -i /path/to/image.png -o pixed_output.png
- 如需详细说明,请尝试运行
$ python3 depix.py -h
和tool_gen_pixelated.py
。
关于
制作搜索图像
- 将屏幕截图中的像素块剪切成单个矩形。
- 将包含预期字符的De Bruijn 序列粘贴到编辑器中,并使用与输入图像相同的字体设置(相同的文本大小、相似的字体、相同的颜色)。
- 对该序列进行截图。
- 将该屏幕截图移动到类似文件夹中
images/searchimages/
。 - 运行 Depix,并将
-s
标志设置为此屏幕截图的位置。
制作像素化图像
- 准确剪切出像素化块。参见
testimages
示例。 - 它尝试检测方块,但效果并不好。
tool_show_boxes.py
如果方块没有被正确检测到,请使用脚本和不同的剪切图进行操作。
算法
该算法利用了线性盒式过滤器单独处理每个块的事实。对于每个块,它会对搜索图像中的所有块进行像素化,以检查直接匹配。
对于某些像素化图像,Depix 设法找到单匹配结果。它假设这些结果是正确的。然后将周围的多匹配块的匹配与像素化图像中的几何距离进行比较。匹配也被视为正确的。这个过程重复几次。
当正确块不再有几何匹配时,它将直接输出所有正确块。对于多匹配块,它将输出所有匹配的平均值。
已知限制
- 该算法通过整数块边界进行匹配。因此,它有一个基本假设,即对于渲染的所有字符(无论是在 de Brujin 序列中还是在像素化图像中),文本定位都是在像素级别完成的。然而,一些现代文本光栅化器以亚像素精度定位文本。
- 您需要了解字体规格,有时还需要了解截屏时的屏幕设置。但是,如果原始图片中有足够的纯文本,您可能能够将原始图片用作搜索图片。
- 如果执行了额外的图像压缩,这种方法就不起作用,因为它会弄乱块的颜色。
国内下载链接
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END