1. 色モードの変更
画像は以下のような様々な色モードで表現できます:
- RGB: 標準のカラーモード。
- L: グレースケール。
- CMYK: 印刷用途で使用。
- RGBA: 透明性を扱うためのアルファチャネル付きのRGB。
convert()メソッドを使うことで、画像を異なる色モードに変換できます。
グレースケールへの変換
画像を白黒にするには、Lカラーモードを使います:
# グレースケールへの変換
gray_image = image.convert("L")
gray_image.save("gray_example.jpg")
このコードは画像を白黒に変換し、ファイルgray_example.jpgに保存します。白黒スタイルを作成したい場合や、明度レベルだけが重要な分析のために画像を準備する場合に便利です。
CMYKモードへの変換
CMYKは多くの場合印刷で使用されます。このモードに変換することは、画像が印刷目的で使用される場合に役立ちます。
# CMYKモードへの変換
cmyk_image = image.convert("CMYK")
cmyk_image.save("cmyk_example.jpg")
2. 画像へのフィルタ適用
Pillowは様々なエフェクトを作成するために使用できるいくつかの組み込みフィルタを提供します。これらのフィルタはImageFilterモジュールにあります。
ぼかし、輪郭、シャープネスフィルタの適用
from PIL import ImageFilter
# ぼかしフィルタの適用
blurred_image = image.filter(ImageFilter.BLUR)
blurred_image.save("blurred_example.jpg")
# 輪郭フィルタの適用
contour_image = image.filter(ImageFilter.CONTOUR)
contour_image.save("contour_example.jpg")
# シャープネスフィルタの適用
sharpened_image = image.filter(ImageFilter.SHARPEN)
sharpened_image.save("sharpened_example.jpg")
ここでは3つの異なるフィルタを適用しました:
- BLUR: 画像をぼかして柔らかい効果を作成するのに役立ちます。
- CONTOUR: 画像内のオブジェクトの輪郭を強調します。
- SHARPEN: 画像の鮮明度を高め、より鮮明に見えるようにします。
その他のフィルタ
Pillowには他にも便利なフィルタがあります:
- DETAIL: 詳細を強調します。
- EDGE_ENHANCE: エッジを強調します。
- SMOOTH: 画像を滑らかにします。
# エッジ強調フィルタの適用
edge_image = image.filter(ImageFilter.EDGE_ENHANCE)
edge_image.save("edge_enhance_example.jpg")
3. 明るさ、コントラスト、シャープネス、彩度の調整
PillowのImageEnhanceパッケージを使えば、画像の明るさ、コントラスト、シャープネス、彩度を簡単に変更できます。
明るさの調整
明るさを変更するには、ImageEnhance.Brightnessクラスを使用します。明るさ係数は任意の数値で表されます:1.0は元の明るさ、1.0より小さい値は暗くなり、1.0より大きい値は明るくなります。
from PIL import ImageEnhance
# 明るさを変更
enhancer = ImageEnhance.Brightness(image)
brighter_image = enhancer.enhance(1.5) # 明るさを50%増加
brighter_image.save("brighter_example.jpg")
コントラストの調整
コントラストは、明るい部分を明るくし、暗い部分を暗くします。ImageEnhance.Contrastを使用してコントラストを調整します。
# コントラストを変更
enhancer = ImageEnhance.Contrast(image)
higher_contrast_image = enhancer.enhance(1.5) # コントラストを50%増加
higher_contrast_image.save("higher_contrast_example.jpg")
シャープネスの調整
シャープネスは画像内のオブジェクトのエッジをどれだけ鮮明にするかを決定します。ImageEnhance.Sharpnessを使用してシャープネスを調整します。
# シャープネスを変更
enhancer = ImageEnhance.Sharpness(image)
sharper_image = enhancer.enhance(2.0) # シャープネスを2倍
sharper_image.save("sharper_example.jpg")
1.0は元のシャープネスを保持し、1.0より小さい値は画像をぼやけさせ、1.0より大きい値はよりシャープになります。
彩度の調整
彩度は色をどれだけ強くするかを決定します。ImageEnhance.Colorを使用して彩度を変更します。
# 彩度を変更
enhancer = ImageEnhance.Color(image)
more_vibrant_image = enhancer.enhance(1.5) # 彩度を50%増加
more_vibrant_image.save("more_vibrant_example.jpg")
4. 画像補正方法の比較
| 方法 | 説明 | 用途 |
|---|---|---|
convert("L") |
画像をグレースケールモードに変換 | 白黒スタイル、明度分析 |
ImageFilter |
ぼかし、シャープネスなどのフィルタを適用 | 効果作成、オブジェクトの強調 |
ImageEnhance.Brightness |
画像の明るさを調整 | 明るくする、または暗くする |
ImageEnhance.Contrast |
コントラストを変更 | 詳細の可視性を向上 |
ImageEnhance.Sharpness |
シャープネスを変更 | エッジの強調、鮮明度の向上 |
ImageEnhance.Color |
彩度を調整 | 鮮やかで豊かな画像作成 |
5. 実例
画像の全体処理の例
これまで学んだ内容をすべて組み合わせて、色補正、フィルタ適用、明るさ、コントラスト、彩度の調整を実行するコードを作成します。
from PIL import Image, ImageEnhance, ImageFilter
# 画像を読み込む
image = Image.open("example.jpg")
# グレースケールモードに変換
gray_image = image.convert("L")
gray_image.save("gray_example.jpg")
# シャープネスフィルタを適用
sharpened_image = gray_image.filter(ImageFilter.SHARPEN)
sharpened_image.save("sharpened_gray_example.jpg")
# 明るさを30%増加
enhancer = ImageEnhance.Brightness(sharpened_image)
brighter_image = enhancer.enhance(1.3)
brighter_image.save("brighter_gray_example.jpg")
# コントラストを50%増加
enhancer = ImageEnhance.Contrast(brighter_image)
higher_contrast_image = enhancer.enhance(1.5)
higher_contrast_image.save("final_example.jpg")
色補正の実際的な用途
- 写真の加工: 明るさやコントラストを調整することで、写真の詳細をより見やすくし、フィルタで表現力を高めることができます。
- 分析のための画像準備: 白黒化、シャープネスやコントラストの向上によって、画像をより鮮明で分析に適した状態にします。
- 画像のスタイリング: 彩度を変更し、フィルタを適用することで、デザインプロジェクトに独自のスタイルやエフェクトを作成できます。
GO TO FULL VERSION