はじめに
本記事ではSciPyライブラリのndimage.morphology.distance_transform_edt関数を使用して、画像内の物体から背景までのユークリッド距離を計算する方法について解説します。この技術は画像処理において物体の形状分析や特徴抽出に役立つ手法です。具体的なコード例と実践的な応用例を通して、距離変換の基本から応用までを学ぶことができます。
コード

解説
モジュールのインポート
データの生成
np.indices((60, 60))で座標インデックスを要素として持つ配列を生成します。
mask_circle1 = (x – x1)**2 + (y – y1)2 < r12 は、座標(x1, y1)を中心とする半径r1の円内部がTrueとなるブール配列を作成します。
np.logical_or(mask_circle1, mask_circle2)で配列の各要素に対して論理OR演算を行い、2つの円が合体したような形状を生成します。
同様に、np.logical_or(image, mask_circle3)で3つ目の円を加えて合体させます。結果の画像は以下のようになります。

ユークリッド距離の計算
ndi.distance_transform_edt(image)はimageの背景からの距離を計算します。これにより、黒い部分(背景)から離れている各円の中心ほど距離値が大きくなるため、対応する要素の値も大きくなります。
3Dグラフで可視化
distanceを負の値にすることで、グラフが上に凸の形状になるようにしました。
円錐

四角錐

参考
scipy.ndimage.morphology.distance_transform_edt — SciPy v0.14.0 Reference Guide
コメント