我正在寻找一种可以轻松让照片上的人物无法辨认的方法。每当我把任何照片(通常是城市和风景)放到我的在线相册中时,我都会先让所有可辨认的人都无法辨认,因为我觉得不发布陌生人的照片是基本的礼貌问题。
所以,我基本上想做或多或少谷歌对街景图像所做的事情。目前,我为每张照片手动执行此操作,在 Gimp 中围绕所有面孔绘制椭圆选择,然后使用模糊对选择进行过滤。
有没有一种工具可以让我通过单击或多或少地进行模糊处理?理想情况下,第一步显示所有已识别的面孔,然后让我取消选择那些我不想模糊的面孔?
(模糊其他个人信息,例如汽车牌照,也很好,但我的主要目标是找到一种模糊人脸的工具,因为人们经常出现在照片上,而可辨认的车牌总数却很少。此外,我正在寻找一种工具,模糊消除面部。像素化可能是一种退路,但它无法像模糊那样与图像的其余部分很好地融合在一起。
我已经搜索此类工具一段时间了,但我发现的所有工具似乎都属于以下三类之一:
- 它旨在在智能手机上运行,而不是在台式电脑上运行,例如这个应用程序。
- 它适用于视频,正如类似的问题所表明的那样这或者这, 或者本文。
- 它是基于网络的,因此所有照片都需要上传到某人的服务器进行处理,并且在编辑照片时需要互联网连接,例如这项服务或者本编辑。
我专门寻找可以在 Windows 和/或 Ubuntu 上运行且无需网络连接的软件(即不需要我上传所有照片进行处理的云工具)。免费工具当然不错,但付费工具也比没有工具好。
答案1
我已经找到了GIMP这人脸检测插件从 2010 年开始(不保证现在仍然有效):
否则,您可能必须推出自己的软件。在这种情况下,请参阅以下链接:
人脸检测软件
微软研究院人脸 SDK Beta 版
英特尔感知计算 SDK
特别值得一提的是OpenCV。 看检测脸部然后自动裁剪图片 例如使用 python。
答案2
如果您对“需要一些组装”的解决方案感到满意,请尝试使用“facedetect”(仅使用 OpenCV)和 ImageMagick。以下页面中有一个例子:
http://www.thregr.org/~wavexx/hacks/facedetect/#blurring-faces-within-an-image
关于这个例子有几点说明:
- 它使用像素化,但您可以轻松地用简单的“-blur 0x100”替换“-scale”运算符。
- 示例中每个面都是单独处理的,这正是您所需要的:您可以使用“display -crop GEOMETRY”显示模糊处理前的面。使用“zenity”或某些 shell 脚本,可以相对直接地询问是否继续进行模糊处理。
但是没有一款人脸检测软件是 100% 准确的。您会得到误报和漏报。特别是,默认的 OpenCV 配置文件绝对不是市场上最好的,除非经过额外的训练。使用您描述的方法可以轻松解决误报问题,但漏报问题则另当别论。必须手动查看所有照片可能不会为您节省很多时间。我想这取决于您的准确性要求。
要显示叠加的检测,请在图像样本上使用“-o”标志,看看检测率是否满足您的需要。
答案3
目前最好的答案似乎是:
https://github.com/openalpr/openalpr
不幸的是,这只是一个软件图书馆并且仅适用于检测。您需要将其集成到实现模糊处理的软件中。
我有类似的需求,所以我可能会尝试一下,但我的编程技能有点……生疏了。
Google 也遇到了同样的问题。他们在这里发布了他们的研究成果,但没有发布他们的代码:http://static.googleusercontent.com/media/research.google.com/en//archive/papers/cbprivacy_iccv09.pdf
答案4
如果您更热衷于应用程序开发,可以尝试使用 Cloudinary 的 API。以下是有关它的更多信息:http://cloudinary.com/blog/automatic_face_blurring_in_images_made_easy
我找不到任何可以自动执行此操作的软件应用程序。可能有一些 Photoshop 或 Gimp 插件。