
73
3.7 エレガントな ndimage:画像領域からグラフを構築する方法
from skimage.future import graph
g = graph.rag_mean_color(tiger, seg)
graph.show_rag(seg, g, tiger);
■
上の画像では、各セグメントに対応するノードと、隣接するセグメントを結合するエッジが見え
ます。エッジは、
2
つのノードの色の差に応じて、
Matplotlib
の
YlGnBu
(黄
-
緑
-
青)のカラー
マップで色付けされています。
また、上の画像は、領域分割をグラフと捉えたことで可能になる技も表しています。トラの内側
と外側にまたがるノード間のエッジの色が、同じ対象物の内部にあるノード間のエッジの色よりも
明度が高い(値が大きい)ことがわかります。したがって、明度の高いエッジが結合するセグメン
ト間の境界でグラフを切断すれば、望み通りの領域分割が得られるわけです。ここでは色に基づい
た簡単な領域分割の例を取り上げましたが、より複雑な関係を持つ対のグラフにも、同じ原理が成
り立ちます。
3.7
エレガントな
ndimage
:画像領域からグラフを構築する方法
以上で
NumPy
配列、画像のフィルタリング、汎用性のあるフィルタ、グラフ、
RAG
について
学んだので、必要な知識がすべてそろいました。では早速、トラを画像から抜き出す方法を構築し
てみましょう。
すぐに思い付く方法は、ネストした
2
つの
for
ループを使って、画像のすべてのピクセル上を
反復し、近傍のピクセルを調べて、異なるラベルを探すものです。 ...