版权声明:禁止转载。(首发时间:2020-10-02,更新时间:2022-01-10) |  个人笔记,仅供参考。


目录

1. 问题的定义与意义

1.1 自动线稿提取算法的意义

1.2 问题概述

1.3 算法提取的线稿VS人工绘制的线稿

2. 基于高通滤波的线稿提取算法(数学算法)

2.1 简介

2.2 PS提取线稿,使用“高反差保留法”

2.3 “高反差保留法”原理简析

3. 基于深度学习的线稿提取方法

4. 相关:草稿描线算法


研究领域:数字图像处理,图像滤波

1. 问题的定义与意义

1.1 自动线稿提取算法的意义

现有的动漫插画数据集一般只提供已完成上色的最终作品,未提供上色之前对应的线稿。而基于深度学习的“线稿自动上色”模型需要学习从线稿到最终画作的变换,要求训练数据集同时提供最终画作和对应的线稿。因此,需要使用“线稿提取算法”根据画作来合成模拟的线稿

1.2 问题概述

插画作品一般只公开最终上色好的画作,不公布对应的线稿。因此,需要使用算法根据已有的插画推测(提取)上色前的线稿。


线稿提取,有点类似于“边缘检测”(Edge Detection)问题。从总体上看,二者都是尝试提取图像中的“高频信息”(边缘)。但二者存在很大区别

“边缘检测算法(Canny)”与“线稿提取算法”的主要区别在于:Canny边缘检测结果非常粗糙,会包含大量冗余的线条。而且,当插画中的黑色边缘线的两侧均为亮色背景时,检测结果中会出现“双边缘现象”(导致一条线变成两条线)。

1.3 算法提取的线稿VS人工绘制的线稿

XDoG算法提取的模拟线稿”与“人工绘制的数位板线稿”对比,如下图所示。

(a)彩色插画 (b)使用XDoG算法从插画中提取的模拟线稿(由于阈值设置,部分不明显的线条会断开) (c)人工绘制的数位板线稿
(图片来自论文)

问题:通过精心调节XDoG算法的阈值和参数,可以完全避免线条断开等问题吗?

笔者认为可能不行。对于大规模插画数据集而言,由于不同插画的频率域信息分布差异较大,即使对其中一部分插画找到较好的参数,该参数可能会对剩余的插画效果较差。

一部分线稿上色论文采取的解决方法,是在训练过程中,每次调用线稿提取算法时,阈值在一定范围内随机选取,以在一定程度上增强网络对非完美线稿的鲁棒性。


高通滤波提取的模拟线稿”与“人工绘制的数位板线稿”存在区别。主要区别包括:

(1)灰度值、粗细不同: “数位板线稿”中线条颜色基本相同,线条宽度基本相同。而“线稿提取结果”中位于亮处、明暗交界处的线条颜色会更黑、更粗;另有位于较暗区域的线条颜色会更浅、更细(虚化的线条)。

(2)冗余线条:“线稿提取结果”中,往往会包含大量上色过程中加入的明暗交界线、光影效果(例如头发上的反光效果)产生的修饰性线条。而“数位板线稿”中不包含这些线条。

对比:人工绘制的数位板线稿 与 算法提取的模拟线稿
(a)彩色插画 (b)人工绘制的数位板线稿 (c)高通滤波提取的线稿(算法提取的模拟线稿)

对比:人工绘制的数位板线稿 与 算法提取的模拟线稿
(a)彩色插画 (b)人工绘制的数位板线稿 (c)高通滤波提取的线稿(算法提取的模拟线稿)

因此,如果直接用“高通滤波提取的模拟线稿”作为上色网络的测试集,可能会出现的问题是:网络对模拟线稿的上色效果越好,对人工绘制线稿的上色效果就越差 [ref-5]。所以,在有公开可用数据源的前提下,建议使用“人工绘制的线稿” 作为上色网络的测试集。

“人工绘制的数位板线稿” 示例:

(1)Petalica Paint提供的示例线稿

一幅Petalica Paint的示例线稿,人工绘制的数位板线稿(画家Ogata-san)

(2)难度很高的手绘卡通插画线稿(目前的自动上色技术可能尚无法实现高质量的上色,或许可成为进一步深入研究的方向),例如:

线稿涂色集:《时光旅行者 奇迹暖暖梦想涂色集》 [ref-4]

(国内某游戏公司出品,其代表作为:《奇迹暖暖》、《闪耀暖暖》等)


线稿提取算法的难点。提取线稿表面上是一个简单的“高通滤波”问题;但实际上:从插画中提取线稿,类似于“逆向工程”(Reverse Engineering),算法很难100%地还原最初的线稿信息。其本质原因在于:(1)高频信息与低频信息之间没有明确的频率分界线。因此,很难清晰地界定插画中哪些线条是有用的,应被保留或强调;哪些线条是光影效果、噪声或额外的细节修饰,应被弱化或忽略。(2)画家在上色、添加光照效果、修饰细节阶段,会在线稿的基础上添加并修改很多高频信息。因此,相较与最初的线稿,上色后图像的高频信息已发生了一些变化。

