Moiz's journal

プログラミングやFPGAなどの技術系の趣味に関するブログです

ゼロから作るRAW現像 - まとめページ

このブログ記事「ゼロから作るRAW現像」を大きく再構成してより読みやすくした書籍「PythonとColabでできる-ゼロから作るRAW現像」を【技術書典6】にて頒布しました。

現在はBOOTHにて入手可能です。書籍+PDF版は2200円プラス送料、PDF版は1200円です。

moiz.booth.pm

ゼロから作るRAW現像

はじめに

この一連の記事は、RAW画像現像・カメラ画像処理の内容を実際の動作レベルで解説し、なるべくスクラッチからPython上で実行してみる事を目的としています。

そのために、解説する処理は最重要なものにしぼり、使用するアルゴリズムは一部の例外(デモザイク)を除き、もっとも簡単なものを選びました1

また、使用したインプットファイル、Jupyter Notebook上の実行内容はすべてGithubで公開しています。

記事の最後ではラズベリーパイのカメラで撮影したRAW画像からこんなRGB画像が作れるようになります。

f:id:uzusayuu:20181104160132p:plain:w600

オリジナルサイズ画像はこちら

この記事で扱うもの

  • 基本的なRAW現像処理・カメラ画像処理の流れ
  • Bayer画像からRGB画像出力までの各アルゴリズムのうち、基本的な最低限のものの解説
  • 解説した基本的なアルゴリズムPythonによる実装と処理例

この記事で扱わないもの

環境について

この記事で解説する内容は一般的なものですが、使用した画像ファイルは特定のカメラに依存しています。 他のカメラでもわずかな変更で同等の処理ができるとは予想されますが、検証はしていません。

使用カメラ

なお、使用したファイルはGithubからダウンロードできるので、これらのカメラをお持ちでなくても、紹介した処理の内容を実行することは可能です。

実行環境

この内容を再現するには通常のPC環境に加えて以下の環境が必用です。

  • python3が実行でき、以下のライブラリがインストールされた環境

    • rawpy
    • numpy
    • scipy
    • matplotlib
    • imageio
  • exiftool

    exiftoolは必須ではありませんが、あれば記事の内容を再現するのが容易になります。

  • Jupyter Notebookまたは他のPython対話ツール

    なお、後半の内容を実行するには比較的大きめなRAM必要なようです。 はっきりと何GB必要というのは環境に依存するので難しいですが、16GB以上あった方が良さそうです。

    また、一連の内容は僅かな変更でGoogle Colabでも実行可能なようです。 実際@karaage0703氏が、この記事の内容をcolabで実行したものをシェアされています。

    また、私の公開しているファイルでもその1およびその2に関してのみノートブックをColabに対応させてあります。

    Colabでの実行方法についてはこちらを参照ください。

    ゼロから作るRAW現像 - Colabでの実行 - Moiz's journal

記事一覧

ゼロから作るRAW現像その1 - 基本的な処理

カメラ画像処理の流れと、ごく基本的な処理について解説しています。

uzusayuu.hatenadiary.jp

「ゼロから作るRAW現像その1 - 基本的な処理」で使用したファイル

ゼロから作るRAW現像 その2 - 処理のモジュール化

その1で行った処理をモジュール化し、その3以降への準備としています。

uzusayuu.hatenadiary.jp

「ゼロから作るRAW現像 その2 - 処理のモジュール化」で使用したファイル

ゼロから作るRAW現像 その3 - デモザイク処理基本編

基本的なデモザイク処理について解説しています。

uzusayuu.hatenadiary.jp

「ゼロから作るRAW現像 その3 - デモザイク処理基本編」で使用したファイル

ゼロから作るRAW現像 その4 - デモザイク処理応用編

比較的高性能なデモザイク処理について解説しています。 この記事だけ例外的に画像処理・信号処理についてのある程度専門的な知識を前提としています。 デモザイク内部の処理の解説なので、全体的な処理の流れをつかむのが目的の方は読み飛ばしてかまいません。

uzusayuu.hatenadiary.jp

「ゼロから作るRAW現像 その4 - デモザイク処理応用編」で使用したファイル

ゼロから作るRAW現像 その5 - ラズベリーパイのRAW画像処理

ラズベリーパイのカメラでRAW画像を撮影し、その画像を処理をする方法を解説しています。

uzusayuu.hatenadiary.jp

「ゼロから作るRAW現像 その5 - ラズベリーパイのRAW画像処理」で使用したファイル

ゼロから作るRAW現像 その6 - レンズシェーディング補正

レンズ/シェーディング補正(周辺減光補正)について解説しています。 地味ですが非常に重要な処理です。

uzusayuu.hatenadiary.jp

「ゼロから作るRAW現像 その6 - レンズシェーディング補正」で使用したファイル

ゼロから作るRAW現像 その7- ノイズモデルとノイズフィルター

ノイズ測定、ノイズのモデリング、バイラテラルフィルターを使った実際のノイズ除去について解説しています。

uzusayuu.hatenadiary.jp

「ゼロから作るRAW現像 その7- ノイズモデルとノイズフィルター」で使用したファイル

ゼロから作るRAW現像 その8- 欠陥画素、エッジ強調、コントラスト補正

最後の記事です。欠陥画素補正、エッジ強調、トーンカーブ補正について解説しています。

uzusayuu.hatenadiary.jp

「ゼロから作るRAW現像 その8- 欠陥画素、エッジ強調、コントラスト補正」で使用したファイル

ゼロから作るRAW現像 - Colabでの実行

フォローアップ記事です。

その1の内容をGoogle Colab上で実行する方法を紹介しています。

uzusayuu.hatenadiary.jp

Github リポジトリ

プロジェクトトップ

github.com


  1. こういった事情により、この記事で作成するRAW画像現像ソフトは最高の画質を目標にはしていません。