PROGRAM PYTHON

Pygame超入門【第16回 写真グレースケール】

 

 

写真をグレースケールにしよう

今回は写真をグレースケールにしてみましょう。
グレースケールにするにはRGBの各要素をすべて同じ値にします。
どのように値を決定するかは、色々な考え方がありますが代表的なものをあげています。

 

ピクセル内のRGBの平均

一番単純な方法として、ピクセルを構成する各RGBの値の平均を設定します。
例えば、RGBが(230,50,200)の場合は、(160,160,160)となります。
前回のプログラムを元に、ピクセルにグレーを設定しています。

プログラムを実行すると、以下の画像が表示されます。

pystart16-1

 

自然なグレースケール

人間の目は、赤や青より緑の方が濃淡を区別しやすいという性質があるため、緑を強めるとより自然なグレースケールが表示できます。
カラーテレビなどの映像システムでは、以下のように色に重みをつけます。

赤 ✕ 0.298912 + 緑 ✕ 0.586611 + 青 ✕ 0.114478

プログラムでは色の重みはあまり細かくしても仕方がないので、小数点第3位までにしています。
上記のプログラムの29行目を、以下のように書き換えます。

プログラムを実行すると、以下の画像が表示されます。

pystart16-2

 

セピア調のグレースケール

一般的にセピア色の値は(107,74,43)くらいです。
セピア色にするために、赤(107)を基準に緑と青をその割合でグレースケールに掛けます。
掛ける値は、赤は1.0、緑は0.7、青は0.4にします。
上記のプログラムの32行目を、以下のように書き換えます。

プログラムを実行すると、以下の画像が表示されます。

pystart16-3

 

 

-PROGRAM, PYTHON
-,