版权声明: 未经同意,禁止转载。(更新时间:2020-08-13)
本文属于:动漫线稿自动上色-系列论文解读
关键词:LazyBrush: Flexible Painting Tool for Hand-drawn Cartoons论文解读
系列笔记 - 总目录
1. 基本信息.......................................................................【笔记1】
2. 问题定义
3. 论文整体思路概述
4. 上色效果(不同类型线稿)
5. 用户需求:理想的上色算法应具备的特性..............【笔记2】
6. 问题建模:定义Energy function(能量函数)....【笔记3】
6.1 Smoothness term(平滑项)..........................【笔记4】
6.1.1 总体思想
6.1.2 细节问题处理
6.2 Data term(数据项)
6.2.1 定义公式
6.2.2 λ范围推导
7. 模型求解:如何求解能量函数的最小值?..............【笔记5】
7.1 等价的Multiway cut problem
7.2 Multiway cut problem求解算法
这篇博文的目录
1. 基本信息
2. 问题定义
3. 论文整体思路概述
4. 上色效果(不同类型线稿)
【视频】
LazyBrush上色过程演示:腾讯视频
论文标题:LazyBrush: Flexible Painting Tool for Hand-drawn Cartoons
LazyBrush:一种灵活的上色工具,用于手绘卡通画上色(兼容:漫画、线稿、素描、动画)
论文链接: (1) CVUT (2) ResearchGate (3) Wiley Online Library
研究领域:计算机图形学,基于颜色提示的线稿上色,交互式图像分割(Interactive Image Segmentation),图论(Graph Theory)中的“图割问题”(Graph Cut)
作者:Daniel Sýkora, John Dingliana, Steven Collins - Trinity College Dublin
发表会议:Eurographics 2009 (CCF B类会议)
被引次数:81次(截止2020.03)
代码与模型:
(1)官方代码:仅有商业闭源实现,见项目主页
(2)非官方复现:
a. kosua20/LazyBrush-implementation,Matlab实现,高质量教学演示项目,含法语说明文档
b. furaga/LazyBrushSharp,C#实现
c. Evarin/LazyBrush
研究意义:
1. 算法已集成到商业绘画软件TVPaint,以及开源软件Krita中。
2. 基于传统分割方法,由此带来诸多优势:
(1)算法鲁棒性(泛化能力)、上色成功率远高于深度学习方法。
(2)不是基于Learning的方法。因此,不受数据集限制,能够对包含各种形状物体的线稿进行区域分割和上色。
(3)计算量小,上色速度快于深度神经网络;硬件要求低:适合在单机CPU上运行,无需拥有大显存的服务器级GPU加速。
(4)使用基于图论的Segmentation方法,无需训练数据集,也无需GPU训练过程。
3. 算法的泛化能力很强(Flexible),同时兼容多种类型的手绘卡通作品上色,包括:漫画、铅笔线稿、钢笔线稿、素描,以及连续动画帧的快速上色。
算法的输入为待上色手绘线稿(含:铅笔线稿、钢笔线稿、素描、漫画等),以及用户添加的“线条状颜色提示”(scribble)。上色算法需要根据用户颜色提示对线稿进行半自动上色,输出最符合用户意图的上色结果。注意,上色过程是交互式的(Interactive),即:若上色结果出现了错误或不满意之处,用户可添加更多颜色提示,以对上色结果进行修正。希望在用户只添加少量颜色提示的情况下,算法就能理解用户的上色意图,并绘制出满意的上色效果。
论文整体分为两个部分:第一部分是算法需求描述,提出了理想中的完美上色算法应满足的特性。第二部分是问题建模。第三部分是模型求解。
本文把上色问题建模为一个“最优化问题”,通过定义一个“能量函数”(Energy function,类似于深度学习中的“损失函数”)来形式化地定义“线稿上色问题”。当能量函数的值达到最小时,就实现了最优的上色效果。
为了求解这一最优化问题,需要将“能量函数”转化为一个等价的“multiway cut problem”(属于“图论”中“Graph Cut问题”的一种)。然后提出一种基于“最大流/最小割”(max-flow / min-cut)的算法进行求解。
本文对线稿上色问题的求解思路,主要借鉴了“交互式图像分割问题”(Interactive Image Segmentation,俗称“抠图”)中,基于Graph Cut的分割方法,且对其进行了修改以适用于手绘线稿上色。要了解基于Graph Cut方法的交互式图像分割,可参阅zouxy09的这篇博文。
不同类型线稿的特点(难点):
(注意:使用类似于“Windows画图”的漫水填充算法无法完成以下线稿的上色!)
1.手绘线稿:包含大量未严格闭合的轮廓线,狭窄的连通区域,以及修饰性的线条。
(线稿来自 kosua20/LazyBrush-implementation项目)
2.素描:使用不同强度的影线笔触表示明暗、纹理,因此不能简单地将非白色像素作为轮廓线。
3.漫画:包含大量纹理(pattern)或线状阴影。
Nausicaa,来自 kosua20/LazyBrush-implementation项目
4.黑白漫画:使用不同灰度值进行上色,因此不能简单地将非白色像素作为轮廓线。
5.动画:本文算法可用于连续动画帧(帧与帧之间形变较小)的快速上色。
继续阅读:
LazyBrush论文解读(2): 链接