[SciPy] 20. spatial.distanceのeuclideanで画像上の物体間のユークリッド距離を求める

matplotlib

はじめに

scipy.distanceのeuclideanにより画像中の物体間のユークリッド距離を求める方法について説明する。

コード

解説

モジュールのインポート

バージョン

データの読み込み

下記サイトの画像を用いる。

宇宙ペンギンのイラスト
いらすとやは季節のイベント・動物・子供などのかわいいイラストが沢山見つかるフリー素材サイトです。

RGBAをRGBに変換し、グレースケール化してからubyte形式に変換する。

大津の2値化

大津の2値化でバイナリ画像とし、openingで微小なノイズ部分を消去する。結果は下図のようになる。

2値化像のラベリング

skimageのlabelでラベルイメージを作成して表示する。ラベルナンバーを各ラベル領域に表示しているが、最小値が2となっている。これはclear_borderで除去した部分がラベルナンバー1となっているためとなっている。

ペンギンらのユークリッド距離を求める

ペンギンの重心を求める

ペンギンの腹の重心をregionpropsで取得したデータのcentroidから求める。

ユークリッド距離の計算

distance.euclideanで各ペンギン間の距離を求める。

ラベル画像上に表示

元画像上に表示

まとめて表示

左上が画像のグレースケール像で、右上が2値化像、左下がラベル像で、右下がオリジナル画像上にペンギン間のユークリッド距離を表示した結果となっている。

コードをダウンロード(.pyファイル)

コードをダウンロード(.ipynbファイル)

参考

Distance computations (scipy.spatial.distance) — SciPy v1.7.1 Manual
宇宙ペンギンのイラスト
いらすとやは季節のイベント・動物・子供などのかわいいイラストが沢山見つかるフリー素材サイトです。

コメント