imgproc_distanceTransform

[32/64bit] 入力画像の各ピクセルについて,最も近い0ピクセルまでの距離を計算します.

imgproc_distanceTransform p1,p2,p3,p4,p5

p1 = sptr : IntPtr src
p2 = sptr : IntPtr dst
p3 = int : int distanceType
p4 = int : int maskSize
p5 = int : int dstType

(プラグイン / モジュール : OpenCvSharpExtern.dll)

解説

関数 cv::distanceTransform は,2値画像の各ピクセルから,最も近い0ピクセルまでのおおよその,あるいは正確な距離を計算します.maskSize == DIST_MASK_PRECISE かつ distanceType == DIST_L2 の場合,この関数は [72] で述べられているアルゴリズムを実行します.このアルゴリズムは,TBB ライブラリによって並列化されています.その他の場合は,アルゴリズム [28] が利用されます.つまり,この関数は,あるピクセルに対して,水平,垂直,斜め,騎士の動きという基本的なシフトからなる,最も近い0ピクセルへの最短経路を求めます(最新のものは,\\のマスクで利用可能です).全体の距離は、これらの基本的な距離の合計として計算されます。距離関数は対称でなければならないので、水平方向と垂直方向のシフトはすべて同じコスト(aと表記)でなければならず、対角線方向のシフトはすべて同じコスト(bと表記)でなければならず、ナイトの動きはすべて同じコスト(cと表記)でなければなりません。DIST_C と DIST_L1 では、距離は正確に計算されますが、DIST_L2 (Euclidean distance) では、距離は相対的な誤差でしか計算できません (mask を使うとより正確な結果が得られます)。a,b,c に対して,OpenCV は原著論文で提案された値を使用します: DIST_L1: a = 1, b = 2


DIST_L2: a = 1, b = 2:


3×3: a=0.955, b=1.3693


5×5: a=1, b=1.4, c=2.1969








DIST_C: a = 1, b = 1通常、高速で粗い距離推定DIST_L2には、??? -? ???のマスクを使用する。より正確な距離推定DIST_L2のためには、\(5\)マスクや精密アルゴリズムを用いる。この関数は,各ピクセルの最小距離\((x, y)\)を計算するだけでなく,0個のピクセルで構成される最近接連結成分(labelType==DIST_LABEL_CCOMP)や最近接0ピクセル(labelType==DIST_LABEL_PIXEL)を特定します.labels(x, y)には,成分・画素のインデックスが格納されます.labelType==DIST_LABEL_CCOMP の場合,この関数は,入力画像中のゼロピクセルの連結成分を自動的に見つけ,それらに個別のラベルを付けます.labelType==DIST_LABEL_PIXEL の場合,この関数は入力画像を走査し,すべての0ピクセルを個別のラベルでマークします.このモードでは,複雑さは線形です.つまり,この関数は,2値画像のボロノイ図を非常に高速に計算する方法を提供します.現在のところ,2番目のモードでは,近似距離変換アルゴリズムしか利用できません.つまり, maskSize=DIST_MASK_PRECISE はまだサポートされていません.

元関数名(C#): imgproc_distanceTransform
元DLLエクスポート名: imgproc_distanceTransform
参照元CSファイル: Internal\PInvoke\NativeMethods\imgproc\NativeMethods_imgproc.cs
▼ C言語側関数定義
CVAPI(ExceptionStatus) imgproc_distanceTransformWithLabels(cv::_InputArray *src, cv::_OutputArray *dst,
                                                cv::_OutputArray *labels, int distanceType, int maskSize,
                                                int labelType)
{
    BEGIN_WRAP
    cv::distanceTransform(*src, *dst, *labels, distanceType, maskSize, labelType);
    END_WRAP
}

情報

プラグイン / モジュールOpenCvSharpExtern.dll
バージョン1.00
作成日2021/11/30
著作者inovia
URLhttps://hsp.moe/
備考#include "OpenCvSharpExtern32.as"
#include "OpenCvSharpExtern64.as"
使用するHSPランタイムのビット数に合わせたインクルードファイルを使用すること
タイプOpenCVSharpラッパーDLL
グループNativeMethods_imgproc
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\OpenCvSharpExtern.hs