鱼C论坛

 找回密码
 立即注册
查看: 8947|回复: 235

[技术交流] python小练习(081):让python学画铅笔素描

  [复制链接]
最佳答案
65 
发表于 2017-3-23 20:12:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 jerryxjr1220 于 2017-3-24 08:36 编辑

原本想利用tensorflow的神经网络,让计算机学会画铅笔画,后来实际操作下来,其实不用神经网络也是可以实现的,只是效果没有用tensorflow的好。

先看一下几张python画出来的画,一组风景,一组人物
无标题.png

从左到右依次是python不断循环素描的结果。

基本上程序的逻辑就是,先把彩色的图片转换成灰度照片,然后模拟人类作画时,先勾轮廓,再逐步勾画细节的过程。

提几个要点吧,比如勾轮廓,用的方法就是比较像素点左边一小段区域内像素平均值和右边一段的差值,如果差值超过预设范围,则认为该点是轮廓点,左右边的区域大小就决定了画笔的粗细。

另外,我让计算机素描时,不是一次性成像的,而是由淡到深,依次画,这样可以使图画看起来深浅更分明,更有立体感。

下面,还可以改进的是,现在是已像素点为单位进行素描,但是人在实际素描时是做不到以像素点作画的,而往往是以直线为单位,所以下次可以考虑让计算机也用直线作画,然后还可以引入少量随机函数,增加不确定性,这样画出的素描就更接近人类的作品了。

贴一部分代码(仅是其中某一次的素描,仅供参考,具体实现方法其实有很多,大家可以自行尝试。活用python,乐趣无穷!)

游客,如果您要查看本帖隐藏内容请回复


这个是用线条为单位进行素描的,并且增加了随机函数,使得线条长度不确定,并且增加上下左右、左上、右下、右上、左下8个方位区块的比较,这样创作的素描画看上去更柔和,也更接近真实的人类作画的风格。样图见楼下。
游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 3荣誉 +15 鱼币 +15 贡献 +13 收起 理由
鬼人 + 5 + 5 + 3 很有趣。
冬雪雪冬 + 5 + 5 + 5
~风介~ + 5 + 5 + 5 有意思!

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
346 
发表于 2017-3-23 21:21:17 | 显示全部楼层
厉害
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
发表于 2017-3-23 23:53:15 | 显示全部楼层
看啊看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
65 
 楼主| 发表于 2017-3-24 02:10:24 | 显示全部楼层
本帖最后由 jerryxjr1220 于 2017-3-24 12:00 编辑

按照之前说的改进思路,追加了用线条作画,并且增加了随机函数,增加扰动性。
对比用像素点画的和用线条画的素描。
pencil_drawing2.jpg

pencil_drawing13.jpg

是不是感觉用线条画的更接近真实的素描效果呢?

同样的逻辑还可以用来画彩色铅笔画哦!
原图:
6--32.jpg

彩色铅笔画:
color_pencil_drawing.jpg

代码就不贴了,相信你理解黑白的是怎么画的,彩色就不难改了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
3 
发表于 2017-3-24 06:58:44 | 显示全部楼层
牛!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
7 
发表于 2017-3-24 08:41:32 | 显示全部楼层
收藏 厉害的 大神们  学习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
143 
发表于 2017-3-24 08:47:23 | 显示全部楼层
大神,我服!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
发表于 2017-3-24 09:10:31 | 显示全部楼层
好厉害
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
16 
发表于 2017-3-24 09:30:55 | 显示全部楼层
厉害了楼主
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
946 
发表于 2017-3-24 09:47:55 | 显示全部楼层
展示了python强大的功能。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
65 
 楼主| 发表于 2017-3-24 10:06:01 | 显示全部楼层
冬雪雪冬 发表于 2017-3-24 09:47
展示了python强大的功能。

其实python的强大功能往往出乎我们的意料,只要我们脑洞足够大

让计算机模拟人类的行为,其中最核心的部分是我们要深刻理解人类行为背后的逻辑性,把每个动作都细分再细分,直到每个步骤都有合理的逻辑性可以写出程序。比如,这个素描,就是把素描的动作分解:勾轮廓、画细节,然后勾轮廓再细分,找到根据不同方向上颜色深浅的不同找轮廓线,画笔的粗细,如果没有确定的逻辑性的话,可以考虑增加随机函数来模拟不确定性。

相信只要我们可以理解自己的每个行为,我们就可以创做属于我们自己的模拟机器人。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
1 
发表于 2017-3-24 11:33:07 | 显示全部楼层
学习了 !!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
发表于 2017-3-24 11:59:14 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
65 
 楼主| 发表于 2017-3-24 12:05:26 | 显示全部楼层
画了张彩色的铅笔画 见3楼
彩色的处理时间要比黑白的长好多,毕竟有3个通道的数据要处理。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
65 
 楼主| 发表于 2017-3-24 16:21:12 | 显示全部楼层
color_pencil_drawing22.jpg
彩色素描的效果还是挺不错的

22.jpg
感觉比原图更有意境
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
发表于 2017-3-25 09:33:58 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
发表于 2017-3-25 10:33:43 | 显示全部楼层
这个有点厉害吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
发表于 2017-3-25 13:57:30 | 显示全部楼层
好好学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
发表于 2017-3-26 09:02:12 From FishC Mobile | 显示全部楼层
厉害了我的哥啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
发表于 2017-3-26 09:07:42 | 显示全部楼层
00
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号

GMT+8, 2018-9-24 14:38

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表