Depix:还原马赛克工具的试用及总结

背景

一周前发现git上有个叫Depix的项目非常火,可以用来去除马赛克。
好奇之下准备下来试用一下这个工具
参考:

  1. https://github.com/beurtschipper/Depix
  2. 算法说明:https://www.linkedin.com/pulse/recovering-passwords-from-pixelized-screenshots-sipke-mellema
  3. De Bruijn序列:https://damip.net/article-de-bruijn-sequence

说明【翻译】

Depix适用于使用线性框过滤器(linear box filter)创建的像素化(马赛克)图像
使用方法:

  1. 从屏幕快照中将像素化的块切出为单个矩形。
  2. 在具有相同字体设置(文本大小,字体,颜色,hsl)的编辑器中,粘贴带有预期字符的De Bruijn序列。【见参考3】
  3. 制作序列的屏幕截图。如果可能,请使用与创建像素化图像相同的屏幕截图工具。
  4. 运行 python depix.py -p [pixelated rectangle image] -s [search sequence image] -o output.png

算法【翻译】

Depix使用的算法利用了线性盒式滤波器分别处理每个块的事实。对于每个块,它将对搜索图像(search image)中的所有块进行像素化以检查直接匹配。
对于大多数像素化图像,Depix设法找到单匹配结果。假设这些是正确的。然后,将周围的多匹配块的匹配进行比较,以在几何上与像素化图像中的距离相同的距离进行比较。匹配也被视为正确。重复此过程几次。
正确的块不再具有几何匹配之后,它将直接输出所有正确的块。对于多匹配块,它输出所有匹配的平均值。


说的简单一点
首先我们要创建一份预期字符的De Bruijn序列图像(search image)
比如我们知道打了马赛克的字符可能出现abc三种字符 那么他的De Bruijn序列为

aabacbbcca

这个序列包含了所有长度为2的字符组合可能性
而对于线性框滤镜算法,它采用一个像素框,然后用该框中所有像素的平均值覆盖像素。
那么将相同的值进行像素化将始终导致相同的像素化块。
这样一来我们就可以在序列图像中进行像素化 将得到的像素化结果与马赛克图像比较
通过穷举来得到最近似的结果

复现结果

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

作者提供的序列图像(search image)
在这里插入图片描述
这个图像中包含了数字、英文字符、标点符号等各种两两出现的可能性 用于搜索匹配
下面是跑了作者测试用例的结果

  1. 测试1
    马赛克图像
    在这里插入图片描述
    还原图像
    在这里插入图片描述
  2. 测试2
    马赛克图像
    在这里插入图片描述
    还原图像
    在这里插入图片描述
  3. 测试3
    马赛克图像
    在这里插入图片描述
    还原图像
    在这里插入图片描述

对于作者提供的这三个例子,我们可以发现还原的结果还是不错的

使用自己的图像

这里我创建了一份序列图像(search image) [字符a-z]
在这里插入图片描述
并且在同样的编辑器(记事本)内写了一串字符(eggbed)
在这里插入图片描述
像素化
在这里插入图片描述
还原
在这里插入图片描述
额。。。显然对于自己的序列图像 实验失败了
原因猜测:
有可能是因为在像素化时使用的并非是作者要求的线性滤波器[我只是用了美图秀秀的马赛克]
从而导致了无法匹配
之后有空再试一下吧~~

总结

在刚开始看到这个工具时 感觉很厉害竟然能够还原马赛克图像
看了一遍之后才发现 对于实现这个功能 限制条件还是很多的
尤其是你需要知道马赛克原始字符会有哪些可能
并且你的序列图像需要与马赛克图像原本的字符拥有相同字体设置(文本大小,字体,颜色,hsl)

总之 对于随手打了马赛克后的一串文字 就想用这个工具来去掉马赛克 这是不现实的有困难的 [话不能说死]
而作者在说明之中也是说的很清楚这个工具的适用范围
更不要说是打了马赛克的图片了。
以上~

### 如何使用 Photoshop 恢复图像中的马赛克效果 在 Photoshop 中,虽然没有专门针对马赛克恢复的功能模块,但可以通过多种方法尝试减少或消除马赛克的效果。以下是几种常用的技术: #### 方法一:利用放大插件和重绘工具 通过安装第三方插件(如 Gigapixel AI 或 Topaz DeNoise AI),可以提高图片分辨率并优细节[^3]。这些插件能够分析像素结构,并尽可能还原被压缩或模糊的部分。 对于局部区域的修复,可以选择 **Clone Stamp Tool (仿制图章)** 和 **Healing Brush Tool (修补工具)** 来手动绘制丢失的信息[^4]。具体操作如下: 1. 使用 Clone Stamp 工具复制周围清晰部分覆盖到有马赛克的地方; 2. 利用 Healing Brush 自动融合边缘,使过渡更加自然。 #### 方法二:借助 Camera Raw 进行高级调整 如果原始文件并非完全损坏,则可通过启用 `Camera Raw Filter` 对其进一步处理[^2]。此功能允许用户调节亮度、对比度以及色彩平衡等参数来改善视觉质量。例如降低锐程度或者增加阴影细节可能会帮助掩盖某些类型的失真现象。 另外,在应用上述步骤之前建议先执行去噪预处理以减少干扰因素的影响。 #### 方法三:采用机器学习算法模型预测缺失数据 近年来基于深度神经网络训练而成的应用程序逐渐兴起,它们专为解决此类问题而设计。比如 DAIN(Deep Image Prior),它可以依据现有上下文推测出可能存在的隐藏特征从而实现高质量重建[^5]。不过需要注意的是这类技术通常需要较强的计算资源支持而且结果依赖于输入样本的质量。 ```python import cv2 as cv from dain import DeepImagePriorRestorer def restore_mosaic(image_path): restorer = DeepImagePriorRestorer() restored_image = restorer.restore(cv.imread(image_path)) return restored_image ``` 以上就是一些常见的用于减轻甚至移除照片上马赛克效应的方式介绍。每种方案都有各自的优缺点,请根据实际需求选择合适的方法试用看看吧!
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值