はじめに
ndimage.morphologyのdistance_transform_edtにより、背景からのユークリッド距離を計算する。
コード

解説
モジュールのインポート
データの生成
np.indices((60, 60))、によりインデックスを要素として持つ配列を生成する。
mask_circle1 = (x – x1)**2 + (y – y1)**2 < r1**2 により座標(x1, y1)を中心とする半径r1の円の内部がTrue となるbool配列を得る。
np.logical_or(mask_circle1, mask_circle2)により配列を各要素ごとに論理演算する。これにより円が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
さくらのレンタルサーバ
コメント