2020年4月25日土曜日

【Pillow】ImageOpsモジュールによるコントラスト強調とヒストグラム平坦化

画像処理ライブラリPillowのPIL.ImageOpsモジュールには様々な画像処理機能が用意されている。ImageOps.autocontrastによるコントラスト強調処理、ImageOps.equalizeによるヒストグラム平坦化処理を説明する。
Pillow(PIL)を使うためにはインポートが必要。PIL.ImageOpsモジュールは通常以下の形式でインポートされる。

from PIL import ImageOps

例に用いる画像'image.jpg'は以下を使用(フリー写真素材ぱくたそより)





1. コントラスト強調処理(ImageOps.autocontrast)

ImageOps.autocontrastによりコントラストが強調される。画像のヒストグラムを取得し、画像の明るい方と暗い方からcutoffに指定したパーセントのピクセルをカット、残りのピクセルの最も暗いピクセルを0最も明るいピクセルを255として画像を書き換える。書式は以下の通り。

PIL.ImageOps.autocontrast(image, cutoff=0, ignore=None)

cutoffを10%としてautocontrast処理した場合。

from PIL import Image, ImageOps

# 元画像の読み出し
im = Image.open('image.jpg')  

# cutoff10%でautocontrast処理
im_autocontrast = ImageOps.autocontrast(im, 10)

# ファイルの保存
im_autocontrast.save('im_autocontrast.jpg', quality=95)

実行結果




2. ヒストグラム平坦化処理(ImageOps.equalize)

ImageOps.equalizeによりヒストグラム平坦化処理が行われる。元画像のグレースケール値(輝度)の分布が均等になるように非線形なマッピング処理が行われる。書式は以下の通り。

PIL.ImageOps.equalize(image, mask=None)

from PIL import Image, ImageOps

# 元画像の読み出し
im = Image.open('image.jpg')  

# equalize処理
im_equalize = ImageOps.equalize(im)

# ファイルの保存
im_equalize.save('im_equalize.jpg', quality=95)

元画像はコントラスト明るめに分布しているが、ヒストグラム平坦化処理により空のコントラストが分かるようになる。

実行結果




3. リファレンス

Pillow (PIL Fork) > ImageOps Module

使用バージョン:Python 3.7.0 / Pillow 7.1.2

0 件のコメント:

コメントを投稿