野鳥写真DNG現像ソフト開発中

はい、予告通りCaptureOneのかわりに使える現像ソフトを開発中です。


ゴールは私が野鳥撮影RAWファイルの現像に使う範囲ではCaptureOne以上の性能を持つこと。


CaptureOneはもちろん野鳥撮影だけに使うものではないので、現像時に細かい調整をしないといけないものが多いのですが、私が野鳥撮影で使う機能だけ抜き出す感じで。


いざ取り組んでみると簡単にはいかないのですが、それでもなんとか形になってきました。

さすがに製品レベルを超えようと思うと完全にAI任せでは厳しいので色々と人間も頑張ってます😂


というわけで中間報告。

DxO PureRAW前提

まず、大前提ですが今回はベースとしてDxO PureRAWで処理したものに対して現像処理します。


というのも、RAWファイルからデモザイク処理を行うのは各ボディでの実測データなどがないと難しく、新機種対応なども同様に個人では不可能に近いからです。


また、私の野鳥撮影ではDxO PureRAWをかけないほうが良いというパターンはほぼなく、今のPCならば1枚30秒程度もかからないので時間コスト的にも問題なしということで。

DxO PureRAWの素晴らしいところは、RAWファイルからノイズや回析を取り除き、リニアDNGファイルとして出力してくれるところ。


リニアDNGファイルは通常のセンサー値が保存されているRAWファイルとは違って、デモザイク後の高カラーbitなビットマップですので非常に扱いやすいという利点があります。


というわけで、このソフトでは前段階としてDxO PureRAWをかけてそれを処理することにします。

まぁ、DxO PureRAWについてはサブスクではなく買い切りでも安いというのもあり。

フィルター

では、現時点で作ったフィルターの紹介。

まだまだ調整は必要ですが、ベースとしてはまずまずな気がします。

露出補正

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

野鳥撮影で私がとにかくよく使うのが露出補正。


EOS R5 mark IIならばEV-3、EOS R7ならばEV-2で撮影しても現像時にディテールを失うことなく復元できるので、ISOやSSを稼いだりするためによく使います。


また鳥は空バックで撮ることが多く、雲バックの場合にはかなり被写体の露出が低下するので現像時に持ち上げる必要があります。


ただ、露出補正は少し現像ソフトによって特徴がでる機能だったりします。

単純に線形 2^EV ゲインでやると期待通りの結果になりません。

Bradford 色順応変換やトーンカーブを組み合わせて調整。


CaptureOne、Photoshop、darktableを見比べていましたがCaptureOneやPhotoshopの露出補正が好みなのでそちらに寄せました。


あとCaptureOneは露出補正が±4になっていて、もちろん重ねることはできるのですが、たまに足りない時があるのでこの辺は±5くらいまで拡張。


露出補正をガッツリやると写真としておかしくなるのであまり意味がないということなんでしょうが、証拠写真ではたまーに足りない時あるんですよね😇


主要アルゴリズム:Bradford 色順応変換 + 線形 2^EV ゲイン 、トーンカーブ

色温度

4000(寒色)
6000(暖色)
機材
EOS R5 mark II + EF800mm f/5.6L IS USM
焦点距離
800mm
SS
1/200
F値
5.6
ISO
1600
露出補正
-1
撮影距離
12.6m

私は鳥をアップで撮ることが多いので、どうしてもカラーバランス、特に色温度が合わないことが多いです。


露出に次いでよく使う調整フィルターだったりします🥴


ただ色温度についてはCaptureOneだからすごいとかそういうものでもないので、よく写真現像で使われるやり方を採用。


まぁ、実際でもやるのは微調整ですね。


主要アルゴリズム:Bradford色順応変換 + Planckian locus近似

色合い

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

こちらもよくあるんですが、現場で撮影していると緑の中に光が差し込んで、緑色のフィルターを通したような光になってしまうことが多くあります。


あとは光が少し強いときにどうしても紫っぽくなりますね。


それはそれで正しいのですが、写真としては残念なので補正できるように。


主要アルゴリズム:Green-Magentaスケール 

コントラスト

低コントラスト
高コントラスト
機材
EOS R5 mark II + EF800mm f/5.6L IS USM
焦点距離
800mm
SS
1/200
F値
5.6
ISO
1600
露出補正
-1
撮影距離
12.6m

コントラストについては、大砲では基本的に調整することはほぼありません🤣

そもそもコントラストが非常に優秀で手を加える必要がないんですよね。


ですが、ズームレンズの場合はコントラストは弱いのでたまに調整します。


ただ実際のところはコントラストを調整したいというよりは、「かすみ」を除去したい場合の方が多いので、「かすみ除去」で解決しちゃう場合が多い印象ですね。


それとコントラスト調整についてはCaptureOne、PhotoShop、darktableでそれぞれ全く違ってます。


