LazyBrush论文解读(1):基于Graph Cut的动漫线稿上色算法

版权声明: 未经同意,禁止转载。(更新时间:2020-08-13)

本文属于:动漫线稿自动上色-系列论文解读

关键词:LazyBrush: Flexible Painting Tool for Hand-drawn Cartoons论文解读


LazyBrush论文解读(1):基于Graph Cut的动漫线稿上色算法_第1张图片 LazyBrush交互式上色-效果示意图

系列笔记 - 总目录

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上色过程演示:腾讯视频

 

1. 基本信息

论文标题: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),同时兼容多种类型的手绘卡通作品上色,包括:漫画、铅笔线稿、钢笔线稿、素描,以及连续动画帧的快速上色。

2. 问题定义

算法的输入为待上色手绘线稿(含:铅笔线稿、钢笔线稿、素描、漫画等),以及用户添加的“线条状颜色提示”(scribble)。上色算法需要根据用户颜色提示对线稿进行半自动上色,输出最符合用户意图的上色结果。注意,上色过程是交互式的(Interactive),即:若上色结果出现了错误或不满意之处,用户可添加更多颜色提示,以对上色结果进行修正。希望在用户只添加少量颜色提示的情况下,算法就能理解用户的上色意图,并绘制出满意的上色效果。

LazyBrush论文解读(1):基于Graph Cut的动漫线稿上色算法_第2张图片 问题定义:算法的输入与输出

3. 论文整体思路概述

论文整体分为两个部分:第一部分是算法需求描述,提出了理想中的完美上色算法应满足的特性。第二部分是问题建模。第三部分是模型求解。

LazyBrush论文解读(1):基于Graph Cut的动漫线稿上色算法_第3张图片 论文整体思路

 

本文把上色问题建模为一个“最优化问题”,通过定义一个“能量函数”(Energy function,类似于深度学习中的“损失函数”)来形式化地定义“线稿上色问题”。当能量函数的值达到最小时,就实现了最优的上色效果。

为了求解这一最优化问题,需要将“能量函数”转化为一个等价的“multiway cut problem”(属于“图论”中“Graph Cut问题”的一种)。然后提出一种基于“最大流/最小割”(max-flow / min-cut)的算法进行求解。

LazyBrush论文解读(1):基于Graph Cut的动漫线稿上色算法_第4张图片 与“能量函数”等价的“multiway cut problem”

本文对线稿上色问题的求解思路,主要借鉴了“交互式图像分割问题”(Interactive Image Segmentation,俗称“抠图”)中,基于Graph Cut的分割方法,且对其进行了修改以适用于手绘线稿上色。要了解基于Graph Cut方法的交互式图像分割,可参阅zouxy09的这篇博文。

LazyBrush论文解读(1):基于Graph Cut的动漫线稿上色算法_第5张图片 “交互式图像分割”(抠图)示例 [ref-2]。
只需用户手工标记前景和背景,算法就能自动完成图像分割

4. 上色效果(不同类型线稿)

 

不同类型线稿的特点(难点):

(注意:使用类似于“Windows画图”的漫水填充算法无法完成以下线稿的上色!)

 

1.手绘线稿:包含大量未严格闭合的轮廓线,狭窄的连通区域,以及修饰性的线条。

LazyBrush论文解读(1):基于Graph Cut的动漫线稿上色算法_第6张图片 (线稿来自 kosua20/LazyBrush-implementation项目)

 

2.素描:使用不同强度的影线笔触表示明暗、纹理,因此不能简单地将非白色像素作为轮廓线。

LazyBrush论文解读(1):基于Graph Cut的动漫线稿上色算法_第7张图片

 

3.漫画包含大量纹理(pattern)或线状阴影。

LazyBrush论文解读(1):基于Graph Cut的动漫线稿上色算法_第8张图片

LazyBrush论文解读(1):基于Graph Cut的动漫线稿上色算法_第9张图片 Nausicaa,来自 kosua20/LazyBrush-implementation项目

 

4.黑白漫画:使用不同灰度值进行上色,因此不能简单地将非白色像素作为轮廓线。

LazyBrush论文解读(1):基于Graph Cut的动漫线稿上色算法_第10张图片

5.动画:本文算法可用于连续动画帧(帧与帧之间形变较小)的快速上色。

LazyBrush论文解读(1):基于Graph Cut的动漫线稿上色算法_第11张图片


继续阅读

LazyBrush论文解读(2):  链接

你可能感兴趣的:(线稿自动上色)