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

matplotlib

はじめに

この記事では、SciPyライブラリのspatial.distanceモジュールにあるeuclidean関数を使って、画像上の物体間のユークリッド距離を計算する方法について解説します。画像処理や画像解析において物体間の距離を測定する実用的な手法を紹介しています。

コード

解説

モジュールのインポート

バージョン

データの読み込み

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

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

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

大津の2値化

大津の2値化でバイナリ画像を作成し、opening処理で微細なノイズを除去します。結果は下図の通りです。

2値化像のラベリング

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

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

ペンギンの重心を求める

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

ユークリッド距離の計算

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

ラベル画像上に表示

元画像上に表示

まとめて表示

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

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

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

まとめ

本記事では、SciPyのspatial.distanceモジュールのeuclidean関数を活用して、画像内の物体間の距離を効率的に計算する方法を学びました。この手法は画像解析、オブジェクト追跡、ロボットビジョンなど様々な応用分野で役立ちます。正確な距離測定は、画像処理アプリケーションの精度向上に不可欠な要素です。

参考

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

コメント