📸
その「エモい色」、Pythonで再現しない?変換前後の画像からLUTを作ってみた
はじめに
「この写真の色合い、最高にエモい...。自分の他の写真にも適用したい!」と思ったことはありませんか?
多くの場合、そうした色合いは「プリセット」や「LUT(ルックアップテーブル)」として配布されており、自由に画像の変換を行うことができます。
LUTとは
LUT(ルックアップテーブル)とは、映像の色味を数式によって変換するカラープリセットのことです。引用元:LUTとは?種類や使い方を解説【カラーグレーディング効率化】
つまり画像の色味をいい感じに変換してくれる色の対応表と思ってもらえば大丈夫です。
そこで、もしLUTの変換前・変換後の画像があったとき、そのLUTを逆算(逆関数を求めることが)できるんじゃない??と思ったので、実装してみました。
実装
線形補完としてトライリニア補間を採用し、以下の機能をPythonで実装を行いました。
- 入力画像の平滑化: 推定時のノイズ影響を低減
- 堅牢な2段階補間: 未知の色に対しても安定した推定
- トライリニア補間: LUT適用時のバンディングを徹底的に抑制
結果
割といい感じに推定できた!
図 1: LUT 適用前
図2: あらかじめ用意したLUTを適用
図 3: 推定した LUT を適用
実行方法
1. ファイルの準備
以下の 3 つの画像ファイルを用意します。
-
適用前の画像:
before.jpg
など、元の状態の画像。 -
適用後の画像:
after.jpg
など、目的の LUT やカラーコレクションが適用された見本となる画像。 -
ターゲット画像:
target.jpg
など、推定した LUT を新たに適用したい画像。
2. プログラムの編集
スクリプトファイル(例: lut_estimator.py
)を開き、末尾の if __name__ == '__main__':
ブロック内にあるファイルパスを、あなたが用意した画像のものに書き換えます。
3. 実行
ターミナルまたはコマンドプロンプトで、スクリプトを実行します。
python lut_estimator.py
処理が完了すると、指定した出力パスに結果画像と**.cube ファイル**が保存されます。
詳細はREADMEに記述しています。Github参照
最後に
技術的な詳細はGithubに上げているので,Starお願いします!!!!
Discussion