PencilDrawing
论文《Combining Sketch and Tone for Pencil Drawing Production》(Cewu Lu, LiXu, JiayaJia)
算法的实现。
代码说明
oschina: git.oschina.net/corfox/Kikyo
github: github.com/corfox/Kikyo
该算法的实现在项目目录PencilDrawing中。
依赖
class PencilDrawing
构造函数
PencilDrawing()
成员函数
void operator()(const Mat& image, const Mat& pencilStyle, OUT_PARA Mat& pencilDrawing)
生成图像image的铅笔画。
image:原始图像,image的类型需为BGR三通道彩色图或Gray单通道灰度图。
pencilStyle:铅笔画的风格模板(线条的粗细或轻重)
pencilDrawing:算法生成的铅笔画
算法步骤
注:此算法步骤摘自《Combining Sketch and Tone for Pencil Drawing Production》
算法的整体框架如下图:
1.生成梯度图:
G=(αxI)2+(αyI)2−−−−−−−−−−−−−√
2.生成线条形状图:
Gi=φi∗G,i=1,...,8
其中 φi 是线段滤波器,方向为 45∘∗i 。
Ci(p)={
G(p),0,if argmini{
Gi(p)}=iotherwise