Python PIL画像処理---画像の手描き効果
4530 ワード
まず、私たちが普段使っているカラー画像はRGB色で、red(0-255)、green(0-255)、blue(0-255)の3つの画像チャネルがあります.1枚の画像を1つの2次元マトリクスとして理解することができ、マトリクスの各点にはRGB色の属性があり、1つの画像2を構成する.対応画素点の対応値を変更するだけで、1枚の画像を操作できます.
2つの画像変換の例を次に示します.
1.これは通常、1枚のカラー画像を各画素点の操作によって反対の色に変えるものである.
2.画像の白黒変換です.
3.画像の手描き効果の変換:
コードを先に入力:
コード解析:
階調変化に基づいて人間の視覚の遠近度をシミュレートするは、画像の斜め上に位置する仮想光源 を設計する.光源の画像に対する平面視角はElevation、方位角はAzimuth である.個の点勾配値に対する光源の影響関数 を確立する.各点の新しい画素値 を演算する.
2つの画像変換の例を次に示します.
1.これは通常、1枚のカラー画像を各画素点の操作によって反対の色に変えるものである.
from PIL import Image
import numpy as np
a=np.array(Image.open('001.jpg'))
print(a.shape,a.dtype)
b=[255,255,255]-a
im=Image.fromarray(b.astype('uint8'))
im.save('002.jpg')
2.画像の白黒変換です.
from PIL import Image
import numpy as np
a=np.array(Image.open('001.jpg').convert('L'))#.convert
b=255-a#
im=Image.fromarray(b.astype('uint8'))
im.save('003.jpg')
c=(100/255)*a+150# ,
im=Image.fromarray(c.astype('uint8'))
im.save('004.jpg')
d=255*(a/255)**2# ,
im=Image.fromarray(d.astype('uint8'))
im.save('005.jpg')
3.画像の手描き効果の変換:
コードを先に入力:
from PIL import Image
import numpy as np
a=np.array(Image.open(' .jpg').convert('L')).astype('float')
depth=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.)
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)
im=Image.fromarray(b.astype('uint8'))
im.save(' .jpg')
コード解析:
階調変化に基づいて人間の視覚の遠近度をシミュレートする