Poisson Matting改良計画

スタートしました。S田先生もそうなのだけれど、先生方のすごいのはその専門分野というよりもそれ以外の分野における嗅覚だと再認識。
せっかくなので、Poisson Matting自体の話から。そもそも、画像(I)とは前面オブジェクト(F)と背景(B)の組み合わせで表現されている。これを式で表現すると次のようになる。
I = \alpha F + (1 - \alpha)B
で、これをx方向y方向に対して偏微分を行うことで、
\nabla I = \nabla \alpha (F - B) + \alpha \nabla F + (1 - \alpha) \nabla B
という式が出来る。ちなみに、
\nabla = (\frac{\partial}{\partial x}, \frac{\partial}{\partial y})
である。
さて、ここでこの式の意味を考えてみると、\nabla \alphaというのがオブジェクトと背景の境目で1から0に変化する。それに対して、\nabla F\nabla Bというのはオブジェクトや背景の変化率である。
今、オブジェクトと背景を切り分けたいという問題を考える。この場合、オブジェクトや背景の変化率はそれほど大きくは無いという仮定をおく。そうでなければ、オブジェクトと背景をきちんと切り分けることは難しいだろう。
すると、\nabla F\nabla Bは無視することが出来る。すなわち
\nabla I = \nabla \alpha (F - B)
である。仮にF, B, Iがそれぞれスカラー量であればこれをさらに式変形を行って、
\nabla \alpha = \frac{\nabla I}{F - B}
となる。この問題について解けばよい。そしてF, B, Iはスカラー量ではないために、グレイスケールに変換して考える。これが本来の論文に載っているGlobal Poisson Mattingの手法の原理である。
ところが、本来はColorというのはRGBの3要素からなるVectorである。これでは式変形として正しくない。で、どうするかと言うのがS田先生のアイデア
\nabla I = \nabla \alpha (F - B)において、\nabla IF - BのRGBのベクトルの向きが異なる可能性がある。では、その場合の\nabla \alphaの決め方はどうすればよいかと言えば、
(\nabla \alpha(F - B) - \nabla I)^2
を最小化してやればよいだろう、と。
これを展開して微分して\nabla \alphaを求めると、
\nabla \alpha = \frac{(\nabla I)^T (F - B)}{(F - B)^T (F - B)}
となる。これは確かにI, F, Bがスカラーである場合にも成り立つ。
ということで、この方針で解いてみたいと思う。