画像処理ライブラリPillowの
Image.filter
メソッドと
PIL.ImageFilter
モジュールを組み合わせると画像フィルタリング処理ができる。
ImageFilter.BLUR
ImageFilter.GaussianBlur
ImageFilter.SMOOTH
ImageFilter.SMOOTH_MORE
によるぼかし(平滑化)処理、
ImageFilter.EDGE_ENHANCE
ImageFilter.EDGE_ENHANCE_MORE
ImageFilter.SHARPEN
ImageFilter.UnsharpMask
によるエッジ強調処理、
ImageFilter.FIND_EDGES
ImageFilter.CONTOUR
ImageFilter.EMBOSS
によるエッジ検出処理を説明する。
Pillow(PIL)
を使うためにはインポートが必要。
PIL.ImageFilterモジュールは通常以下の形式でインポートされる。
コード
from PIL import ImageFilter
例に用いる画像'image.jpg'は以下を使用(フリー写真素材ぱくたそより)
1. ぼかし(平滑化)処理
ぼかし(平滑化)処理には以下のメソッドを用いる。ImageFilter.GaussianBlur以外は引数を取らない。
ImageFilter.BLUR
ImageFilter.SMOOTH
ImageFilter.SMOOTH_MORE
ImageFilter.GaussianBlur
ImageFilter.BLUR 処理
from PIL import Image, ImageFilter
# 元画像の読み出し
im = Image.open('image.jpg')
# BLUR処理
im_blur = im.filter(ImageFilter.BLUR)
# ファイルの保存
im_blur.save('im_blur.jpg', quality=95)
実行結果
ImageFilter.SMOOTH 処理
from PIL import Image, ImageFilter
# 元画像の読み出し
im = Image.open('image.jpg')
# SMOOTH処理
im_smooth = im.filter(ImageFilter.SMOOTH)
# ファイルの保存
im_smooth.save('im_smooth.jpg', quality=95)
実行結果
ImageFilter.SMOOTH_MORE 処理
from PIL import Image, ImageFilter
# 元画像の読み出し
im = Image.open('image.jpg')
# SMOOTH_MORE処理
im_smooth_more = im.filter(ImageFilter.SMOOTH_MORE)
# ファイルの保存
im_smooth_more.save('im_smooth_more.jpg', quality=95)
実行結果
ImageFilter.GaussianBlur 処理
from PIL import Image, ImageFilter
# 元画像の読み出し
im = Image.open('image.jpg')
# FIND_EDGES処理
im_gaussianblur = im.filter(ImageFilter.GaussianBlur)
# ファイルの保存
im_gaussianblur.save('im_gaussianblur.jpg', quality=95)
実行結果
ImageFilter.GaussianBlur 処理。引数 radius を5とした場合(デフォルトは2)。
from PIL import Image, ImageFilter
# 元画像の読み出し
im = Image.open('image.jpg')
# FIND_EDGES処理
im_gaussianblur = im.filter(ImageFilter.GaussianBlur(5))
# ファイルの保存
im_gaussianblur.save('im_gaussianblur5.jpg', quality=95)
実行結果
2. エッジ強調処理
エッジ強調処理には以下のメソッドを用いる。ImageFilter.UnsharpMask以外は引数を取らない。
ImageFilter.EDGE_ENHANCE
ImageFilter.EDGE_ENHANCE_MORE
ImageFilter.SHARPEN
ImageFilter.UnsharpMask
ImageFilter.EDGE_ENHANCE 処理
from PIL import Image, ImageFilter
# 元画像の読み出し
im = Image.open('image.jpg')
# EDGE_ENHANCE処理
im_edge_enhance = im.filter(ImageFilter.EDGE_ENHANCE)
# ファイルの保存
im_edge_enhance.save('im_edge_enhance.jpg', quality=95)
実行結果
ImageFilter.EDGE_ENHANCE_MORE 処理
from PIL import Image, ImageFilter
# 元画像の読み出し
im = Image.open('image.jpg')
# EDGE_ENHANCE_MORE処理
im_edge_enhance_more = im.filter(ImageFilter.EDGE_ENHANCE_MORE)
# ファイルの保存
im_edge_enhance_more.save('im_edge_enhance_more.jpg', quality=95)
実行結果
ImageFilter.SHARPEN 処理
from PIL import Image, ImageFilter
# 元画像の読み出し
im = Image.open('image.jpg')
# SHARPEN処理
im_sharpen = im.filter(ImageFilter.SHARPEN)
# ファイルの保存
im_sharpen.save('im_sharpen.jpg', quality=95)
実行結果
ImageFilter.UnsharpMask 処理
from PIL import Image, ImageFilter
# 元画像の読み出し
im = Image.open('image.jpg')
# UnsharpMask処理
im_unsharpmask = im.filter(ImageFilter.UnsharpMask)
# ファイルの保存
im_unsharpmask.save('im_unsharpmask.jpg', quality=95)
実行結果
ImageFilter.UnsharpMask 処理。引数radius=0.5、percent = 100とした場合。
from PIL import Image, ImageFilter
# 元画像の読み出し
im = Image.open('image.jpg')
# UnsharpMask処理
im_unsharpmask = im.filter(ImageFilter.UnsharpMask(radius=0.5, percent = 100))
# ファイルの保存
im_unsharpmask.save('im_unsharpmask2.jpg', quality=95)
実行結果
3. エッジ検出処理
エッジ検出処理には以下のメソッドを用いる。
ImageFilter.FIND_EDGES
ImageFilter.CONTOUR
ImageFilter.EMBOSS
ImageFilter.FIND_EDGES 処理
from PIL import Image, ImageFilter
# 元画像の読み出し
im = Image.open('image.jpg')
# FIND_EDGES処理
im_find_edges = im.filter(ImageFilter.FIND_EDGES)
# ファイルの保存
im_find_edges.save('im_find_edges.jpg', quality=95)
実行結果
ImageFilter.CONTOUR 処理
from PIL import Image, ImageFilter
# 元画像の読み出し
im = Image.open('image.jpg')
# CONTOUR処理
im_contour = im.filter(ImageFilter.CONTOUR)
# ファイルの保存
im_contour.save('im_contour.jpg', quality=95)
実行結果
ImageFilter.EMBOSS 処理
from PIL import Image, ImageFilter
# 元画像の読み出し
im = Image.open('image.jpg')
# エンボス処理
im_emboss = im.filter(ImageFilter.EMBOSS)
# ファイルの保存
im_emboss.save('im_emboss.jpg', quality=95)
実行結果
4. リファレンス
Pillow (PIL Fork) > ImageFilter Module














0 件のコメント:
コメントを投稿