Algorithm 如何以编程方式将图像动画化?
我的应用程序可以处理人们的照片和视频,我想将其卡通化。所以我需要一个手动算法(我们的产品使用c++/Qt,它有图像处理类)或者一些CLI程序来为我完成这项工作,我可以从我们自己的应用程序调用和使用 实际上我不知道有什么工具,但你可以看看osg(openSceneGraph) 有一个osgFX库和卡通效果。。。也许你可以从那个图书馆得到启发Algorithm 如何以编程方式将图像动画化?,algorithm,image-manipulation,command-line-interface,Algorithm,Image Manipulation,Command Line Interface,我的应用程序可以处理人们的照片和视频,我想将其卡通化。所以我需要一个手动算法(我们的产品使用c++/Qt,它有图像处理类)或者一些CLI程序来为我完成这项工作,我可以从我们自己的应用程序调用和使用 实际上我不知道有什么工具,但你可以看看osg(openSceneGraph) 有一个osgFX库和卡通效果。。。也许你可以从那个图书馆得到启发 也许(我不知道)imagemagick有很多功能,也许它有这样一个功能,但我不知道…我自己没有做过,但考虑两个步骤,可能会让图像看起来像卡通 检测边缘,并在
也许(我不知道)imagemagick有很多功能,也许它有这样一个功能,但我不知道…我自己没有做过,但考虑两个步骤,可能会让图像看起来像卡通
不确定这是否有帮助,但对于Photoshop,建议执行以下操作:
我想你可以在你的程序中做一些类似的事情。你可以试试旋转镜,比如:
以下是一些算法:
- 中值或重复框模糊过滤器,以获得卡通调色板
- 编辑:双边过滤应该更适合您的需要
- Min filter(第0百分位)用于增强某些类型的边
- 使用RGB颜色立方体中的小子立方体或球体进行彩色图像分割
- 使用Sobel核或8路边缘跟踪等边缘检测对分割图像进行常规边缘增强
- 具有增强边缘的合成模糊/中值滤波图像
- (获取PDF)
- (获取PDF)注意:我在C#中实现了这一点,使用Mono/SIMD加速直方图合并,但是,只有当直径超过约60像素时,它才似乎比O(r)算法更好,这是由于可比的add/sub指令数(盈亏平衡点),一个C++实现可能更适合于使用SIMD。
其他阅读材料包括(似乎是旧版本)分割和边缘跟踪。8路边缘跟踪确实很难让你的头弯曲(在像素上或像素边缘之间选择,以及如何锁定边缘)。我很乐意与大家分享一些代码,但这一百行代码并不完全适合这里。如果在的卡通过滤器(或其他过滤器组合)中有一些参数可以达到预期的效果,那么它可以在一个开放源代码(甚至是Google Summer of code)中运行。要实现的项目。以下是动画模式下的输出示例:
(来源:)这相对容易做到。以下是步骤:
- 双边过滤以简化/抽象照片。您可能希望分离双边过滤器,以便更快。沿梯度在1d内执行双边滤波,然后沿梯度的法线执行双边滤波
- 检测边缘。例如,使用高斯差分算法。您可能希望在渐变方向上使用狗,并沿着流线使其平滑。为了得到流线,你需要得到边切线流(ETF),你可以通过结构张量得到
- 量化颜色。实际上,您可以量化亮度以模拟cel着色(也称为卡通着色)
- 混合量化后的抽象图像和检测到的边缘
这些是我的博客的链接,主要是关于3d摄影(深度图、摄影测量等)。实际上我尝试过这个算法,但没有成功。也许有什么遗漏?你能给出一些卡通化图片的例子吗?为了获得更多的搜索结果、论文等,寻找“非真实照片渲染(2d)”。我已经记不清有多少次我看到一个新用户的问题因为没有描述他/她到目前为止尝试过的内容、研究、代码而被遗忘,等等,这个问题得到55票!常见问题解答:“为了正常工作,旋转镜需要人工输入。”@Josip:你说得对,我忽略了这一点。尽管如此,一般来说,rotoscopy似乎满足了他的要求。你在哪里找到这个@bryanbcookA场景的源代码?该场景是显示系统的一部分,它处理存储要显示的对象图形,而不是操纵图像。像openCV这样的东西更适合+1-这是一幅很棒的图像,特别是线条可以极大地帮助图像的外观和解释。这似乎最适合我的目的-你知道我们可以在这里发布的这些算法的任何好的在线资源吗,为了完整性?后验证是一种不考虑几何信息的量化变换。有人在批处理模式下使用ImageMagick或Gimp获得了样本吗?我正试图在Ubuntu Linux上为一个项目解决这个问题。答案很好!请详细说明“彩色图像分割”步骤好吗?我以为分割是用来识别边缘检测后的物体,没有?在那里找不到教程,网站l