Monday, October 3, 2016 5:00AM to 11:00AM (UTC) Schedouled down time to change site domain

ぶれたりピントが外れたりした写真を修正する

 風や振動や手の震えなどが原因で、ぼやけた写真を撮ってしまったという経験は誰にでもあるだろう。しかしこのデジタル時代には、もう絶望する必要はない――ぼやけたりかすんだりした写真でも、撮ってしまった後に修正することができる。このような修正を行なうことができるツールはLinux用にも複数存在する。

 カメラの揺れによるブレやピント外れを取り除くためには、デコンボリューションと呼ばれる処理を施せば良い。デコンボリューション処理の基となっている数学的な理論について知りたければ、まずはWikipediaで紹介されている参考文献を参照すれば良いだろう。詳細な情報を知りたいだけ知ることができる。一言で言えば、FFT(高速フーリエ変換)を画像に対して行いブレを抽出し、それを補正することによって画像を本来の形に変換するということだ。この処理はCPUを激しく使用するが、ぼやけた写真を修正するためにはこれ以上に優れた方法は存在しない。

Unshake

unshake1_thumb.jpg
Unshake

 まず手始めに行うことのできるもっとも簡単な方法は、Mark Cahill氏による Unshake を使用することだろう。Unshakeは小さなJavaアプリケーションで、処理を高速に行うために役立つ当て推量を行うためのオプションが数多く用意されている。最新版はバージョン1.5で、実行にはJava 2かそれ以降の版のJavaが必要だ。Unshakeはオープンソースではなく、ライセンスで商用利用が禁止されている。

 Unshakeの配布ファイルをシステム上のどのディレクトリでも良いので展開したら「./unlaunch.sh」を実行してUnshakeを起動しよう。Unshakeのユーザインターフェースでは、上部に各コントロールがあって、その下に状況表示ウィンドウがあり、一番下にファイル選択用ウィジェットがある。写真を開いたらまず最初に、画像中のもっとも気になる部分だけを表示させるように写真のウィンドウの大きさを調整しよう。これは重要な操作なのだが、操作画面にはその説明がない。不適切な場所を表示させている場合、Unshakeがそこをブレだと誤認して、修正処理をやりすぎてしまうことがある。

unshake2_thumb.jpg
Unshakeによる処理結果

 ウィンドウを適切に設定したら、Estimate(見積もり)ボタンをクリックすれば、Unshakeが処理にかかりそうな時間を推測してくれる。その際、ブレの度合いと修正品質のパラメータを調整すれば、推測結果が変わる。修正結果を見るには、DeBlur(ブレをなくす)ボタンをクリックすれば良い。Unshakeが画像の修正を行って、結果を新たなウィンドウを開いて表示するので、その画像を保存することもできる。

 Unshakeは、修正を適用すべき度合いを自ら判断する。実際の処理時間は、Unshakeの判断次第で大きく変わる。Time(時間)コントロールを使えばUnshakeが行う処理に、より長い、あるいははより短い時間をかけるように調整することができる。デフォルトの設定である「x1」は、UnshakeがEstimate(見積もり)で推定した時間内で変換を行うことを意味する。より精細な分析を行うようにしたい場合は、Time(時間)のパラメータは「x100」まで調整することができる。

 デフォルトの設定では、1.3メガピクセルの画像の場合で40秒から50秒が妥当な見積もり時間だ。なおCahill氏はUnshakeのサイトで、実際の処理時間が見積もり時間の「x100」(100倍)近くまでかかったことはないと述べている――単に、プログラムが必ず終了するように上限として用意しているだけとのことだ。