概要
2画素間の距離を測るアルゴリズムを幾つか紹介します。これらのアルゴリズムは画像処理だけではなく経路探索でも利用出来ます。
距離
ユークリッド距離(二点間距離)
private function euclideanDistance(p1:Point, p2:Point):Number
{
return p2.subtract(p1).length;
}
通常の二点間距離のアルゴリズムになります。
マンハッタン距離(市街地距離)
private function manhattanDistance(p1:Point, p2:Point):Number
{
var p:Point = p2.subtract(p1);
return Math.abs(p.x) + Math.abs(p.y);
}
画素間を4近傍(上下左右)で走査した時の最短距離です。
画素間のx方向の距離とy方向の距離を足しあわせたものがマンハッタン距離になります。
画素間のx方向の距離とy方向の距離を足しあわせたものがマンハッタン距離になります。
チェビシェフ距離(チェス盤距離)
private function chebyshevDistance(p1:Point, p2:Point):Number
{
var p:Point = p2.subtract(p1);
p.x = Math.abs(p.x);
p.y = Math.abs(p.y);
return (p.x > p.y) ? p.x : p.y;
}
画素間を8近傍(上下左右斜め)で走査した時の最短距離です。
画素間のx方向の距離とy方向の距離を求め、距離が長い方がそのままチェビシェフ距離になります。
画素間のx方向の距離とy方向の距離を求め、距離が長い方がそのままチェビシェフ距離になります。
このwikiの更新情報RSS