見出し画像

Pythonでフィルムネガ画像の補正プログラムを作りました

きっかけと経緯

前にこんな記事を書きました。フジフイルムのSuperia X-tra 400の印象の話。

Superia X-tra 400は、普通にネガ画像を補正するとえらくマゼンタが被ります。で、それを改善したいと思って試行錯誤した、という話を書きました。ただ、満足のいく結果は出てませんでした。

この問題、ずっと引っかかったんですよね。Superia X-tra 400はコンシューマー向けのフィルムなんだから普通の自然な発色になるのが本当の姿であるはずであって、色被りの結果が出るということは私の画像補正方法がなんか間違ってるに違いないのです。

いろんな写真加工ソフトでいろいろ試行錯誤をしましたが満足できず、結局、自分がいちばん簡単に試行錯誤を繰り返せるような環境を整えることにしました。

Pythonで、ネガ画像からの補正を行うプログラムを書くことにしたのです。

IT系の方ならご存知かと思いますが、画像処理は昔から研究開発が行われている分野で、OpenCVを始めとして、主要なアルゴリズムがだいたい手軽に使えるようになっています。それらを組み合わせて満足のいく結果が得られれば楽ちんだし、もしかして学術研究論文にしかない手法を試したくなったとしてもPythonならなんとか自分でも実装できるだろう。そんな目算でした。

幸い、プログラミング作業を始めてから1週間ほどで、ありモノのアルゴリズムを組み合わせて良い結果が出始めました。今では、手持ちのカラーネガ、モノクロネガいずれでもかなり満足いく結果が得られるようになり、Lomochrome Metropolisという変わり種フィルムでもいい結果が出ることを確認しています。もちろん、Superia X-tra 400のマゼンタ被りもほぼなくなりました。

結果

きっかけになった記事と同じ、Superia X-tra 400のネガを使って実験した結果を貼っておきます。処理した写真はFlickrにアップロードしていきますので、もっと見たい方はそちらをご覧ください。

画像1

画像2

画像3

画像4

画像5

何が良かったの?

やってみて、良かったことがいろいろありました。いい色が出せるようになったのももちろんですが、なにより、ネガ画像からの補正に時間がかからなくなりました

ふつう、この作業はPhotoshopなどを使って、モニタ上の画像を眺めながら手作業で行うものだったと思います。でもこの方法は、モニタ自身の発色、周りの環境光、自分の体調などによって作業結果が変わってきますし、せっかく頑張って理想の写真にしたとしても、スマートフォンで結果を見てがっかりすることもしばしば(スマートフォンの画面は色調整できない場合が多いので)。そもそもネガに写っている色がどんなものなのかわからないわけですから、この補正作業には正解がなく、終わりがありません。再現性もありません。

私のPythonプログラムは、手作業の必要がありません。アルゴリズムを指定するオプションをいくつか実行時に与えますが、それ以外は全自動です。モニタの色にも環境光にも自身の体調にも依存しません。いつやっても、何度やっても同じ結果が得られます。

そしてもうひとつ、手作業をしないため、プログラム実行結果の写真を正解(の一つではあるのですが)と思えるようになりました。補正作業の終わりができたのです。終わりができたので、それでも残っているネガ間の発色の違いを、ネガの個性なんだと信じられるようになりました。

それと、寝る前に仕掛けておくと、寝てる間に補正作業ができあがっています。まさにこびとさん状態。地味に嬉しいところです。

今後は?

まだやることは残っていて、そのへんの改良かな。最後の微調整にImageMagickを使ったシェルスクリプトのautotoneというのを使っているので、これをPythonに移植するとか。できればアルゴリズムやパラメータの指定ももっと自動化したいなあとか。一部の写真でいい結果が出ていないので、それを改良したいな、とか。

もっというと、これがなんか飯の種につながるといいのですけどね…

興味のある方へ

GitHubでソースコードを公開しています。まだREADMEもなにもないので、そのまま使うのはかなり難しいと思いますが、Pythonが読める方ならアルゴリズムはすぐわかると思います。



この記事が気に入ったらサポートをしてみませんか?