Depix:还原马赛克工具的试用及总结[通俗易懂]

Depix:还原马赛克工具的试用及总结[通俗易懂]背景一周前发现git上有个叫Depix的项目非常火,可以用来去除马赛克。好奇之下准备下来试用一下这个工具参考:https://github.com/beurtschipper/Depix算法说明:https://www.linkedin.com/pulse/recovering-passwords-from-pixelized-screenshots-sipke-mellemaDeBruijn序列:https://damip.net/article-de-bruijn-sequence说

大家好,又见面了,我是你们的朋友全栈君。

背景

一周前发现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)

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/147770.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 服务器的cd驱动器怎么修改盘符,更改dvd驱动器盘符,cd驱动器盘符改「建议收藏」

    服务器的cd驱动器怎么修改盘符,更改dvd驱动器盘符,cd驱动器盘符改「建议收藏」有部分win7系统用户反映说,当他在电脑中安装了虚拟光驱之后,电脑就会产生好多个无效的驱动器盘符,所以就将要将它们删除掉,可以却发现右击的菜单中找不到删除选项,也无法弹出光驱,导致无法删除无效驱动器盘符,这要怎么办呢?接下来给大家分享一下Win7系统删除无效驱动器盘符右键没有删除选项要怎么解决吧!推荐:1、点击win7系统的开始菜单,右击计算机,选择管理选项卡,进入计算机管理;2、打开计算机管理后…

    2022年5月31日
    167
  • anaconda+pycharm的安装与配置教程

    anaconda+pycharm的安装与配置教程注:anaconda是自带Python解释器和Python编辑器于一身的,但是Python编辑器中pycharm更好用,所以本教程是写给自己的,每次重新安装anaconda和pycharm的时候有的要注意的地方都记不住了1.安装anaconda1.1.去官网下载anaconda的安装包(官网:https://www.anaconda.com/products/individual)在官网下载很忙的话可以去这里https://mirrors.tuna.tsinghua.edu.cn/下1.2.安装过

    2022年8月28日
    0
  • SharePoint2007中的WCM

    SharePoint2007中的WCM

    2021年7月29日
    54
  • 求矩阵的逆的三种方法

    求矩阵的逆的三种方法我们知道求矩阵的逆具有非常重要的意义,本文分享给大家如何针对3阶以内的方阵,求出逆矩阵的3种手算方法:待定系数法、伴随矩阵法、初等变换法(只介绍初等行变换)待定系数法求逆矩阵 1 首先,我们来看如何使用待定系数法,求矩阵的逆。 举例: 矩阵A= 12 -1-3 2 假设所求的逆矩阵为 ab cd 则 3 从而可以得出方程组 a+2c=1 b+2d=0 -a-3c=0 -b-3d=1

    2022年8月21日
    3
  • acwing-1088旅行问题

    acwing-1088旅行问题原题链接John 打算驾驶一辆汽车周游一个环形公路。公路上总共有 n 个车站,每站都有若干升汽油(有的站可能油量为零),每升油可以让汽车行驶一千米。John 必须从某个车站出发,一直按顺时针(或逆时针)方向走遍所有的车站,并回到起点。在一开始的时候,汽车内油量为零,John 每到一个车站就把该站所有的油都带上(起点站亦是如此),行驶过程中不能出现没有油的情况。任务:判断以每个车站为起点能否按条件成功周游一周。输入格式第一行是一个整数 n,表示环形公路上的车站数;接下来 n 行,每行两个整数

    2022年8月9日
    2
  • Hashtable 的实现原理

    Hashtable 的实现原理

    2021年5月10日
    216

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号