#wp7dev_jp

ちょっといい情報を教えてもらって、100年前の写真にする加工をやってみた。基本概念をもとに、試行錯誤して、ひとまず簡略化。

  1. 元画像を白黒に
  2. 白黒になった元画像のダイナミックレンジを下げる(コントラストを強くする)
  3. 古い紙の画像を、不透明度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;
}

紙の画像はこんな感じ。

bakumatsu

結果はこうなりました。元画像と100年前写真の比較です。

image image

処理自体はシンプルなので、ほとんど時間はかかりませんね。

関連リンク