Moiz's journal

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

【技術書典6】 画像処理は低レイヤー

画像処理は低レイヤー

はじめに

前回の記事で告知したとおり、4月14日に行われる技術書オンリーイベント『技術書典6』にて『う38』のサークルbitnosのご厚意で「PythonとColabでできる - ゼロから作るRAW現像」を配布します。

サークルbitnosは低レイヤーを中心とするソフトウェアのサークルなのですが、そこで画像処理の書籍を配布することに意外に思われる方もいらっしゃるかもしれません。 実際に今回配布するに至った理由の多くはサークル主のid:uchan_nosさんのご好意という面が大きいのですが、ジャンルだけをとっても実は私にはあまり違和感はありません。

RAW現像の処理はカメラ画像処理

確かにPC上で実行する市販のRAW現像ソフトを思い浮かべると、そういった処理は低レイヤーとは程遠いと言えますが、RAW現像で行われる処理はもともとカメラ内で行われていた画像処理です。

もちろんPCで行うためにより高度な処理が行える、マニュアル的な補正ができる、カメラメーカー以外が提供するソフトウェアが使える、といった違いはありますが、処理の内容的にはカメラ画像処理のエミュレーションという言い方もできると思います。

スマートフォンのカメラ機能

それではカメラ内の画像処理の例として、身近なスマートフォンのカメラ機能を考えてみましょう。

まず画像処理については次の方法が考えられます。

  1. CPU・GPUなどの汎用プロセッサで行う
  2. DSPなどの画像処理に特化した専用プロセッサで行う
  3. 専用のハードウェア回路で行う

1や2の場合は、画像処理自体はファームウェアまたはドライバーとして書かれます。

3の場合は画像処理はハードウェアの一部なのでCPUやGPUと同じレイヤーです。 ただし、制御処理や画像処理の一部はドライバーソフトウェアとして提供される事になります。

カメラ機能を実現するには他に、

などが必用です。

カメラコントロールは各種プロセッサ上で実行されますが、これはドライバーの領分です。

後処理はどこで行われるかシステムによって違いますが、GPUDSPで行う場合はファームウェアやドライバー上で行うことになります。

エンコードは専用ハードウェアやアクセラレータで行われることが多いですが、この場合画像処理部分と同様にハードウェア・ファームウェア・ドライバーといった低レイヤーで実現されます。

このように、スマートフォンのカメラ機能のほとんどの部分は低レイヤー・ソフトウェアおよび更に下の層であるハードウェアで実現されています。

そんなわけで、RAW現像は低レイヤーソフトウェアやハードウェアと関連が非常に深いのです。

最後に

とうとう技術書典6も1週間後の4月14日にせまってきました。

都合のつく方はどうぞご来場して、もし気が向いたらぜひサークルbitnosをお訪ね下さい。

技術書展の開催情報

  • 日時: 2019/04/14 (日) 11:00〜17:00 (一般参加は11時~13時のみ有料)
  • 開催場所: 池袋サンシャインシティ2F 展示ホールD(文化会館ビル2F)

書籍配布情報

  • ブース: 「う38」
  • 書名:「PythonとColabでできる-ゼロから作るRAW現像」
  • フォーマット
    • 書籍版:164ページ(内12ページフルカラー+表紙含む)、予価2000円
    • PDF版:フルカラー164ページ(表紙含む)、予価1000円

サークル情報

  • サークル: bitnos
  • サークル主催:id:uchan_nosさん
  • ジャンル: オペレーティングシステムを自作する際の要素技術の解説本など
  • 新刊書籍: 「Local APICタイマー入門」
    • 現代のPCに搭載されている様々なタイマーの使い方を紹介します

f:id:uzusayuu:20190331124210j:plain:w300


  1. オートホワイトバランス、オート露出、オートフォーカス