
ほとんどの人が写真を撮るときは、カメラや電話のシャッターボタンを押すだけで、すぐに表示できる画像(通常はよく知られているJPEG形式)がほぼ瞬時に画面に表示されます。ただし、場合によっては、このJPEGの生成をさらに制御する必要があります。たとえば、ノイズ除去機能の動作を増減したり、色が正しくないと感じたりする場合があります。
そして、RAWファイルが役に立ちます。このコンテキストでは、生の画像は、フォトマトリックスのピクセルから受信したデータの直接転送であり、追加の処理は行われませんでした。..。通常、これらのファイルは比較的標準的なバイエル画像形式であり、コダックで働いていた1974年にこの技術を発明したブライスバイエルにちなんで名付けられました。オンボードイメージプロセッサ(ISP)が未加工のBayerイメージを表示可能に変換しないようにするという考え方ですが、通常はRAWコンバータと呼ばれる別のプログラムを使用して自分で変換します。

バイエルの画像は、図のようにピクセルごとに1つの色しか記録しません。
生の画像を古い写真のネガティブテクノロジーと比較することもあります。多くのカメラメーカーは独自のフォーマットを使用していますが、最も一般的なタイプのRAWファイルはデジタルネガティブ(またはDNG )、2004年にAdobeによって説明されました。問題は残っています-お気に入りのRAWコンバーターを使用して処理できるようにRaspberryPiからDNGファイルを取得する方法。
RaspberryPiから生の画像を取得する
多くの読者は、カメラからJPEG画像を受信するraspistillアプリケーションに精通しているでしょう。Raspistillには、JPEGファイルの最後に生データを追加するコマンド-rがあります。JPEGビューアは、背面に添付されている何メガバイトもの生データを無視して、通常どおりこのファイルを表示します。このようなJPEG + RAWファイルは、端末のコマンドを使用して取得できます。
raspistill -r -o image.jpg
残念ながら、JPEG + RAW形式はカメラから出力されるものであり、RAWコンバーターではサポートされていません。使用するには、DNG形式に変換する必要があります。
PyDNG
このユーティリティは、RaspberryPiネイティブJPEG + RAWファイルをDNGに変換します。PyDNGはgithub.com/schoolpost/PyDNGからダウンロードできます。詳細な手順もあります。つまり、次の手順に従う必要があります。
git clone https://github.com/schoolpost/PyDNG
cd PyDNG
pip3 install src/. # PyDNG Python3
PyDNGは、より大きなPythonスクリプトの一部として使用することも、単独で実行することもできます。raspistillの例を続けると、入力行に入ることができます。
python3 examples/utility.py image.jpg
結果のDNGファイルは、さまざまなRAWコンバーターで処理できます。それらのいくつかは無料であり(たとえば、RawTherapeeまたはdcrawですが、後者は現在開発またはサポートされていません)、多くのよく知られた商用オプション(Adobe Camera RawまたはLightroom)があります。
ホワイトバランスとカラーマトリックス
この時点でRaspberryPiを使用してRAWファイルを処理する際の問題の1つは、意味のある色を取得することです。これ以前は、カラーバランシングが行われていなかったため、画像は緑のバイアスでレンダリングされていました。通常、緑が最も感度の高いカラーチャネルです。さらに悪いことに、生の画像のRGB値は、さまざまな波長に対するセンサーピクセルの感度を単に反映しているため、それらは、私たちが目で知覚する色と事前に正確に相関していません。ここで、ホワイトバランスとカラーマトリックスが役立ちます。
シーンの中立部分を中立に見せるためには、正しい白の乗数が必要です。JPEG + RAWファイルに含まれているそれらについてのraspistillからの知識に基づいた推測を使用できます(または、画像のどこか(たとえば、灰色のカード)で独自の値を測定できます)。次に、カメラの色をsRGBまたはAdobe RGBに変換するために、マトリックスとルックアップテーブルが必要です。
結果
RAWを変換する以前の試みと、更新されたバージョンのPyDNGを適用した後に得られた結果。
DCPファイル
DNGファイルに精通している人のために、カメラプロファイル(バイナリ形式)を使用したDCP(DNGカメラプロファイル)ファイルへのリンクを提供します。さまざまなファイルを試してください。ユーザーが実験して独自のファイルを作成し、結果を公開することをお勧めします。
- PyDNGに組み込まれているベースカラープロファイル。その結果を上に示します。比較的小さく、JSONファイルとして表示できます。
- 色のバランスの取れたレンダリングのための参照テーブルを備えた拡張されたより大きなプロファイル。
- 前のものと似ていますが、肌と空の色を改善するためのいくつかの修正があります。
ただし、これらのファイルにはいくつかの機能があります。
- これらは、平均的な「一般的な」モジュールではなく、1つの特定のRaspberryPi高品質カメラ用に調整されています。
- 光源は私たちの指先にあるものでした-特に、D65ランプは少し不正確に透過しているようです。
- キャリブレーションは、色温度がキャリブレーションに関係する2つのカラーソースとあまり変わらない場合にのみ機能します。この場合、これは2900Kから6000Kの範囲です。
したがって、まだ改善の余地があります。ただし、多くのモジュールでのテストでは、これらのパラメーターが重要な前進であることが示されています。
謝辞
DCamProfを使用したカラーマトリックスキャリブレーションのJackHogan、PyDNGに新機能を追加したZsabeNagi。
追加資料
- 生のBayer画像を表示可能なRGBまたはYUV画像に変換することを説明する多くのリソースがあります。たとえば、ジャックのブログの記事。
- DNGファイルでそれらが果たすカラーマトリックスの役割を理解するには、その仕様を参照してください。特に、これについては第6章で説明します。