imgproc_fitEllipseAMS_Point

[32/64bit] 2次元の点の周りに楕円を描く関数です。

imgproc_fitEllipseAMS_Point p1,p2,p3

p1 = var : Point[] points
p2 = int : int pointsLength
p3 = var : out RotatedRect returnValue

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

解説

この関数は,2 次元点の集合にフィットする楕円を計算します.そして,その楕円が内接する回転した矩形を返します.ここでは,[240]で提案された Approximate Mean Square (AMS) が用いられます.楕円の場合、この基底セットは、6つの自由係数の集合である \chi= \left(x^2, x y, y^2, x, y, 1\right) \( A^T=\left\{A_{text{xx}},A_{text{xy}},A_{text{yy}},A_x,A_y,A_0\right} ? ) です。しかし、楕円を指定するには、長軸と短軸の長さ\( (a,b) )、位置\( (x_0,y_0) )、方向\( ????? ) の5つの数字があればよいのです。これは、基底セットには、直線、二次曲線、放物線、双曲線のほか、楕円形の関数もフィットする可能性があるからです。フィットが放物線または双曲線関数であることが判明した場合、標準のfitEllipseメソッドが使用されます。AMS法では、フィットを放物線、双曲線、楕円曲線に限定するために、「A^T ( D_x^T D_x + D_y^T D_y) A = 1 ?????」という条件を課しています。このマトリクスは、セット内の各ポイントに以下のように適用して、行ごとに形成されます。D(i,:)&=Begin{x_i^2, x_i y_i, y_i^2, x_i, y_i, 1\\} & D_x(i,:)&=Begin{2 x_i,y_i,0,1,0,0\\} & D_y(i,:)&=Begin{0,x_i,2 y_i,0,1,0,0嵓}\end{align*}AMS法は、コスト関数を最小化します。\A^T D^T D A }{ A^T (D_x^T D_x + D_y^T D_y) A^T } E\end{equation*}最小コストは、一般化された固有値問題を解くことで求められます。D^T D A = ????? )

元関数名(C#): imgproc_fitEllipseAMS_Point
元DLLエクスポート名: imgproc_fitEllipseAMS_Point
参照元CSファイル: Internal\PInvoke\NativeMethods\imgproc\NativeMethods_imgproc.cs
▼ C言語側関数定義
CVAPI(ExceptionStatus) imgproc_fitEllipseAMS_Point(cv::Point* points, int pointsLength, MyCvBox2D* returnValue)
{
    BEGIN_WRAP
    const cv::Mat_<cv::Point> pointsVec(pointsLength, 1, points);
    *returnValue = c(cv::fitEllipseAMS(pointsVec));
    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