我的应用程序可以处理人们的照片和视频,我想用它来进行漫画。所以我需要一个算法来手动完成(我们的产品使用c ++ / Qt,它有图像处理类)或者也许是一些CLI程序,我可以在我自己的应用程序中调用和使用它。
答案 0 :(得分:47)
以下是一些可以使用的算法:
这些都非常基础,而且非常容易实现。请记住,中值和盒子模糊滤镜可以用线性时间复杂度w.r.t实现。内核半径。
更多修改:
一旦你了解了黄的算法,实现盒式模糊滤镜是一块美味的蛋糕。
阅读材料:
其他阅读材料包括用于细分和边缘追踪的Gonzalez & Woods' Digital Image Processing(似乎是旧版本)。 8向边缘跟踪可能非常难以弯曲(在像素上或像素间边缘之间进行选择以及如何锁定边缘)。我很乐意分享一些代码,但是百行代码并不完全适合这里。
答案 1 :(得分:22)
您可以尝试旋转镜检查,例如toonyphotos.com:
答案 2 :(得分:12)
您可能需要查看Freestyle,这是一个开源(Google Summer of Code,甚至)项目,以便为non-photorealistic renderer实施Blender。以下是卡通模式下输出的示例:
(来源:sourceforge.net)
答案 3 :(得分:7)
如果有一组参数可以在the GIMP的卡通过滤器(或其他一些过滤器组合)中达到预期的效果,则可以在batch processing mode中运行。
答案 4 :(得分:6)
我自己并没有这样做,而是考虑了两个步骤,可能会给图像带来卡通效果。
检测边缘,并在这些边缘上绘制相当粗的线条(几个像素)。
减少图像中的颜色数量。
答案 5 :(得分:5)
不确定这是否有帮助,但Photoshop的this tutorial建议执行以下操作:
这是结果。
我想你可以在你的程序中做类似的事情。
答案 6 :(得分:3)
这相对容易做到。步骤如下:
双向过滤可简化/抽象照片。您可能需要分离双边过滤器,以便更快。沿梯度在1d内执行双边过滤,然后沿梯度的法线执行。
检测边缘。例如,使用高斯差分算法。您可能需要在渐变方向上使用DoG,并按照流线对其进行平滑。要获取流线,您需要获取可以通过结构张量获得的Edge Tangent Flow(ETF)。
量化颜色。实际上,您可以对亮度进行量化,以模拟cel阴影(又称为卡通阴影)。
将量化后的抽象图像和检测到的边缘混合在一起。
这将为您提供看起来像cel阴影卡通片的渲染图像。
我制作了一些免费软件(用于win64),该软件可以在以下位置执行此操作: http://3dstereophoto.blogspot.com/p/painting-software.html
该软件的名称为“ The Cartoonist”,您可以在此处查看其运行情况: http://3dstereophoto.blogspot.com/2018/07/non-photorealistic-rendering-software_9.html
这些都是我博客的链接,主要涉及3d摄影(深度图,摄影测量等)。
答案 7 :(得分:1)
实际上我不知道一个工具,但你可以看看osg(openSceneGraph)
有一个osgFX库,有卡通效果......也许你可以从那个图书馆激发......
也许(我不知道)imagemagick有很多功能,也许它有这样的功能,但我不知道......