そういうわけでコントラストに関しては完璧に独自路線で行くことにしました🤣

弱いうちはコントラストっぽい挙動なのですが、高くかけると彫像のように。


まぁ、あまり使わないのもあって変わったエフェクトを付けられるようなイメージで。


主要アルゴリズム:ガンマ空間シグモイド

彩度

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

彩度についてもコントラストに近いのですが、大砲での撮影ではあまりいじらないですね。


たまーに気になった時に触るくらい。


ズームレンズでの撮影や小さいセンサーでの撮影では全体的に彩度が失われることがあるので、使うことはあります。


彩度もCaptureOne、PhotoShop、darktableでそれぞれ違う感じではあるのですが、まぁそこまで重要視はしてないので通常アルゴリズムで。


主要アルゴリズム:輝度保持線形補間

明るさ

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

明るさについても、現像でいじることは実はあまりありません。


というのも、露出補正とは違って明るさ補正って全体的に持ち上げるような処理なので全体的にソフトになるんですよね。


色とびや黒つぶれ、コントラストの低下などを招きます。

ただ、逆にそうしたい場合に使うものなのでこれはこのままで。


結局のところ、ここまでも「あまり使わないけど~」と書きつつ実装したものが多いですが、状態の悪い写真があった時に、他のフィルターとの組み合わせでなんとか見れるようにしたい場合に有効だったりするんですよね。


主要アルゴリズム:ガンマ曲線

ハイライト・シャドウ

ハイライト低
ハイライト高
機材
EOS R5 mark II + EF800mm f/5.6L IS USM
焦点距離
800mm
SS
1/200
F値
5.6
ISO
1600
露出補正
-1
撮影距離
12.6m
シャドウ低
シャドウ高
機材
EOS R5 mark II + EF800mm f/5.6L IS USM
焦点距離
800mm
SS
1/200
F値
5.6
ISO
1600
露出補正
-1
撮影距離
12.6m

これらは比較的よく使う部類のフィルターですね。


どうしても他のフィルターをかけた結果、暗部が過剰に持ち上がったり、逆にハイライトが沈んでしまったりすることがあるので調整。


これも結構現像ツールによって差が出る部分なので、自分好みに実装😂


基準値のようなものがない場合が多いのでそれは指定できるように拡張。


主要アルゴリズム: ガンマ空間べき乗カーブ + smoothstep重み

かすみ除去

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

かすみ除去は大砲レンズとズームレンズの画質を埋める最も重要なフィルターです。

かすみを取り除くとコントラストが強くなり、彩度も自然に高くなります。


これを調整すればレンズの画質差が劇的に改善されます。

ぶっちゃけWEBで見る限りでは区別がつかない程度まではもっていけますね。


CaptureOneと比較して、除去側は大体同じ効果を得られてるのですが逆に追加側はいまいちカスミが増えないので要調整...。


あとはCaptureOneは全体的にフィルターをかけてもノイズが持ちあがりにくい感じがするので、よく使うこのフィルターに関しては要研究ですね。


主要アルゴリズム:Dark Channel Prior + ガイデッドフィルタ平滑化

シャープネス、ストラクチャ、クラリティ

シャープネス低
シャープネス高
機材
EOS R5 mark II + EF800mm f/5.6L IS USM
焦点距離
800mm
SS
1/200
F値
5.6
ISO
1600
露出補正
-1
撮影距離
12.6m
ストラクチャ低
ストラクチャ高
機材
EOS R5 mark II + EF800mm f/5.6L IS USM
焦点距離
800mm
SS
1/200
F値
5.6
ISO
1600
露出補正
-1
撮影距離
12.6m
クラリティ低
クラリティ高
機材
EOS R5 mark II + EF800mm f/5.6L IS USM
焦点距離
800mm
SS
1/200
F値
5.6
ISO
1600
露出補正
-1
撮影距離
12.6m

シャープネス、ストラクチャ、クラリティって実は基本的には同アルゴリズムです。

ただ、周波数帯が違うので調整値が違うような感じですね。


これも現像ソフトで効果がかなり違う気がします。


CaptureOneではシャープネス使ってますが、ストラクチャをメインに使えるように調整してもいいかなとは思ってます。

シャープネス エッジ・微細ディテール 輪郭をくっきりさせる
ストラクチャ 細かいテクスチャ 羽毛・木肌・布地など素材感の強調
クラリティ 中周波コントラスト 立体感・奥行き感の強調

主要アルゴリズム: 輝度ハイパス + ハロ抑制 

ノイズ除去

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

ノイズ除去については本来はRAW現像ソフトの主要なのですが、DxO PureRAWを通した時点でほぼノイズはなくなっているのであまり意味がありません。


