Adding Support for New Raw Formats/jp
イントロダクション
新たなraw形式をサポートするためには、以下の条件を満たす必要があります:
- そのrawファイルのデコードが可能なこと。それによりrawファイルに保持されている画像データとメタデータを読解することが出来ます。RawTherapeeに埋め込まれている“dcraw”、或いはカスタムコードによってその処理が行われます。
- そのraw画像データの解釈が可能なこと。このことは更に複数の項目に分けられます:
- デコードされた画像データからホワイトレベル(場合によってはブラックレベルも)を計測します。カメラ機種によってホワイトレベル(場合によってはブラックレベルも)が異なるからです。ホワイトレベルは“ホワイトフレーム”と呼ばれる写真で計測します。
- Rawデータの中のどこが実際の画像なのか特定します-“rawクロップ”と呼ばれる処理です。
- 実際の色を再現するための”入力プロファイル“を作成します。
これらのことを知るために貴方に写真を撮ってもらう必要がありますが、データの計測原理の理解や、データ計測を実行してもらう必要はありません。それらは私たちが行います。
この情報の保存と読み込み
RawTherapeeが起動すると、画像データ(ブラックレベルとホワイトレベル、カラーマトリクス、その他の詳細情報の幾つか)をどの様に解釈するのか、以下の3か所から捜します:
- RawTherapeeに埋め込まれているdcrawコードの中
- rawファイルの中
- RawTherapeeをインストールした際に貴方のシステムに保存されたcamconst.jsonファイルの中
情報はこれら3カ所すべてから集められますが、他の情報に比べ、camconst.json
からの情報が優先されます。但し、入力カラーマトリクスの情報は、次の条件を満たすExifタグからの情報が優先されます。そのrawファイルがDNG形式で、Software
Exifタグ(0x0131
)が“Adobe DNG Converter”という文字列から始まらず、ColorMatrix2
タグを持っていない場合です。
RawTherapeeの実行中に、camconst.json
に変更が行われた場合、それを実行するためにはプログラムの再起動が必要です。
ホワイトレベル
ブラックレベルやホワイトレベルとは何でしょう?カメラの撮像センサーはフォトサイト或いはセンセルと呼ばれる何百万ものエレメントから成り立っています。各フォトサイトはそこに入射する光の量を計測し、数値でそれを記録します。光の量が多ければ数値は大きくなります。rawファイル全体がこれら数値の集まりです。しかし、光に対するフォトサイトの感度には限界があります。光が入射していても、それらが弱すぎると数値として記録できません。これをブラックレベルと呼びます。但し、常に0になるという訳ではありません。一方、ある一定量より多くの光が入射してもフォトサイトがその量の違いを記録できなくなるレベルをホワイトレベルと呼びます。フォトサイトが一定以上の明るさを記録出来なくなることを、完全な飽和状態と言い、後処理においてクリッピングと呼ばれる状態です。
ホワイトレベルは、完全に露出過多な“ホワイトフレーム”と呼ばれる写真を使って計測します。
カメラ機種によっては他の設定に関わらず同じブラックレベルとホワイトレベルを使うものがありますが、通常、カメラのそれらレベルは他の要素、例えばISO感度次第で変化します。よってそのカメラの色認識を理解するためには各ISO値でそれらレベルがどうなるかを知るための画像が必要となります。
また、カメラの中には、LENR(Long Exposure Noise Reduction)と呼ぶノイズ低減機能が備わっている機種がよくあります。これもブラックレベルやホワイトレベルに影響することがあります。機能を有効にすると、典型的には露光時間が1秒を超えた時に作動します。何時その機能を有効、無効にするのかについては、以下で更に説明します。
ホワイトレベルが絞りの大きさで変化するカメラもあります。しかし、一般的に絞りを大きく開いた時だけ作動する機能なので、変化の問題を避けるため、断わりが無い限りは絞りf/5.6以上に絞って撮影を行うようにします。
必要な写真及びデータの計測方法に関する詳細情報は、camconst.json
ファイルの中のコメントを読んで下さい:
https://github.com/Beep6581/RawTherapee/blob/dev/rtengine/camconst.json
ホワイトフレームの撮影の仕方
raw形式の写真をマニュアルモードで撮影します。サイズの異なるraw形式写真を撮ることの出来るカメラであれば、最も大きいサイズで、切り抜きをせず、可能ならば圧縮せずに撮影します。
各写真をフレーム内全ての部分で完全に露出過多になるように撮影します。この様な撮影を行うと画像全体が白一色になるので何を撮影しても同じですが、簡単な方法としてはカメラを空や白色バルブに向けて撮影します。空が晴れていても曇っていても構いませんが、太陽に向けて撮るのはセンサーが壊れる可能性があるので避けた方がいいでしょう。また、どのレンズで撮っても構いませんが、画像全体を露出過多にするのですから広角レンズを使わない方が簡単です。
必要な写真のセット
先ほど撮影する画像の条件を3つ述べましたが、これは提供するサポートの質を高める目的からですが、貴方にとっても私たちにとっても手間がかかるものです。通常、多くの場合、次に示す最初の2セットの写真があれば十分ですが、全ての写真が完全に白くなるように露出過多に撮影します。
写真のセット:
- 貴方のカメラにLENRが備わっている場合、初めにその機能をオフにします。絞りをf/5.6、或いはそれ以上に設定し、一連の写真撮影を行います。貴方のカメラが持つ各ISO値で一枚ずつ撮ります。但し、どの撮影でも露光時間が1秒を超えないようにします。例えば、貴方のカメラがISO値、100、200、400、800、1600、3200、6400、12800をサポートしていれば8枚の写真を撮影することになります。ただ、カメラの多くは中間的なISO値160、或いは320もサポートしているので、ホワイトレベルの計測値をより精密に求めたいのであれば、これらのISO値でも写真を撮ります。
- 貴方のカメラにLENRが備わっている場合、次にそれをオンにして上記同様に一連の写真撮影を行います。但し、今度は露光時間が最低2秒以上になるように撮影します。これで新たに8枚の写真を撮ることになります。以上、1と2の2セット写真があれば十分でしょう。
- カメラの中には絞りを大きく開いた際に、raw値を削る処理を行う機種があります。特にキャノンやニコンの機種に多いようです。カメラにその機能が備わっているかどうかを知るには、写真を撮って計測するしかありません。例えば、ISO値100でLENRをオフにし、レンズを開放値、f/1.7にして前述したように写真を撮り上記の写真と共に私たちに送ってもらいます。もしもraw値が削られていることが分かれば(或いは貴方自身が計測してそれを発見したら)、貴方に再び写真撮影を行ってもらうことになります。露光時間1秒以下、絞りを開放から1/3刻みで撮影し、raw値を削る処理が行われないポイントを探ります。従って、沢山の写真撮影が必要になります。しかし、絞りを大きく開いたときに起こるこの問題は差ほど重要ではありませんので、貴方のカメラにその機能が備わっていたとしても、無視することが出来ます。ただ、時間と余裕があれば調べてみるのもいいでしょう。
必要最小限の条件を満たすためにも、上記1で約8枚の写真撮影が行われることになります。ポイント1と2の条件を満たす16枚以上の写真、更にraw値が削られてしまうかどうかを確認するためのポイント3の1枚の用意を奨めます。raw値が削られることが分かれば、ポイント3で説明したように更に写真を撮ることもできますが、それには多くの写真(50枚以上)を撮ることになるので無理は言えません。
これら写真を全て圧縮してfilebin.netにアップロードし、そのリンク先をGitHub或いは当Forumを通じて私たちに送って下さい。
完全に飽和した画像は驚くほど圧縮出来ます。アップロードする前に画像ファイルを圧縮(7-ZIP, ZIP, bzip2などで)することをお忘れなく。例えば、Sonyの7M2でLENRをオフにして撮影した完全に飽和したrawファイル10枚のサイズは234MBにもなりますが、ZIPで圧縮するだけで1MBのファイルになります。
名前の変更
これらホワイトフレームの写真に関する作業を単純化するために、それぞれLENR、絞り、及びISOの条件で撮影した画像ファイルの名前は分けて下さい:
exiftool '-FileName<${make}_${model}_${LongExposureNoiseReduction}_${aperture}_${iso}%-c.%le' dir
Rawクロップ
Rawクロップはどの写真を使っても特定できるので、更に別な写真を用意する必要はありません。
入力プロファイル
色を正しく再現するためには入力プロファイルが必要です。カメラ機種ごとに一つの入力プロファイルが必要です。私たちが貴方のカメラ機種の入力プロファイルを作れるよう、"DCPカラープロファイルの作り方"の項を読み、入力プロファイルのタイプ、カラーチャートの撮影の仕方を学んで下さい。