Numpy实例 图像处理 图像的手绘效果 北理工嵩天老师python数据分析与展示 单元3随堂笔记

Numpy入门实例 图像的手绘效果 北理工嵩天老师python数据分析与展示 单元3随堂笔记

1.图像的数组表示

图像一般采用RGB色彩模式,即每个像素点的颜色由红(R),绿(G),蓝(B)组成。RGB三个颜色通道的变化和叠加得到各种颜色,其中:
R红色,取值范围,0-255.
G绿色,取值范围,0-255.
B蓝色,取值范围,0-255.
RGB形成的颜色包括了人类视力所能感知的所有颜色。

图像是一个由像素组成的二维矩阵,每个元素是一个RGB值。

PIL库 (pip install pillow)
PIL,Python Image Library
PIL库是一个具有强大图像处理能力的第三库。

from PIL import Image 引入图像库
Image是PIL库中代表一个图像的类(对象),一个Image对象就代表一个图像。

from PIL import Image
import numpy as np 
im=np.array(Image.open('C:/Users/ASUS/Desktop/timg.jpg'))
print(im.shape,im.dtype)
(392, 500, 3) uint8

图象是一个三维数组,维度分别是高度、宽度和像素RGB值。在第三维的RGB值上它有三个维度。

图像的变换

读入图像,将读入的图像变成数组,形成像素RGB值的数组表示。修改后保存为新的文件就可改变图像。

b=[255,255,255]-im      #计算图像的RGB通道的补值
im2=Image.fromarray(b.astype('uint8'))   #将数组对象重新生成一个图像对象
im2.save('C:/Users/ASUS/Desktop/timg2.jpg')

在这里插入图原图片描述在这里插入图片描述
图像变换的基本流程:首先打开图像;
对其中RGB对象做一个运算;
运算后的数组再生成一个图像类型;
保存为文件。

将彩色图片变为灰度图片

im=np.array(Image.open(‘C:/Users/ASUS/Desktop/timg.jpg’).convert(‘L’)
im=Image.fromarray(b.astype(‘uint8’))
im.save

图像的手绘效果实例分析

手绘效果的几个特征:
1.黑白灰色
2.边界线条较重
3.相同或相近色彩趋于白色
4.略有光源效果

图像的手绘效果代码:

from PIL import Image
import numpy as np 

a=np.asarray(Image.open('C:/Users/ASUS/Desktop/timg.jpg').convert('L')).astype('float')


'''利用像素之间的梯度值和虚拟深度值对图像进行重构,根据灰度变化来模拟人类视觉的远近程度'''
depth=10.                   #浮点数,预设深度值为10,取值范围0-100
grad=np.gradient(a)        #取图像灰度的梯度值
grad_x,grad_y=grad         #分别取横纵图像梯度值
grad_x=grad_x*depth/100.
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./A


'''根据灰度变化来模拟人类视觉的远近程度'''
vec_el = np.pi/2.2        #光源的俯视角度,弧度值
vec_az = np.pi/4.         #光源的方位角度,弧度值
dx = np.cos(vec_el)*np.cos(vec_az)       #光源对x轴的影响
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('C:/Users/ASUS/Desktop/timg3.jpg')   #生成图像

在这里插入图片描述在这里插入图片描述

发布了15 篇原创文章 · 获赞 6 · 访问量 3284

猜你喜欢

转载自blog.csdn.net/supreme_1/article/details/100325224
今日推荐