画像処理ライブラリ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 件のコメント:
コメントを投稿