naoya_t@hatenablog

いわゆるチラシノウラであります

PRML §8.3.3 例:画像のノイズ除去

【次回復々習レーン(2013/7/21開催予定)の発表資料準備】

反復条件付きモード(ICM)での画像復元

  • 左上から順番に走査しながら、反転するとエネルギーを減らせるピクセルを反転
  • 走査前後のエネルギー差分がεを下回ったら(あるいは10回やったら)終了

MacBook Air (1.8 GHz Intel Core i7) でノイズ除去にかかった時間:

noise iter sec
5% 5 0.850
10% 6 1.037
15% 6 1.029
20% 8 1.374
25% 10 1.705
30% 8 1.373

320x180の画像をPythonで1秒前後で処理できています。
25%で走査数が多いのは気にしない(ノイズ生成パターンをいくつも作ったら吸収されると思う)

オリジナル画像(白黒2値)

f:id:n4_t:20130626163453p:plain

ノイズ(白黒反転)5%

f:id:n4_t:20130626163509p:plainf:id:n4_t:20130626163754p:plain
復元率:99.5781%
(文字部分復元率: 97.0245%, 白地部分ノイズ除去率: 97.3264%)

ノイズ(白黒反転)10%

f:id:n4_t:20130626163516p:plainf:id:n4_t:20130626163810p:plain
復元率:99.1285%
(文字部分復元率: 94.3466%, 白地部分ノイズ除去率: 96.3142%)

ノイズ(白黒反転)15%

f:id:n4_t:20130626163522p:plainf:id:n4_t:20130626163816p:plain
復元率:98.5191%
(文字部分復元率: 90.4042%, 白地部分ノイズ除去率: 95.5107%)

ノイズ(白黒反転)20%

f:id:n4_t:20130626163528p:plainf:id:n4_t:20130626163823p:plain
復元率:97.3351%
(文字部分復元率: 86.5609%, 白地部分ノイズ除去率: 92.3063%)

ノイズ(白黒反転)25%

f:id:n4_t:20130626163535p:plainf:id:n4_t:20130626163829p:plain
復元率:95.0521%
(文字部分復元率: 80.0645%, 白地部分ノイズ除去率: 87.5887%)

ノイズ(白黒反転)30%

f:id:n4_t:20130626163541p:plainf:id:n4_t:20130626163834p:plain
復元率:91.5521%
(文字部分復元率: 71.6092%, 白地部分ノイズ除去率: 80.7525%)

反復条件付きモード(ICM)の実装(Python2.7+PIL)

6/23の復々習レーンの時に皆さんの発表を聞きながら書いてたコード。要PIL (Python Imaging Library)*1

グラフカットアルゴリズムを用いたもの

早大の石川 博教授によるチュートリアル「グラフカット」辺りを見ながら
具体的にどういう関数にしたら良いのか分からなくて、capacityを適当に設定しているのでちゃんと最適解が出ていない可能性が大ですが、とりあえずICM相当の精度は出てます。しかしめちゃ遅です。(320x180の画像で、ローカルのvirtualbox上で50〜55秒)

粒々で残ることがないのが特徴ですね。

ノイズ(白黒反転)5%

f:id:n4_t:20130626163509p:plainf:id:n4_t:20130626210036p:plain
復元率:99.5243%
(文字部分復元率: 96.9502%, 白地部分ノイズ除去率: 96.8437%)

ノイズ(白黒反転)10%

f:id:n4_t:20130626163516p:plainf:id:n4_t:20130626210046p:plain
復元率:99.2517%
(文字部分復元率: 95.7352%, 白地部分ノイズ除去率: 96.7051%)

ノイズ(白黒反転)15%

f:id:n4_t:20130626163522p:plainf:id:n4_t:20130626210053p:plain
復元率:98.5347%
(文字部分復元率: 88.2222%, 白地部分ノイズ除去率: 96.9946%)

ノイズ(白黒反転)20%

f:id:n4_t:20130626163528p:plainf:id:n4_t:20130626210101p:plain
復元率:97.6649%
(文字部分復元率: 80.8579%, 白地部分ノイズ除去率: 96.4842%)

ノイズ(白黒反転)25%

f:id:n4_t:20130626163535p:plainf:id:n4_t:20130626210106p:plain
復元率:96.6128%
(文字部分復元率: 69.8983%, 白地部分ノイズ除去率: 96.2736%)

ノイズ(白黒反転)30%

f:id:n4_t:20130626163541p:plainf:id:n4_t:20130626210112p:plain
復元率:95.2222%
(文字部分復元率: 54.2772%, 白地部分ノイズ除去率: 95.9325%)

グラフカット版の実装

graph-tool
MacBook Airにgraph-toolを入れるのに挫折したのでvirtualboxUbuntuを入れて実行しています。(→詳しくはこちら)

*1:$ easy_install PIL