由于种种原因,算法提取的模拟线稿与人工绘制的线稿仍有一定差距。因此,仍有人在研究如何提取出更高质量的线稿。

2. 基于高通滤波的线稿提取算法(数学算法)

2.1 简介

下面介绍基于“高通滤波”的线稿提取算法。(注:两阶段上色方法未具体说明训练阶段使用的线稿提取算法。)“高通滤波”线稿提取算法,类似于PS中称为“高反差保留法”的线稿提取方法。在英文版的PS中,“高反差保留”滤镜的英文名称,就是“HighPass”(高通滤波)。为了具体了解“高反差保留法”的算法流程,下面使用PS手工逐个步骤地提取线稿。

2.2 PS提取线稿,使用“高反差保留法”

Photoshop的具体操作步骤,请参阅PS“高反差保留法”提取线稿。

2.3 “高反差保留法”原理简析

1)高反差保留滤镜:

这一步是提取线稿的核心步骤。关于高反差保留滤镜的介绍,详见这篇博客文章。其计算公式为:

                                                高反差保留 = 原始图像 - 高斯模糊图像 + 127

加上127的目的,是为了不让太多的像素由于不在有效范围内而导致图像太黑,从而丢失信息。

原理分析:

(a)该算法与“非锐化掩蔽”(Unsharp Mask)算法 [ref-1]的原理具有相似之处。

(b)忽略加上固定值127,该算法可视为特殊情况下的DoG (Difference-of-Gaussians)算法:两个高斯模糊图像相减,其中一个高斯核的的半径为0(即:未模糊的原始图像)。

(2)划分图层混合模式:

关于划分图层混合模式的介绍,详见 [ref-2]。

高反差保留滤镜的结果记为A,“高反差保留滤镜+高斯模糊”的结果记为B。教程中是将A与B进行图层混合,混合方式为划分(Divide)。这一步是为了将高反差滤镜提取到的边缘转化为接近灰色,背景转化为白色。

3. 基于深度学习的线稿提取方法

相关论文:

(1)Late-resizing: A Simple but Effective Sketch Extraction Strategy for Improving Generalization of Line-art Colorization. 2022

(2)Lee Y, Lee S. Automatic Colorization of Anime Style Illustrations Using a Two-Stage Generator[J]. Applied Sciences, 2020, 10(23): 8699.

4. 相关:草稿描线算法

铅笔草稿描线算法的作用:不是直接用于提取线稿,而是用于转换线稿类型,将“铅笔草稿”转换为类似于“数位板绘制的线稿”。

不同类型的线稿之间(如铅笔线稿、数位板线稿等)存在一定的差别。为了能够适应多种类型的线稿,一些上色项目(如:Tag2Pix [ref-3])结合使用多种类型的模拟线稿进行训练。

关于草稿描线算法的介绍,详见:Sketch Simplification论文简介:基于全卷积网络的铅笔草稿自动描线方法


参考资料:

[ref-1] Sharpening Using an Unsharp Mask

[ref-2] Photoshop图层混合模式详解

[ref-3] Kim H, Jhoo H Y, Park E, et al. Tag2pix: Line art colorization using text tag with secat and changing loss[C]//Proceedings of the IEEE International Conference on Computer Vision. 2019: 9056-9065.

[ref-4] 《时光旅行者 奇迹暖暖梦想涂色集》:https://item.jd.com/12684918.html,图书介绍-奇迹暖暖官方微博

[ref-5] Lee Y, Lee S. Automatic Colorization of Anime Style Illustrations Using a Two-Stage Generator[J]. Applied Sciences, 2020, 10(23): 8699.

