写真現像ソフト

はい、というわけで写真現像ソフトがほぼ完成しました。


いまはPX-1100なので頑張って撮りに行く気力は起きないというのもありますが、それ以上に写真現像ソフトを作る方に集中していて先週は野鳥撮影サボってました😇


というのも、この5/5までにおおむね終わらせないとCaptureOneやPhotoshop、Claude Code Maxのサブスクを停止できなくて、来月分の数万円もっていかれちゃうんですよね🤣


結果としてはなんとか間に合いましたが、開発中にいろいろハマったりしたトピックをまとめておきます。

開発トピック

いろいろと現像ソフトをみて比較してみてたんですが、素でDNGを読んでも案外フィルターなしの状態で違うもんだなと。


CaptureOneはさすがに綺麗で、「どうやってるんだろ」と思いつつあれこれ試行錯誤。

DNGフォーマット

まず前段でDxO PureRAWをかけますので、そこから出力されるDNGフォーマットについて。


DNGはAdobeが作ったフォーマットで、AdobeがSDKを公開してくれています。

つまり、DNGの正しい読み込み方などはこれを見れば概ねわかります。


ただ、実際やってみると作っていく過程でいろいろな発見があって試行錯誤の繰り返し😇

ベース値

現像前
現像後
機材
EOS R5 mark II + RF600mm F4 L IS USM + EXTENDER RF1.4x
焦点距離
840mm
SS
1/200
F値
5.6
ISO
1000
露出補正
0
撮影距離
18.3m

「うまく色再現できないなぁ」と思っていろいろと調べていて、途中で気づいたのがDNGファイルにはEVやシャープネスなどの「このくらいかけると丁度良いという基準値が保存されている」ということ。


初めにDNGのフォーマットしっかり読めよって話ではあるんですけど、「なんでCapruteOneとかPhotoShopなんかで表示するとこんなに明るいんだ?」とか頭をひねっていましたね🤣


このあたりは知らないと、読み込んだデータに対して余計なフィルターを適用したりしてカオスに。


とりあえずようやく抜け出せたので良かったですが、すげぇ手間取りました🥴

AIって基本的に知ったかぶる(ハルシネーション)ので、なかなか気づけないんですよね。

DCP(DNG Camera Profile)ファイル

現像前
現像後
機材
EOS R5 mark II + RF600mm F4 L IS USM + EXTENDER RF1.4x
焦点距離
840mm
SS
1/2000
F値
5.6
ISO
200
露出補正
-2
撮影距離
18.3m

DxO PureRAWも、CaptureOneも、Photoshopも、それぞれがカメラ毎の色補正データを計測して持っているのですが、これがないとどうしても色味が合わない。


DNGにはプレビュー画像が含まれるのでそこから逆算してLUTを計算するなどもしてみたのですが、EV±0では一致するものの、sRGB空間で変換してもどうにもならいなと。


というわけで色々と調べてみたところ、AdobeがDCPファイルを無償で公開してくれていることに気づきました。

これは本当にありがたい話で、自分たちで計測しなくてもそれぞれのボディのプロファイルを使うことができるように。


かつCaptureOneなどは新ボディが発売された後に対応されるまでかなり待たされるのですが、Adobeは即対応してくれるので、これで新しいボディを購入しても何もできないということはなくなりそう...。

トーンカーブ

現像前
現像後
機材
EOS R5 mark II + EF800mm f/5.6L IS USM
焦点距離
800mm
SS
1/200
F値
5.6
ISO
1600
露出補正
-1
撮影距離
12.6m

色空間変換などはDNGのルールがあるのですが、トーンカーブはどうも現像ソフトウェアが個別で持っているようで、同じDNGでもそれぞれで見え方が変わる領域な感じですね。


今でこそ切り分けができてますが、どこで差異がでてるかがとにかくわからなくて、試行錯誤に多大な時間を費やしました...。

色飽和と紫化

現像前
現像後
機材
EOS R5 mark II + RF600mm F4 L IS USM + EXTENDER RF1.4x
焦点距離
840mm
SS
1/400
F値
5.6
ISO
6400
露出補正
1
撮影距離
12m

当たり前ですが画素が飽和している(飛んでいる)場合、復元は厳しい。


しかも復元が難しいだけじゃなくて紫化現象が起きやすいです。


輝度はほぼ緑が基本で一番初めに飽和しやすく、飽和した場合には赤と青が緑よりも相対的に高い値になりがちです。


そんな状態でWBをかけたりEVを下げたりするとより顕著に紫に見えるわけですね。


この現象ともかなり戦いました...。

色の階調

現像前
現像後
機材
EOS R5 mark II + EF800mm f/5.6L IS USM
焦点距離
800mm
SS
1/200
F値
5.6
ISO
3200
露出補正
2
撮影距離
10.4m

飽和すると当然ですが色の階調は失われるのですが、それでもハイライト寄りの階調をなるべく残すような調整をすることでわずかに階調を残すことができます。


HDRというわけではなく、ハイライトの色階調保護は結構面倒でしたね...。


まぁそもそも色とびした写真を撮るなって話なんですが、色とびしたときでもある程度はごまかさないといけないよねと。

色合い(Tint)

現像前
現像後
機材
EOS R5 mark II + RF600mm F4 L IS USM + EXTENDER RF2x
焦点距離
1200mm
SS
1/3200
F値
8
ISO
2500
露出補正
-2
撮影距離
40.3m

どうも色合い(Tint)もソフトウェア毎に若干違う感じ。


ベタっと色合いを変えてしまうと調整域が非常に狭い範囲になってしまうので、良い感じに調整...。


まぁ実際のところちゃんと撮った(?)写真では調整することはほぼないんですが。

GPU対応

ちょっとわかりにくいですが、レンダリングをタイル分割して並列化。


あとはGPUを使ってレンダリングの高速化。


現像ももちろんGPUに逃がしているのでそれなりに高速。

イメージファイラー

これまではDxO PureRAWをかける前にCaptureOneで写真の仕分けをしていたんですが、それもいい感じにやりたいので自分で開発。


こっちは試行錯誤もいらないのでサラっと作った感じですが、私の場合はEVマイナスで撮影することが多いので、EVはさっと調整しながら仕分けできるように。


CaptureOneはちょっと遅かったんですが、かなりサクサクと表示できるのでいい感じ。

あと、この現像ツールは上のリンクで紹介したファイラーに内蔵しているので、写真ファイルの操作はファイラー同様コピーや移動など一通りできます。

まとめ

というわけで...この1か月ほどずっと研究していてすでに気力が尽きかけているんですが、ようやくCaptureOne、Photoshopが不要に。


CaptureOneは4000円/月くらい、PhotoShopは2000円/月くらいかかるので6000円/月の節約。

Claude Codeもいまは$17000円/月くらいで使ってましたが、一旦落ち着いたので3500円/月のプランに変更。


大体19000円/月くらいの節約に。

約20000円/月って、マップカメラの60回ローンなら120万円なので5年で大砲1本買える課金ですし結構大きいかな。


さすがにここまで自作すると写真現像についてはかなり理解できたので、野鳥撮影に本格復帰した後はRAW加工で役立ちそう。

CaptureOneのフィルターとかガン見して研究してました🤣


あとは生成AIを使ったコーディングの経験値もかなり詰めたかな...。


いやぁ...疲れました🤣

明日からは長期休暇なのでPX-1100もっていろいろまわってみようかなぁ。