Tutorialに学ぶPillowの使い方③|Pythonによる可視化入門 #11

f:id:lib-arts:20191219181007p:plain

連載の経緯は#1をご確認ください。

#1〜#4まではMatplotlibに関して、#5〜#8まではseabornについてまとめました。

Matplotlibの使い方①(plt.plot、plt.scatter、plt.hist)|Pythonによる可視化入門 #1 - lib-arts’s diary

Tutorialに学ぶseabornの使い方①(概要&Visualizing statistical relationships)|Pythonによる可視化入門 #5 - lib-arts’s diary

#9からはPythonの描画ライブラリであるPillowについて取り扱っています。PillowはPIL(Python Imaging Library)のforkとされています。
#10では同様にチュートリアルより、"Cutting, pasting, and merging images"〜"Geometrical transforms"の内容を取り扱いました。

Tutorialに学ぶPillowの使い方②|Pythonによる可視化入門 #10 - lib-arts’s diary

#11では同様にチュートリアルより、"Color transforms"〜"Image sequences"の内容を取り扱います。
以下目次になります。
1. Color transforms
2. Image enhancement
3. Image sequences
4. まとめ


1. Color transforms
1節では色の変換についての処理を取り扱っている、"Color transforms"について確認します。

f:id:lib-arts:20191225220854p:plain

Tutorial — Pillow (PIL Fork) 6.2.1 documentation

冒頭部では、「convert()メソッドを用いることで、異なる表現間の画像の変換を行える」と記述されています。説明だけだとイメージがわきにくいため、以下実装を元に確認していきます。

from PIL import Image

im = Image.open("Python_logo.png").convert("L")
im.show()

上記の実行結果は下記のようになります。

f:id:lib-arts:20191225221424p:plain

結果としては元々カラーの画像がグレースケールに変換されていることが確認できます。記載の説明には"L"と"RGB"の変換を行っているとされているので、ここでLはグレースケールを意味していると考えて良さそうです。


2. Image enhancement
2節では"Image enhancement"について確認していきます。

f:id:lib-arts:20191225221718p:plain

Tutorial — Pillow (PIL Fork) 6.2.1 documentation

冒頭部では、「PIL(Python Imaging Library)では画像の質の向上にあたって多くの手法やモジュールが実装されている」と説明されています。以下具体的に実装を元に確認していきます。

from PIL import Image
from PIL import ImageFilter

im = Image.open("Python_logo.png")
out = im.point(lambda i: i * 1.2)

im.show()
out.show()

上記の実行結果は下記のようになります。

f:id:lib-arts:20191225222604p:plain
左側が読み込んだ画像そのまま、右側がpointメソッドによって加工した画像になっています。
もう少し試してみれればと思います。

from PIL import ImageEnhance
from PIL import Image

im = Image.open("Python_logo.png")
enh = ImageEnhance.Contrast(im)

im.show()
enh.enhance(1.3).show("30% more contrast")

上記の実行結果は下記になります。

f:id:lib-arts:20191225223014p:plain

左に比べ右の画像の方がコントラストが際立つようになっていることがわかります。


3. Image sequences
3節では"Image sequences"について確認していきます。

f:id:lib-arts:20191225223210p:plain

Tutorial — Pillow (PIL Fork) 6.2.1 documentation

冒頭部では、「PILはGIFやTIFFのアニメーションのような画像の系列も取り扱うことができる」と説明されています。

アニメーションについては今回は省略します。


4. まとめ
#11ではチュートリアルより、"Color transforms"〜"Image sequences"の内容について取り扱いました。
チュートリアルに関連した内容としては大体主要機能は取り扱えたと思うので、#12ではImageDrawモジュールを用いた図形の描画について取り扱います。