python 实现图像的手绘效果

图像的数组表示

1、图像一般使用RGB色彩模式,即每个像素点的颜色由红(R)、绿(G)、蓝(B)组成。

RGB三个颜色通道的变化和叠加得到各种颜色,其中
• R 红色,取值范围,0‐255
• G 绿色,取值范围,0‐255
• B 蓝色,取值范围,0‐255
RGB形成的颜色包括了人类视力所能感知的所有颜色。

PIL, Python Image Library
PIL库是一个具有强大图像处理能力的第三方库
在命令行下的安装方法:

pip install pillow

2、图像是一个由像素组成的二维矩阵,每个元素是一个(R,G,B)值。

3、图像是一个三维数组,维度分别是高度、宽度和像素RGB值

from PIL import Image
#Image是PIL库中代表一个图像的类(对象)import numpy as np
im = np.array(Image.open("F:\PycharmProjects\dog.png"))print(im.shape, im.dtype)    #图像是一个三维数组,维度分别是高度、宽度和像素RGB值

输出结果:

(1920, 1080, 3)  uint8


一些概念

图像深度值: > 图像深度是指存储每个像素所用的位数,也用于量度图像的色彩分辨率。 图像梯度: >**梯度**的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。 >>**图像梯度**可以把图像看成**二维离散函数**,图像梯度其实就是这个二维离散函数的求导: 图像梯度: G(x,y) = dx(i,j) + dy(i,j); dx(i,j) = I(i+1,j) - I(i,j); dy(i,j) = I(i,j+1) - I(i,j); 其中,I是图像像素的值(如:RGB值),(i,j)为像素的坐标。 图像梯度一般也可以用中值差分: dx(i,j) = [I(i+1,j) - I(i-1,j)]/2; dy(i,j) = [I(i,j+1) - I(i,j-1)]/2; 图像边缘一般都是通过对图像进行梯度运算来实现的。 灰度: >灰度使用黑色调表示物体,即用黑色为基准色,不同的饱和度的黑色来显示图像。 每个灰度对象都具有从 0%(白色)到100%(黑色)的亮度值。 图像的手绘效果实现 1、手绘效果的几个特征: • 黑白灰色 • 边界线条较重 • 相同或相近色彩趋于白色 • 略有光源效果 2、利用像素之间的梯度值和虚拟深度值对图像进行重构,根据灰度变化来模拟人类视觉的远近程度 3、考虑光源效果,根据灰度变化来模拟人类视觉的远近程度 • 设计一个位于图像斜上方的虚拟光源 • 光源相对于图像的俯视角为Elevation,方位角为Azimuth • 建立光源对个点梯度值的影响函数 • 运算出各点的新像素值 如图 ![光源模型](https://img-blog.csdn.net/20171126231357951?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzI4MTE0ODk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 4、实现代码
from PIL import Image
#image 是 PIL库中代表一个图像的类
import numpy as np#打开一张图片 “F:\PycharmProjects\cui.jpg” 是图片位置
a = np.asarray(Image.open('F:\PycharmProjects\cui.jpg').convert('L')).astype('float')depth = 10.                    #浮点数,预设深度值为10
grad = np.gradient(a)          #取图像灰度的梯度值
grad_x,grad_y = grad           #分别取横纵图像的梯度值
grad_x = grad_x*depth/100.     #根据深度调整 x 和 y 方向的梯度值
grad_y = grad_y*depth/100.
A = np.sqrt(grad_x**2 + grad_y**2 +1.)      #构造x和y轴梯度的三维归一化单位坐标系
uni_x = grad_x/A
uni_y = grad_y/A
uni_z = 1./Avec_el = np.pi/2.2                       #光源的俯视角度,弧度值
vec_az = np.pi/4.                        #光源的方位角度,弧度值
dx = np.cos(vec_el)*np.cos(vec_az)       #光源对 x 轴的影响,np.cos(vec_el)为单位光线在地平面上的投影长度
dy = np.cos(vec_el)*np.sin(vec_az)       #光源对 y 轴的影响
dz = np.sin(vec_el)                      #光源对 z 轴的影响b = 255*(dx*uni_x + dy*uni_y + dz*uni_z)    #梯度与光源相互作用,将梯度转化为灰度
b = b.clip(0,255)                          #为避免数据越界,将生成的灰度值裁剪至0‐255区间im = Image.fromarray(b.astype('uint8'))     #重构图像
im.save("F:\PycharmProjects\cui1.jpg")      #保存图片的地址


解释:

上述的代码中,牵扯到较多函数的调用,对于函数的解释可以参考 python 官网手册。


手绘效果图:
原图

手绘图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/53558.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《应试教育洗礼的“好”学生的学习行为特征分析》 2019-11-02

1 引言 小明是在应试教育中凭借自己的努力一步步考上了重点大学的研究生,每年都要学习好几门课程而且考试成绩都非常好排名数一数二获得很多荣誉,是经常被各种称赞的好学生,但小明真的是"好"学生吗,是具备科研素质能够…

ChatGPT 和 Whisper 模型的区别

ChatGPT和Whisper模型是两个不同的模型,但都是由OpenAI开发的基于自然语言处理(NLP)的人工智能技术。 ChatGPT是一种基于GPT(Generative Pre-trained Transformer)架构的语言模型,它可以生成自然流畅的文本…

微信公众号抓包

2.打开burp,打开公众号 直接逮住

微信公众号三方平台开发【全网发布及全网发布接入检测】

经过之前系列内容过后,接下来的代微信公众号实现业务部分跟微信公众号开发业务逻辑一样,所以公众号其他业务功能部分后面我会单独整理一套相关内容,今天,咱们就来说说微信第三方平台开发的最后一步—— 全网发布,因为只…

wechat-0010,微信公众号,接入微信公众平台

demo:https://github.com/wenrongyao/wechat-demo 接入准备: 1、有一个能在公网上访问的项目 可以用内网穿透(推荐使用natapp),微信接入必须使用80端口或443端口,某壳现在需要花钱才能使用80端口,果断放弃…

微信公众平台测试帐号申请及Token验证地址提供

1、浏览器打开微信公众平台测试帐号申请地址:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?tsandbox/login, 通过微信扫一扫授权就能进入到测试号管理页面。 上面图中 有个接口配置信息 需要你自己有服务器提供接口来接收微信的token验证 配置了验…

微信开放平台,公众号第三方平台接入

微信开放平台和公众平台的区别 开放平台是网站或app使用的接口平台,利用开放平台可在自己的网站或app上开发微信帐户登录、微信分享等功能! 公众平台是微信号的一种,也具有开发功能,是在公众号中开发出更多功能,例如微…

抑郁症前期如何治疗,有哪些方法?

随着社会的告诉发展,越来越多的人因为不喜欢职场上的花花绕绕,喜欢独自待在家里,不管是做什么,发呆也好,追剧也罢,总之拒绝和人交流沟通就可以。久而久之,就容易形成一个性格孤僻、不喜欢与人交…

脑电植入:治疗抑郁症的新方法?重磅!UCSF研究人员成功治疗一例重度抑郁症患者

患者 Sarah 在诊所与精神病学家 Katherine Scangos 在一起 © Maurice Ramirez,UCSF Sarah多年来饱受着严重且无法治愈的抑郁症的折磨。她说:“我每天都强迫自己克制自杀冲动,而这种冲动每小时就会出现好几次。” 近日,加州大学旧金山分校…

好心情医生:精神病性症状≠精神分裂症

01 幻觉和妄想是最常见的精神病性症状 精神病性症状有哪些?哪些疾病会出现精神病性症状?我们通常说的精神病性症状,就是经常提到的认知方面的异常,如感知觉异常,如出现幻听、幻视、幻嗅等幻觉;思维内容异…

抑郁症要身心同治

来源:中国数字科技馆 “没有人对抑郁症有绝对的免疫力。”著名心理学家马丁塞利曼将抑郁症称为精神病学中的“感冒”。世界卫生组织预计,到2020年抑郁症将跃至全球第二大疾病,自杀是其最可怕的症状。抑郁症可导致躯体各种功能的障碍&#xf…

抑郁症维持期治疗应维持多久?如何管理患者发生停药反应的风险?

抑郁症的治疗往往需要一个比较长的治疗阶段,其中维持期是抑郁症治疗的非常重要的一个阶段,同时,也是很多患者在维持期选择放弃了治疗,甚至有一些学者会认为维持期的时间过长,不利于患者的服药依从性。那么抑郁症维持期…

好心情发布《2022国民抑郁症蓝皮书》

抑郁症是全球常见病,据世界卫生组织数据显示,全球抑郁症患者高达3.22亿。据最新的流行病学调查数据估算,我国抑郁症患者将近5000万,新冠疫情后,抑郁症的患病人数更是大幅增加。但事实上,大众对于抑郁症的了…

好心情心理咨询:抑郁焦虑,都是反刍思维惹的祸,4招打破

(图源:网络) 武林外传中佟掌柜的口头禅让人上头,其实这话我们也老说,常常每到夜晚就开启“网抑云”模式,脑中就滚动播放这些微不足道的憾事,而且还是重播! 网络上戏称人生憾事归结…

好心情互联网医院:抑郁症一直吃药,为何还会复发?

原标题:抑郁症一直吃药,为何还会复发?如何才能终身不复发? 一位抑郁症病友在网上分享了自己患病25年的经历: 我是1995年被确诊了抑郁症,吃了两个月的药后,我觉得自己又活过来了,之后就没再坚持吃药&#…

会议报道丨心语心“悦”——抑郁症诊疗进展“大咖”谈(三)

2022年10月27日,灵北中国举办的心语心“悦”——抑郁症诊疗进展“大咖”谈系列会议第三期于线上圆满召开。本次大会邀请到中南大学湘雅二医院的李凌江教授、首都医科大学附属北京安定医院的张玲教授、武汉大学人民医院的刘忠纯教授和南京医科大学附属脑科医院的姚志…

好心情:抑郁症治疗究竟需要花多少钱?

最近,后台一名刚患病的抑郁症患者小K留言给好心情小编,原文是这样的: 感觉自己已经得了抑郁症,但是自己家庭条件并不是很好,自己最近一两年也没有工作,因此也没有医疗保险。抑郁症治疗会不会很贵&#xff0…

JAMA Psychiatry:老年抑郁症患者的神经影像学、认知、临床症状和遗传学的异质性表征

重要性:老年抑郁症(LLD)的临床表现具有相当大的异质性。揭示这种异质性可能有助于阐明LDD的发病机制,并有助于精准和个性化治疗LDD。 目的:横向和纵向描述与神经解剖学、认知功能、临床症状和遗传图谱相关的LLD异质性…

老年期抑郁症的机制及治疗

抑郁症对生理疾病易感,并促进端粒缩短、大脑衰老和表观遗传衰老等生理衰老。同时,生理疾病还增加了老年抑郁症的风险。抑郁症的老化相关的病程变化和疾病相关的病程变化是相关的,并产生了相应的致病假设和提供了治疗方向。比如,在…

数据分析的种类及其在会计行业的应用

​逝者如斯,不舍昼夜。过去的已经过去,无法改变,但你仍需为未来努力。对于公司而言,这就是数据分析发挥作用的地方。 数据分析通过研究一组原始数据得出能指导未来行动的结论。数据包括历史记录,研究报告,行…