写真を加工する 5.4 写真を100年前へ
#wp7dev_jp
ちょっといい情報を教えてもらって、100年前の写真にする加工をやってみた。基本概念をもとに、試行錯誤して、ひとまず簡略化。
- 元画像を白黒に
- 白黒になった元画像のダイナミックレンジを下げる(コントラストを強くする)
- 古い紙の画像を、不透明度75%で重ねる。
という感じで、結構簡単にできた。
プログラムの中心はこんな感じ。いったんグレースケールにして、(RGB→Gr)高コントラスト化(Gr-85)*3 で完成。
for (int pixel = 0; pixel < input1.Length; pixel++)
{
uint color1 = (uint)input1[pixel];
uint A1 = (color1 >> 24);
double R1 = ((color1 >> 16) & 0xFF);
double G1 = ((color1 >> 8) & 0xFF);
double B1 = ((color1) & 0xFF);
uint A = A1;
uint Gr = (uint)(0.3 * R1 + 0.59 * G1 + 0.11 * B1);
if (Gr > 170) Gr = 255;
else if (Gr < 85) Gr = 0;
else Gr = (uint)((Gr - 85) * 3);
result[pixel] =
((int)A << 24) | ((int)Gr << 16) | ((int)Gr << 8) | (int)Gr;
}
紙の画像はこんな感じ。
結果はこうなりました。元画像と100年前写真の比較です。
処理自体はシンプルなので、ほとんど時間はかかりませんね。
関連リンク