铅笔画算法
来源:互联网 发布:360数据恢复免费版 编辑:程序博客网 时间:2024/05/17 06:07
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中。
依赖
OpenCV2.4.10
Eigen3
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.生成梯度图:
2.生成线条形状图:
其中
再次利用
3.将
4.生成色调图,将原始图像亮度值划分为三个区域:明亮区,暗区和温和区。每个区域使用一种分布去描述该区域的亮度变化。
明亮区:
温和区:
暗区:
每个像素值对应的概率值为
其中,每种分布的参数值是通过已有的铅笔画训练得到的,计算公式如下:
最后,使用直方图匹配得到色调图
5.纹理渲染,记
最后得到铅笔纹理图:
6.最终得到的铅笔画可以表示为:
效果图
目前自己实现出来的结果没有论文作者的效果好,原因未知,还请有了解的读者指点一二。
原始图:
铅笔画:
原始图:
铅笔画:
原始图:
铅笔画:
参考资料
《Combining Sketch and Tone for Pencil Drawing Production》(Cewu Lu, LiXu, JiayaJia)
MatLab版本实现-github.com/candycat1992/PencilDrawing
Python版实现-github.com/moonfighting/PencilDrawing–python-version
- 铅笔画算法
- 铅笔画算法
- 图像铅笔画算法
- 图像铅笔画算法
- 铅笔画
- 【NPR】铅笔画
- 基于《Combining Sketch and Tone for Pencil Drawing Production》的图像铅笔画算法的实现
- 改进的《Combining Sketch and Tone for Pencil Drawing Production》铅笔画算法
- 将图片变成铅笔画
- 关于Cewu Lu等的《Combining Sketch and Tone for Pencil Drawing Production》一文铅笔画算法的理解和笔录。
- 【NPR】Unity3D非真实感渲染----铅笔画滤镜
- 梦想照进现实?铅笔画与照片融合作品
- 算法
- 算法
- 算法
- 算法
- 算法
- 算法
- 阅读小结:Unsupervised Representation with Deep Convolutional Generative Adversarial Networks
- Android控制UI界面的三种方式
- AIM Tech Round 3 (Div. 2) -- B. Checkpoints (枚举)
- android的getResponseCode()问题
- hdoj-1576-A/B
- 铅笔画算法
- 普通web项目转化为maven web项目
- Xamarin.Android APK 减肥记
- 百度地图开发(记录)
- 简单倒计时
- Java StringBuilder和StringBuffer的区别
- 在eclipse中将android项目生成apk并且给apk签名
- codeforces 149D Coloring Brackets(区间dp)
- 【String】StringBuffer类的参数传递