トーンカーブなので、ガンマ曲線をフィッティングしてもいいんですが、
- そこまで厳密に求める必要がない
- 8bit 256階調なので、その入出力をマッピングしても事足りる
ということなので、ある入力値に対して、いくら出力するか、というデータをテーブルで保持しておくルックアップテーブル(LUT)を求めます。
求め方
黒から白へとなだらかに変化する画像を入力画像とし、この画像にInstagramで変換を行ったものを出力画像とする。
入出力画像の各ピクセルの入力と、出力の関係をテーブルに保持して行きます。同じ入力輝度値の画素がいくつか出てきますが、平均化してならしました。
入力画像 |
出力画像 |
実行結果
instagramの結果 |
LUTの出力結果 |
なかなかいい感じですね。
この辺のデータはまとまってgithubにあがってます
https://github.com/ginrou/OpenCV-Sample/blob/master/src/instagram_hack.c
computeLookUpTableという関数が、このLUTを求める関数です。
次は
- チルトによるぼけ効果
- ケラレ
あたりをキャリブレーションするかもしれません。
前回の補足
色変換行列を、ランダムカラーの画像を使って推定してみましたが、あまりうまく行きませんでした。推定に使った画像 |
Instagramへの入力 |
Instagramで変換 |
色変換行列で変換 |
色味が変わってるのは分かりますが、じゃあちゃんと変わってるかと言うと、そういうわけではないです。
0 件のコメント:
コメントを投稿