概要
OpenCV の cv2.distanceTransform()
で距離変換を行う方法について解説します。
画像における距離の定義
2 つの画素を としたとき、距離関数には次の種類があります。
- ノルム:
- ノルム (マンハッタン距離):
- ノルム (ユークリッド距離):

距離変換
距離変換 (distance transform) とは、2 値画像を入力として、各画素から最も近い画素値 0 までの距離を計算し、距離マップ (distance map) を作成する処理です。
cv2.distanceTransform
公式リファレンス: cv2.distanceTransform
引数
名前 | 型 | デフォルト値 |
---|---|---|
src | ndarray | |
入力画像 (1チャンネル) | ||
distanceType | DistanceTypes | |
距離関数の種類
|
||
maskSize | int | |
距離変換に使用するマスクの大きさ | ||
dstType | DistanceTransformLabelTypes | cv2.DIST_LABEL_CCOMP |
値0の画素のラベル割当て方法
|
返り値
名前 | 説明 | ||
---|---|---|---|
dst | 距離画像 |

In [1]:
In [2]:
セグメンテーションに利用する
2 値画像で接触している物体同士を分離したい場合などに、距離変換が活用できます。

In [3]:

この段階では、コインの端が接触しているため、輪郭抽出を行っても 1 枚ずつを別々の輪郭として認識できません。ここで、距離変換を用いて距離マップを作成し、その距離に応じて 2 値化することで、コインを 1 枚ずつ分離します。
In [4]:


参考文献
- デジタル画像処理 P191 9-2-8
コメント