Raspberry Pi上でPython3+rawpyでRAW現像する方法

f:id:karaage:20181231144842j:plain:w640

Raspberry PiでRAW現像

 以前、Google Colaboratory上でPythonとrawpyというライブラリを使ってRAW現像をしました。

 上記記事を参考にすると、ブラウザ上でRAW現像ができてしまうのですが、ラズパイでスタンドアローンでRAW現像できる専用マシンを作れたら面白そうだなと思い、ラズパイでrawpyをセットアップして、RAW現像できる環境を構築してみることにしました。

Raspberry PiのRAW現像環境セットアップ

 下記記事を参考にRaspberry Piのセットアップをします。

 使用したRaspbianのバージョンは「Raspbian Stretch with desktop」の「2018-11-13」バージョンのものです。スワップファイル増大のところで/etc/dphys-swapfileを最大のCONF_SWAPSIZE=2048に設定しました。

 あとは、ターミナルを開いて以下コマンドを実行してRAW現像に必要な環境を構築します。多分以下が最短でセットアップできる方法だと思います。

$ sudo apt-get update
$ sudo apt-get install libatlas-base-dev
$ sudo apt-get install libraw-dev
$ sudo apt-get install python3-scipy
$ sudo apt-get install python3-matplotlib
$ pip3 install rawpy
$ pip3 install imageio

 続いて「ゼロから作るRAW現像」の作者MOIZ (id:uzusayuu) さん作の「raw_process」(神リポジトリ)をGitHubからクローンします。

$ cd
$ git clone https://github.com/moizumi99/raw_process

 上記コマンドは、ソフトをネットからコピーするためのものです。上記コマンドの裏側にある、GitHubやGitについて詳しく知りたい人は、以下の記事参照下さい。

Raspberry Pi上でRAW現像

 以下コマンドでRAW現像するスクリプトraw_process.pyを使ってRAW現像します。

$ cd ~/raw_process
$ python3 raw_process.py sample.ARW

 私の環境だと、Raspberry Pi3上で20分以上かかりました。output.pngというファイルが生成されます。

f:id:karaage:20181231144855j:plain:w640

 以下コマンドでraw_process5.pyというスクリプトを使うと、RAW現像を高速化できるのですが…

$ python3 raw_process5.py sample.ARW

 残念ながらラズパイだとメモリが足りず、「MemoryError」と表示されて途中で止まってしまいました。

まとめ

 ラズパイ上でRAW現像する環境を構築してRAW現像してみました。今後、ラズパイをRAW現像専用マシーンにすべく、専用のインターフェースや専用ソフトを開発しようかと考えてたのですが、ちょっとこの速度だと実用上辛そうなので、考え直すことにしました。ラズパイ5くらいになったら、実用的な速度で動かすことができるかもしれませんね。

 ひょっとしたら、この情報を元に超絶高速化の魔改造してくれるヤバイ人が現れるかもしれないので、情報としてシェアしておきたいと思います。もし高速化実現したら是非教えて下さい(超人任せ)。

Raspberry Pi 3

参考リンク

Raspberry PiでBokehを使おうとしたらエラーになった話 - Qiita

関連記事