论文简介:Extract Line Art from Illustrations相关推荐

  1. Paper之IEEERSJ:2009年~2019年机器人技术(IEEE机器人和自动化国际会议RSJ智能机器人与系统国际会议机器人技术:科学与系统机器人学报)历年最佳论文简介及其解读

    Paper之IEEE&RSJ:2009年~2019年机器人技术(IEEE机器人和自动化国际会议&RSJ智能机器人与系统国际会议&机器人技术:科学与系统&机器人学报)历年 ...

  2. Paper之ACLEMNLP:2009年~2019年ACL计算语言学协会年会EMNLP自然语言处理的经验方法会议历年最佳论文简介及其解读

    Paper之ACL&EMNLP:2009年~2019年ACL计算语言学协会年会&EMNLP自然语言处理会的经验方法会议历年最佳论文简介及其解读 目录 ACL计算语言学协会年会& ...

  3. DL之FAN:FAN人脸对齐网络(Face Alignment depth Network)的论文简介、案例应用之详细攻略

    DL之FAN:FAN人脸对齐网络(Face Alignment depth Network)的论文简介.案例应用之详细攻略 目录 FAN人脸对齐网络(Face Alignment depth Netw ...

  4. DL之LSTM:LSTM算法论文简介(原理、关键步骤、RNN/LSTM/GRU比较、单层和多层的LSTM)、案例应用之详细攻略

    DL之LSTM:LSTM算法论文简介(原理.关键步骤.RNN/LSTM/GRU比较.单层和多层的LSTM).案例应用之详细攻略 目录 LSTM算法简介 1.LSTM算法论文 1.1.LSTM算法相关论 ...

  5. Paper之ICASSPIEEEAUDIOSPE:2018~2019年ICASSP国际声学、语音和信号处理会议IEEE-ACM T AUDIO SPE音频、语音和语言处理期刊最佳论文简介及其解读

    Paper之ICASSP&IEEEAUDIOSPE:2018~2019年ICASSP国际声学.语音和信号处理会议&IEEE-ACM T AUDIO SPE音频.语音和语言处理期刊最佳论 ...

  6. Paper之CVPRICCVECCV:2009年~2019年CVPRICCVECCV(国际计算机视觉与模式识别会议国际计算机视觉大会欧洲计算机视觉会议)历年最佳论文简介及其解读

    Paper之CVPR&ICCV&ECCV:2009年~2019年CVPR&ICCV&ECCV(国际计算机视觉与模式识别会议&国际计算机视觉大会&欧洲计算 ...

  7. Paper之ICML:2009年~2019年ICML历年最佳论文简介及其解读—(International Conference on Machine Learning,国际机器学习大会)

    Paper之ICML:2009年~2019年ICML历年最佳论文简介及其解读-(International Conference on Machine Learning,国际机器学习大会) 导读:十年 ...

  8. Paper之NIPS/NeurIPS:2009年~2019年NIPS/NeurIPS(神经信息处理系统进展大会)历年最佳论文简介及其解读

    Paper之NIPS/NeurIPS:2009年~2019年NIPS/NeurIPS(神经信息处理系统进展大会)历年最佳论文简介及其解读 导读:十年磨一剑,霜刃未曾试.今日把示君,谁有不平事? 整整一 ...

  9. Paper之ACMCHUISTICUCIJHC:2009年~2019年人机交互技术(计算系统人为因素会议用户界面软件计算国际会议国际人类计算机研究人机交互的交易)历年最佳论文简介及其解读

    Paper之ACMCHI&UIST&ICUC&IJHC&TCHI:2009年~2019年人机交互技术(ACM CHI计算系统人为因素会议&ACM用户界面软件和技 ...

最新文章

  1. p3p-header解决跨域访问cookie
  2. 深入Linux PAM体系结构
  3. Django使用中常见的错误
  4. 朴素贝叶斯--实战分析
  5. hive一次加载多个文件_0738-6.2.0-如何在Hive中使用多分隔符
  6. BZOJ-2005能量采集-数论函数
  7. AVB中将公钥转换成字符数组头文件的实现
  8. ubuntu下安装golang环境
  9. PHP开源AJAX框架
  10. 大数据平台搭建包含哪些层级
  11. Redis设计思路学习与总结
  12. 超详细教程解决Win10计划任务定时重启jar服务
  13. 黑客之门的魅力:感染与加载 [转]
  14. Eclipse, jsp代码修改之后,页面却没有变化!解决思路
  15. 《SEM长尾搜索营销策略解密》一一2.11 向传统行业致敬
  16. Redis中的Scan命令的使用
  17. python 模块相互import
  18. SDE:Stochastic Differential Equation 简述
  19. Jmeter二次开发准备-Jmeter插件开发
  20. thinkphp5整合系列之汉字转拼音完美支持多音字

热门文章

  1. 函数调用之特殊三位数
  2. js(jquery)鼠标移入移出事件时,出现闪烁、隐藏显示隐藏显示不停切换的情况
  3. creating output section “HRCap1RegsFile“ without a SECTIONS
  4. C语言time.h中clock()函数的使用
  5. php 浏览器打开excel文件夹里,php网页显示excel表格数据-phpexcel 读取excel里的数据并在页面显示出来...
  6. git创建补丁和打补丁
  7. 企业微信X微盛联合发布会回顾:All in企微赛道两年,微盛的增长逻辑
  8. 利用关联规则挖掘中医证素与恶性肿瘤的关系
  9. 实用网站推荐(3):菜鸟教程
  10. 初始C语言——求算法,求1-1/2+1/3-1/4+……+1/99-1/100的值