inpainting

http://mountains.ece.umn.edu/~guille/inpainting.htm
これは面白い!、ということで論文の式を頼りに作ってます。原理はまだ理解してません。
画素毎の更新式は論文にそのまま載っているのですが(思ったよりもかなり簡単な更新式です)、
Image diffuseの方法がよく分からないので、SethianのLevel Set本に載っている更新式を流用しました。
マスクの境界付近の細かい部分の処理はまだやってません。


(a)文字の入った入力画像

(b)処理マスク領域(単純な閾値処理です)

(c)inpainting 結果

拡大:

ぱっと見て、文字が取れたような感じなんですが、良く見ると細かい部分がおかしい箇所もあります。
もうちょっとImage diffuseの部分をちゃんと作らないといけないぽい。


動画です。
http://g0307.hp.infoseek.co.jp/inpainting.swf

実行ファイルです。./images/input.bmpの赤い画素をマスクとして処理して./outに出力します。
他の画像で試すときは、画像ファイルを差し替えてください。せいぜい細い線が限度で、あまり無茶なinpaintingは無理だと思います。
もう少し、image diffuse部分を作り直したらソースもアップします。
http://g0307.hp.infoseek.co.jp/inpaint.zip