実践コンピュータビジョン 9章 画像の領域分割
DESCRIPTION
静岡Developes勉強会のコンピュータビジョン9章の資料です。TRANSCRIPT
![Page 1: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/1.jpg)
実践コンピュータビジョン
9章 画像の領域分割
![Page 2: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/2.jpg)
はじめに
本資料は静岡Developes勉強会「コンピュー
タビジョン vol.9」のための資料です。
オライリー社の実践コンピュータビジョン
www.oreilly.co.jp/books/9784873116075/
を教科書として使います。
![Page 3: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/3.jpg)
自己紹介
やじゅ@静岡・・・漢字名は「八寿」
平口 八寿人(https://www.facebook.com/yasuhito.hiraguchi)
アラフォーエンジニア、元MSMVP(Visual Basic)
静岡県島田市のSL(大井川鉄道)が走っている所に在住
Twitter:yaju はてなID:Yaju3D
http://blogs.wankuma.com/yaju/
http://yaju3d.hatenablog.jp/ (数学と物理を基礎からやり直す)
http://www.slideshare.net/yaju88/presentations (スライド)
![Page 4: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/4.jpg)
開発環境
共通開発環境
python 2.7 (3.x系では本書に沿わないのでNG)
環境変数 Path
「C:¥Python27;C:¥Python27¥Scripts;」を追加
![Page 5: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/5.jpg)
開発環境
私の開発環境
OS Windows 8.1
IDE pyCharm 3.0.2 (Community Edition FREE)
http://www.jetbrains.com/pycharm/download/
![Page 6: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/6.jpg)
開発環境
別の開発環境
IPython NoteBook
ブラウザ上で対話的にPythonを実行できるツール
Windows版導入方法 http://www.aoki.ecei.tohoku.ac.jp/~ito/python_windows.html
Mac版導入方法 http://slowquery.hatenablog.com/entry/2013/04/01/010927
![Page 7: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/7.jpg)
事前準備 その1
サンプルソースコード
実践コンピュータビジョンのWebサイトの関連ファイ
ルタブからダウンロードしてください。
画像データ
原著者のサイトから pcv_data.zip をダウンロード
してください。
![Page 8: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/8.jpg)
事前準備 その2
NumPy、Matplotlib、SciPy、 PILインストール(Windows)
NumPy、Matplotlib、 SciPyのインストール
http://qiita.com/mojaie/items/995661f7467ffdb40331
PIL インストール Python2.7用
http://www.pythonware.com/products/pil/index.htm
easy_installのインストール(Windows)
https://pypi.python.org/pypi/setuptools/1.1.5#installing-and-using-setuptools
setuptools-1.1.5.tar.gzを解凍し、ez_setup.pyをダブルクリック
C:¥Python27¥Scripts内にeasy_install関連のファイルが入る。
pipのインストール(Windows)
http://www.lifewithpython.com/2012/11/Python-package-setuptools-pip.html
easy_install pip をコマンドプロンプト上で入力する。
![Page 9: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/9.jpg)
事前準備 その3
サンプルソースコードと画像データを展開
PycharmProjects (私の場合のフォルダ構成)
├─pcv_data (画像データ pca_data.zipを展開)
├─chap8
├─chap9 (サンプルソース pcv_j.zipを展開)
Phython-graphパッケージのインストール
http://code.google.com/p/python-graph/ からDLするより
「easy_install python-graph-core」でインストールが簡単
![Page 10: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/10.jpg)
事前準備 その4
pca_data.zipから、empire.jpgを展開してカレントディレクトリ
(chap9)に置きます。
http://research.microsoft.com/en-
us/um/cambridge/projects/visionimagevideoediting/segmentat
ion/grabcut.htmの「Ground truth database」の「Labelling -
Rectangle」をクリックし、boundary_GT_rect.zipをダウンロード
カレントディレクトリ(chap9)に展開します。
376043.bmp 兵隊用、86016. bmp 庭用、 153077. bmp 水泳用
![Page 11: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/11.jpg)
事前準備 その5
http://www.eecs.berkeley.edu/Research/Projects/CS/vision/
grouping/segbench/の「Downloads Segmentation Dataset」の
[images]をクリックして、BSD300-images.tgz をダウンロード
BSD300/images/test/の下記ファイルをchap9内に展開します。
376043.jpg 兵隊、86016.jpg 庭、 153077.jpg 水泳選手
8章から「Sebastien Marcel Static Hand Posture Database」の
shp_marcel_test.tar.gzから下記ファイルをchap9内に展開します。
C/uniform/C-uniform03.ppm
![Page 12: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/12.jpg)
事前準備 その6
IPython notebook を使う場合
Windows版では、コマンドプロンプトにてカレントディレクトリ(自
分の場合は、PycharmProjects¥chap9)にしてから「iPython
notebook」を入力して実行。
![Page 13: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/13.jpg)
基礎知識
画像の領域分割
グラフ
グラフカット
ベイズの定理
スペクトルグラフ理論
ラプラシアン行列
![Page 14: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/14.jpg)
画像領域の分割
画像を意味のある領域に分割する処理のこと
例 犬のいる背景画像から、犬の領域を取り出す
![Page 15: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/15.jpg)
グラフ
グラフは主に、2つ以上の要素(人物、駅、場所など)を結んで行
き、節点同士の関連性を見いだすことに用いられます。
下図の線の数値は各地点を移動にかかる時間(分)である。
線に時間などの重みを持ったグラフを「重み付きグラフ」と言う。
![Page 16: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/16.jpg)
グラフ
A地点→C地点に速く着くには?
A地点からC地点に速く着く時間を考えてみる。
今回の場合、4通り行き方があるのでその全てを列挙してみる。
A(上)→Cまでかかる時間:17分
A(下)→Cまでかかる時間:19分
A(左)→B→Cまでかかる時間:5分+11分=16分
A(右)→B→Cまでかかる時間:7分+11分=18分
![Page 17: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/17.jpg)
グラフカット
カットとは
点を2つのグループに分ける
1. 始点を含むグループ
2. 終点を含むグループ
始点を含むグループから終点を含むグループへ
向かっている有向枝の集合をカットとよぶ
カットに含まれる枝の容量の合計を
カットの容量とよぶ
![Page 18: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/18.jpg)
グラフカット
大名の最大流問題
富士山から江戸までなるべくたくさんの氷を送りたいどのように
運ぶ? ※道が広く(例 8)なっても運ぶ量(例 5)は変化しない
s
t1
2 3
5
8
2
8
5
6
飛脚が運べる量(容量)
最大で12個(5 + 2 + 5)しか運べない
8
5
2 5
25
5
![Page 19: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/19.jpg)
グラフカット
最大フロー=最小カット (最大フロー最小カット定理)
最大12個運べるのは最後まで調べなくても、最小カットで分かる
![Page 20: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/20.jpg)
ベイズの定理
条件付き確率に関し、イギリスの数学者トーマ
ス・ベイズ(1702~1761)によって示された定理
で、コンピュータ上ではスパムメールフィルター
として活用されるようになった。
http://blog.oscarbonilla.com/2009/05/visualizing-bayes-theorem/
![Page 21: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/21.jpg)
ベイズの定理
ベイズ推定の例題とその解
喫煙者の推定の問題 http://www.yasuienv.net/BayesExamples.htm
問題:「男性10人、女性7人が一室でパーティーを開いた。男子の喫煙者は5人、女性は3人である。部屋に
入ったら煙草の吸殻が1本、灰皿の上にあった。このとき、吸った人が女性である確率を求めなさい(煙草の
吸い回しはしていないと仮定する)」。
解法: (a) ベイズの定理による解法
吸った人が女性である確率を求めるということは、P(女性|喫煙者)を求めることである。
ベイズの定理によって、下記式を求めることになる。
P(喫煙者|女性)・P(女性)
P(女性|喫煙者) = ---------------------------
P(喫煙者)
P(喫煙者|女性) = 3/7
P(女性) = 7 / (7+10) = 7/17 P(喫煙者) = (3+5) / (7+10) = 8/17
上式に代入して、
P(女性|喫煙者) = (3/7 × 7/17) / (8/17) = 3/8 (答)
![Page 22: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/22.jpg)
ベイズの定理
解法 (b)集合論による解法
次の図のような状況であった。吸殻を残したのは喫煙者の誰かであり、喫煙者が女性である確
率は、図から明らかに3/8である。
![Page 23: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/23.jpg)
スペクトルグラフ理論
グラフを解析する手法
グラフの隣接行列(のようなもの)の固有値・固有ベクトルが、
元のグラフの何らかの性質を物語っている。
参照:スペクトラルグラフ理論入門
![Page 24: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/24.jpg)
ラプラシアン行列
グラフの構造を行列で表したもので、対角成分で頂点の価数を、その他の
成分で隣接関係を表す。
具体的には、成分(i, j)の値は次のように決まる。
・i = j のとき:頂点 i に接続する辺の数
・i≠j のとき:頂点 i と頂点 j が辺でつながっていれば-1。そうでなければ0
参照:ラプラシアン行列 - 大人になってからの再学習
![Page 25: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/25.jpg)
ラプラシアン行列の作り方 その①
ラプラシアン行列
A
B
C
D
E
![Page 26: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/26.jpg)
ラプラシアン行列の作り方 その②
ラプラシアン行列
上-下
![Page 27: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/27.jpg)
第3章の目次
9.1 グラフカット
9.1.1 画像からグラフを構成する
9.1.2 ユーザー入力を用いた領域分割
9.2 クラスタリングを用いた領域分割
9.3 変分法
9.4 演習問題
![Page 28: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/28.jpg)
実行ファイル説明
9.1.graphcut.py 小さなグラフの最大フロー/最小カットを計算
9.1.1.graphcut.py empire.jpgを使って、グラフを作成する
9.1.2.graphcut.py グラフカットによる画像領域を行う
9.2.ncut.py クラスタリングを用いた画像領域分割を行う
9.3.chanvese.py Chan-Veseモデルの最小化による画像領域分割を行う
![Page 29: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/29.jpg)
9.1 グラフカット
グラフカットとは
有向グラフを2つの部分集合に分離すること
有向グラフ・・・辺が向きを持つグラフ
無向グラフ・・・辺が向きを持たないグラフ
グラフカットは、ステレオ画像の奥行き復元、画像のステッチン
グ(つなぎ目を滑らかにする)、画像の領域分割などにコン
ピュータビジョンのさまざまな問題を解決するのに使うことが出
来る。
![Page 30: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/30.jpg)
9.1 グラフカット
有向グラフを2つに分離とは
点を2つのグループに分ける
1. 始点(ソース S)を含むグループ
2. 終点(シンク T)を含むグループ
始点を含むグループから終点を含むグループへ向かっている
有向枝の集合をカットと呼ぶ
カットに含まれる枝の容量の合計をカットの容量と呼ぶ参照 大人になってからの再学習 グラフカット(Graph Cut)
![Page 31: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/31.jpg)
9.1 グラフカット
9.1.graphcut.py の実行
※python-graphパッケージは、「easy_install python-graph-core」でインストール
小さなグラフの最大フロー/最小カットを計算
ノード0:始点(ソース)
ノード3:終点(シンク)
flow is: {(0, 1): 4, (1, 2): 0, (1, 3): 4, (2, 3): 3, (0, 2): 3}
cut is: {0: 0, 1: 1, 2: 1, 3: 1} … 戻り値は、0と1のみ
![Page 32: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/32.jpg)
9.1 グラフカット
最大フローとは
始点0から終点3に最も多く物を流すことを考える
flow is: {(0, 1): 4, (1, 2): 0, (1, 3): 4, (2, 3): 3, (0, 2): 3}
0→1に4個、1→3は1→2により多く流せるから1→3に4個
1→2は流す物がなくなったので0個になる。
0→2に3個、2→3はそのまま3個流す。
(2→3は5だが、流す物は3個しかない)
![Page 33: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/33.jpg)
9.1 グラフカット
最小カット
cut is: {0: 0, 1: 1, 2: 1, 3: 1} … 戻り値は、0と1のみ
1. 始点(ソース S)を含むグループ
0: 0
2. 終点(シンク T)を含むグループ
1: 1, 2: 1, 3: 1
最小コストは、赤の線で7になります。
赤の線でカットすると、4 + 3 = 7
青の線でカットすると、4 + 5 = 9
![Page 34: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/34.jpg)
9.1.1 画像からグラフを構成する
最も単純な4近傍(きんぼう)ピクセルを用い、2つの画像領域
(前景と背景)に分ける。4近傍とはピクセルの上下左右です。
(左)モデルの学習に用いるラベル画像。
(中)画像に重ねた訓練データ領域。(右)領域分割結果
![Page 35: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/35.jpg)
9.1.1 画像からグラフを構成する
ベイズの定理によって、スパムメールを振り分けるみたいに
画像に応用して前景と背景を判定させる。
ベイズ決定則は最大事後確率則,最小誤識別率則(誤りを最小化)
グラフの辺(エッジ)の重みを、下記の式で求める
グラフカットにより、前景と背景を切り取る(下図はイメージ)
![Page 36: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/36.jpg)
9.1.1 画像からグラフを構成する
9.1.1.graphcut.py の実行
実行すると自分の環境では、40分かかったので画像を小さく
するといいかも。
また、実行した場合に0割エラーが発生したので、下記を修正しました。
grapchut.py
# 正規化
for i in range(vim.shape[0]):
n = linalg.norm(vim[i])
if n !=0:
vim[i] = vim[i] / n
![Page 37: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/37.jpg)
9.1.1 画像からグラフを構成する
変数kappaは、近傍ピクセル間のエッジの相対的な重みを決定するものです。
kappaを変化させたときの影響を下図となります。
値が増えるにつれ、領域分割の境界は滑らかになり詳細が失われていきます。
![Page 38: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/38.jpg)
9.1.2 ユーザー入力を用いた領域分割
ユーザーが四角形領域や「投げ縄」ツールで領域選択して、前
景と背景を指定するのを模擬した情報をグラフカットに適用して、
ユーザー入力による領域分割を模擬します。
自動ではまだ限界がある、ある程度ユーザーが領域を指定するInteractive Foreground Extraction using GrabCut Algorithm 【動画】Grabcutを実装してみた
![Page 39: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/39.jpg)
9.1.2 ユーザー入力を用いた領域分割
ユーザーが四角形領域や「投げ縄」ツールで領域選択して、
前景と背景を指定するのを模擬した「注釈情報」をグラフカット
に適用して、ユーザー入力による領域分割を模擬します。
注釈情報は下記のようなピクセル値を持つビットマップ画像
として符号化されています。
![Page 40: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/40.jpg)
9.1.2 ユーザー入力を用いた領域分割
9.1.2.graphcut.py の実行
86016.jpg 庭、 376043.jpg 兵隊、 153077.jpg 水泳選手
PDFが出力されるだけなので、
savefig('labelplot.pdf')
の下に下記を追加
axis('off')
show()
![Page 41: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/41.jpg)
9.2 クラスタリングを用いた領域分割
「正規化カット(Normalized Cut:Ncut)」アルゴリズムは、スペク
トラルグラフ理論に基づき、ピクセルの類似度と空間的近接性
を組み合わせて画像を領域分割する手法です。
その考え方はグループのサイズを考慮したコストを定義するも
ので、コストをグループのサイズで「正規化」します。
参照:スペクトラルグラフ理論入門
![Page 42: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/42.jpg)
9.2 クラスタリングを用いた領域分割
正規化カット法を使った画像の領域分割
Static Hand Posture Databaseの手話画像(詳細は8.1節を参照)を用い、k =
3とします。領域分割結果と上位4個の固有ベクトル
(上)原画像と3 クラスの領域分割結果
(下)グラフ類似度行列の上位4 個の固有ベクトル
![Page 43: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/43.jpg)
9.2 クラスタリングを用いた領域分割
正規化カットを用いた2クラスの画像の領域分割
(左)原画像。(右)領域分割結果
![Page 44: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/44.jpg)
9.2 クラスタリングを用いた領域分割
9.2.ncut.py の実行
自分の環境では、エラーで実行できなかった。
![Page 45: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/45.jpg)
9.3 変分法
変分法とは
関数について最適化する問題を「変分問題」といい、このような
問題を解くアルゴリズムを「変分法」といいます。
Chan-Vese領域分割モデル
分割する画像領域に対して区分定数画像モデルを仮定します。
ここでは、前景と背景という2つの領域の場合に着目しますが、
このモデルは多領域に拡張することもできます。
![Page 46: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/46.jpg)
9.3 変分法
Chan-Vese領域分割モデル
曲線の集合画像を2つの領域1と2に分割するとき、次のような
Chan-Veseモデルのエネルギーの最小値を求めることで領域
分割できます。
![Page 47: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/47.jpg)
9.3 変分法
9.3.chanvese.py の実行
ROFノイズ除去を用いたChan-Veseモデルの最小化
による画像領域分割
(左)原画像。
(中)ROFノイズ除去後の画像
(右)最終的な領域分割
![Page 48: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/48.jpg)
9.4 演習問題
1.グラフカットを最適化するために、エッジの数を減らせば計算を高速化すること
ができます。このようなグラフの構築法が文献[16]の4.2節で解説されています。
これを試して、本書の単純な構築法と、グラフの大きさや領域分割にかかる時間
を比較してください。
2.グラフカットによる領域分割のために、ユーザーインタフェースを作るか、ユーザ
ーが領域を選択するのを模擬してください。それから、重みに大きな値を設定して
、強制的に背景と前景を設定してください。
3.グラフカットによる領域分割において、特徴量ベクトルをRGB値のベクトルから
他の記述子に変更してください。領域分割結果を改善できますか?
4.現在の領域分割結果を次の前景と背景のモデル学習に用いる「繰り返し型の
領域分割」を実装してください。本章で用いた画像について領域分割の品質を向
上できますか?
![Page 49: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/49.jpg)
3.4 演習問題
5.マイクロソフトリサーチのGrabCutデータセットには、領域分割の正解デ
ータが含まれています。領域分割の誤差を測定する関数を実装して、設
定の違いや演習問題1.~4.のアイデアを評価してください。
6.正規化カットのエッジの重みのパラメータを変更して、固有ベクトルと領
域分割結果にどのような影響があるか調べてください。
7.正規化カットの第1固有ベクトルに画像勾配を計算してください。この勾
配画像を組み合わせて物体の画像輪郭を検出してください。
8.Chan-Vese領域分割のノイズ除去画像の閾値を線形探索するプログラ
ムを実装してください。閾値ごとにエネルギーE(Γ)を保存して、最小値に
なる場合の領域分割を選びます。
![Page 50: 実践コンピュータビジョン 9章 画像の領域分割](https://reader034.vdocuments.net/reader034/viewer/2022052218/558bcca3d8b42ab20b8b45b7/html5/thumbnails/50.jpg)
終了
ご清聴ありがとうございました!