OpenCVで美しいボケを追究してみる | Nature | Photography | Music | Art

Nature | Photography | Music | Art

日々好奇心の趣くまま

サイト内の写真の使用ならびに無断転用を禁じます。

前回書いたDFプログラムとほぼ同時進行で作成したもので、姉妹作となります。

静止画・動画問わず重要な要素である「ボケ」。 英語でもBokehという語が定着しているようで。

「美しいボケ」(以降「美ボケ」)について雄弁に語れるほど博識なわけではないのだが、おそらく「二線ボケがダメ」や「円形ボケが望ましい」とか「階調がなめらか」などの基本的な事柄以上は定量的な基準はあまりなく、ほぼ個人の主観に委ねられるというのが正解のようです。

その一方、巷では美ボケを撮るにはCarl Zeissだの大口径の単焦点レンズが必要とかなんとか…庶民にとっては道楽の極みのような高価レンズの世界があるようで。

しかしながら庶民ゆえにボケの追究のために膨大な¥をかけたくないが、ボケとは何ぞやという追究には興味がある。

その端緒として、OpenCVの機能を組み合わせてIn focusな画像から美ボケをエミュレートするプログラムを実装してみました。

https://github.com/delphinus1024/bokeh_emu

ただし現状では以下のような制限があります。


  • 被写体の距離に関係なく同サイズのボケ量になってしまう。本来は距離に応じてボケ量が増減しなければならないはず。そのためボケ特有の奥行き感があまり出ない。

  • 出力画像は元画像全体がボケる。実用上すべてボケの画像はほぼあり得ないので、ボケてない元画像を別レイヤーにおいてマスキングして組み合わせる必要あり。



今回、モチベーションの発端となり、かつ非常に参考になったのはこのあたりのサイト。

http://bit.ly/1KeZp8c

http://bit.ly/1Pqhe30

参考Webの主要点を要約すると、アルゴリズムで美ボケを作り出すキーポイントは、


  • ボケは元画像と別途与えられた2次元のkernel(つまり2次元フィルタの係数)との畳み込みで実現する。

  • ボケ形状はkernelの係数分布の形で決まってくる。(下品になるが、星型やハート型のボケなども可能。) また、大きいボケには大きいkernelが必要。

  • 重要な点として、本物のレンズで作り出されるボケは大雑把な流れとして、光(線形)-> ボケ(レンズ) -> センサ -> 現像時ガンマ補正(つまり非線形)のプロセスを経ている。実世界では光量に対して線形にボケる。

  • 一方我々が見る画像(つまりrawからtifやjpgに現像された画像、もしくは動画の各フレーム)は既にガンマ補正後の姿なので撮影時の光量とピクセル値の関係は非線形。 これは人間の光量に対する感覚が非線形であることに由来。 従って既に非線形である画像にボケを加えるには、処理前に逆ガンマ補正をかけて線形に戻してから処理しなければリアルなボケにならない。

  • そうすることで画像の明るい部分が重点的に畳み込まれることで本物に近いボケが得られる。

  • 処理後は再度ガンマ補正をかけて元の非線形に戻す。



RAW≒センサ出力と現像後画像の線形・非線形の関係については英文だが以下のAdobeの資料がとても分かりやすい。

http://adobe.ly/20YJIWC

プログラムのビルド・使用方法の詳細は付属のreadmeを参照してもらうとして、ここでは補足的なことを。


  • kernelファイルについて。幾つかの種類を添付しているが、これによってボケの形状が決まってくるので自作の形状を使ってもおもしろいかも。 (ただし多角形・丸以外はあまり上品な仕上がりにならないみたい。)

  • kernelの大きさによってボケの大きさが決まり、各サイズのkernelを用意するのも面倒なので、-r オプションでリサイズできるようにした。また、あまりくっきりした玉ボケが好ましくなければ-b オプションでkernel自体にブラーをかけることもできる。

  • -g オプションで元画像にかけるガンマ係数を指定できるが、この値次第でボケの質感を変えることができる。係数が大きくなるほど明るい部分のボケが増加し、暗い部分のボケが減少する。画像によってガンマ係数の調整が必要。



サンプルとして、元画像は先日仁淀川上流で撮影したもの。(以降、表示用に縮小してありますがいずれもFull HDサイズで処理したものです。)



いろいろなkernel及び設定値で生成したサンプルが以下。














キワモノっぽいものもありますが、一般的に「美ボケ」の範疇に入るものも幾つかあるのではないでしょうか。

後日追加

以下の作品の中で、このプログラムを隠し味に使用したカットがいくつか入っています。よろしければご覧ください。