1

CSS アルゴリズムについて勉強していますが、「アーク長パラメーター」の概念がわかりません。

文献によると、平面曲線 Gamma(u)=(x(u),y(u)) であり、この u はアーク長パラメーターであり、ガウス カーネル g もこの u によってパラメーター化されているとのことです。

私が何か間違っていたら止めてください、しかし、ピクセルの x と y の位置ではありませんか? 別のパラメータでどのように表されますか?

文献で最初に見たときはわからなかったので、コードを調べました。どうやら、私はさらに戸惑いました。

ここにコードの一部があります

    void getGaussianDerivs(double sigma, int M, vector<double>& gaussian,                       
                           vector<double>& dg, vector<double>& d2g) {
        int L = (M - 1) / 2;
        double sigma_sq = sigma * sigma;
        double sigma_quad = sigma_sq*sigma_sq;
        dg.resize(M); d2g.resize(M); gaussian.resize(M);

        Mat_<double> g = getGaussianKernel(M, sigma, CV_64F);
        for (double i = -L; i < L+1.0; i += 1.0) {
        int idx = (int)(i+L);
        gaussian[idx] = g(idx);
            // from http://www.cedar.buffalo.edu/~srihari/CSE555/Normal2.pdf
        dg[idx] = (-i/sigma_sq) * g(idx);
        d2g[idx] = (-sigma_sq + i*i)/sigma_quad * g(idx);
        }
    }

そのため、コードは M の単純な 1D ガウス カーネル アパーチャ サイズを使用しているようで、その 1 次導関数と 2 次導関数を計算しようとしています。私の知る限り、1D Gaussian カーネルには、水平座標である x とスケールである sigma のパラメーターがあります。「弧長パラメータu」はxの変数に相当するようです。コードの後半で、輪郭上の x と y のセットを直接畳み込むため、これは意味がありません。

これは何ですか?

PS。私の質問に答えようとした仲間に返信したので、質問を修正する必要があると思います。

私が混乱しているのは、このパラメーター 'u' がコードにどのように実装されているかということです。上記のコード全体を理解したと思います-もちろん、コードの一部のみを挿入しました-しかし、問題は、アルゴリズムの「改善された」バージョンでそれがどうなるかわかりません。この「アーク長パラメーター」の代わりに「アフィン長パラメーター」を使用していると書かれており、その概念をコードに実装する方法がよくわかりません。

文献によると、アーク長パラメーターとアフィン長パラメーターの主な違いは、サンプリング間隔であり、アーク長パラメーターは垂直方向と水平方向に 1 を使用し、対角方向に 2 の根を使用します。上記のコードの一部は for ループを使用して 1d Gaussian の 1 次導関数と 2 次導関数を計算し、間隔 1 の値を直接挿入しているので意味がありますが、異なる変数で異なる間隔を使用するとどうなるでしょうか? 「for ループ」を使用できない可能性はありますか?

4

0 に答える 0