最後の砦という感じですね...超高ISOの写真にフィルターをかけるとノイズが浮いてくるのですが、それを無理矢理消すなどで使います。


主要アルゴリズム:ガイデッドフィルタ self-guided

機能

トリミング

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

トリミングというかクロップというか。


現像時に切り抜くことをトリミング、撮影時に切り抜くことをクロップといいますが、どっちも同じ切り抜き処理です。


野鳥撮影ではなかなか構図をきめて撮るのが難しいので、トリミングは多用します。


CaptureOneのトリミングが使いやすかったので操作方法としては移植。

EXIF: 被写体との距離

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

EXIF情報をみるとわかりますが、「撮影距離」があります。


Canonのボディでは撮影距離が含まれてるのですが、現像の段階で削ってしまうソフトウェア結構あるんですよね。


というわけで、もちろん今回はEXIFに残すように。


このブログの写真はサーバー側でEXIF情報を抜き出して、公開してる写真からは削除しているのでダウンロードしても残ってませんが。


こういったところも自前で制御できるのが自作現像ソフト、自作ブログシステムの醍醐味ですね。

タイル分割処理

これは現像には関係ないですが、フィルター処理は重いのもあるのでフィルタ適用時はタイル分割して高速にプレビューできるように意識してます。


最終的にはGPUを使ってやるつもりですが、CPU処理でもそこまで問題ない程度にはスピード出てますね。


SIMDとかだけでいい気もする🥴

現像サンプル

EOS R5 mark II + RF600mm F4L IS USM

一応これまで撮ってきた中では最高峰な組み合わせなので、調整は色味とかかすみ除去、露出補正とかが主体。

アカショウビン

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

サンコウチョウ

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

ハヤブサ

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

クロツグミ

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

EOS R7 + EF800mm F5.6L IS USM

この組みあわせはRAW加工で全く問題ない解像感を得られる組み合わせ。

私が好んで使う組み合わせなのでお試し。

アカショウビン

RAW加工前
RAW加工後
機材
EOS R7 + EF800mm f/5.6L IS USM
焦点距離
800mm
SS
1/200
F値
5.6
ISO
320
露出補正
0
撮影距離
25.8m

サンコウチョウ

RAW加工前
RAW加工後
機材
EOS R7 + EF800mm f/5.6L IS USM
焦点距離
800mm
SS
1/200
F値
5.6
ISO
2000
露出補正
-0.7
撮影距離
14m

カワセミ

RAW加工前
RAW加工後
機材
EOS R7 + EF800mm f/5.6L IS USM
焦点距離
800mm
SS
1/400
F値
5.6
ISO
320
露出補正
-2
撮影距離
12.6m

ミソサザイ

RAW加工前
RAW加工後
機材
EOS R7 + EF800mm f/5.6L IS USM
焦点距離
800mm
SS
1/250
F値
9
ISO
400
露出補正
-2.7
撮影距離
15.4m

EOS R7 + RF100-500mm F4.5-7.1L IS USM

キビタキ

RAW加工前
RAW加工後
機材
EOS R7 + RF100-500mm F4.5-7.1 L IS USM
焦点距離
500mm
SS
1/200
F値
7.1
ISO
320
露出補正
-1
撮影距離
10.3m

CoolPix PX-1100

こっちは逆にこれまででは最も安価な機材なので、加工中心。

ヒレンジャク

RAW加工前
RAW加工後
機材
COOLPIX P1100 + 4.3-539.0 mm f/2.8-8.0
焦点距離
539mm
SS
1/200
F値
8
ISO
450
露出補正
0
撮影距離

クロツグミ

RAW加工前
RAW加工後
機材
COOLPIX P1100 + 4.3-539.0 mm f/2.8-8.0
焦点距離
539mm
SS
1/200
F値
8
ISO
1600
露出補正
0
撮影距離

まとめ

もちろんClaude Codeをフル活用しているので、生成AIがない時代には確実にサブスクでCaptureOneなりを利用した方が良かったのは間違いなし。


ただ、開発してみて「結構いけるな」というのが今のところ感想。


いまはコアの現像機能を試行錯誤している段階で、GUIは仮です。

CaptureOneやPhotoshopなどは、なんだかんだUI...特に大量の写真管理面では使いづらいので、現像機能が終わったらそのあたりを作りこんでいこうかなと。


手ごたえとしては、無事にCaptureOneやPhotoshopのサブスクは契約解除できそうかなという感じですね。


あと、自分でフィルターを作ってみるとRAW現像についての知識が深まって良い感じでした🦜



では、次はおそらく完成形の紹介になるとは思います。

興味ある人がどのくらいいるのかわかりませんが、お楽しみに😂


Claude Codeつかってどんな感じで開発していったかもどこかで紹介しようかな🤣野鳥撮影とは...