图像的数组表示
图像是一个由像素组成的二维矩阵,每个元素是一个RGB值
PIL :Python Image Library
PIL库是一个具有强大图像处理能力的第三方库
在命令行下的安装方法: pip install pillow from PIL import Image Image是PIL库中代表一个图像的类(对象)
图像是一个三维数组,维度分别是高度、宽度和像素RGB 值
实例:
In [86]: from PIL import Image
In [87]: im=np.array(Image.open("e:/study_model/beijing.jpg"))
In [88]: print(im.shape,im.dtype)
(333, 500, 3) uint8
图像的变换
原图如下:
实例1
扫描二维码关注公众号,回复:
2869544 查看本文章
In [89]: b=[255,255,255]-im
In [90]: a=Image.fromarray(b.astype('uint8'))
In [91]: a.save("e:/study_model/beijing2.jpg")
根据以上代码得到如下图片
实例2
In [93]: im=np.array(Image.open("e:/study_model/beijing.jpg").convert('L'))
In [94]: b=255-im
In [95]: a=Image.fromarray(b.astype('uint8'))
In [97]: a.save("e:/study_model/beijing3.jpg")
根据以上代码得到如下图片
实例3
In [99]: c=(100/255)*im+150
In [101]: a=Image.fromarray(c.astype('uint8'))
In [103]: a.save("e:/study_model/beijing4.jpg")
根据以上代码得到如下图片
实例4
In [108]: d=255*(im/255)**2
In [109]: a=Image.fromarray(d.astype('uint8'))
In [110]: a.save("e:/study_model/beijing5.jpg")
根据以上代码得到如下图片
“图像的手绘效果”实例介绍
实例代码如下:
In [111]: a=np.asarray(Image.open('e:/study_model/beijing.jpg').convert('L')).astype('float')
In [112]: depth=10.
In [113]: grad=np.gradient(a)
In [114]: grad_x,grad_y=grad
In [115]: grad_x=grad_x*depth/100.
In [116]: grad_y=grad_y*depth/100.
In [117]: A=np.sqrt(grad_x**2+grad_y**2+1.)
In [118]: uni_x=grad_x/A
In [119]: uni_y=grad_y/A
In [120]: uni_z=1./A
In [121]: vec_el=np.pi/2.2
In [122]: vec_az=np.pi/4.
In [123]: dx=np.cos(vec_el)*np.cos(vec_az)
In [124]: dy=np.cos(vec_el)*np.sin(vec_az)
In [125]: dz=np.sin(vec_el)
In [126]: b=255*(dx*uni_x+dy*uni_y+dz*uni_z)
In [127]: b=b.clip(0,255)
In [128]: im=Image.fromarray(b.astype('uint8'))
In [129]: im.save('e:/study_model/beijingHD.jpg')
解析:
梯度的重构
利用像素之间的梯度值和虚拟深度值对图像进行重构 根据灰度变化来模拟人类视觉的远近程度
depth=10. ← 预设深度值为10 取值范围0-100
grad=np.gradient(a) ← 提取x和y方向的梯度值
grad_x,grad_y=grad
grad_x=grad_x*depth/100. ←根据深度调整x和y方向的梯度值
grad_y=grad_y*depth/100.
光源效果
根据灰度变化来模拟人类视觉的远近程度
• 设计一个位于图像斜上方的虚拟光源
• 光源相对于图像的俯视角为Elevation, 方位角为Azimuth
• 建立光源对个点梯度值的影响函数
• 运算出各点的新像素值
np.cos(vec_el)为单位光线在地平面上的投影长度
dx, dy, dz是光源对x/y/z三方向的影响程度