示例#1
0
        Vec3 sumInRegion(Config config, Kernel k, Func <Position, Vec3> pos2val)
        {
            var result = new Vec3(0, 0, 0);

            For.AllPixelsOfRegion(config, k, (_, i) =>
            {
                result += pos2val(i);
            });
            return(result);
        }
示例#2
0
        double sumInRegion(Config config, Kernel k, Func <Position, double> pos2val)
        {
            double result = 0;

            For.AllPixelsOfRegion(config, k, (_, i) =>
            {
                result += pos2val(i);
            });
            return(result);
        }
示例#3
0
        int index(Config config, Position i, Kernel k)
        {
            int rx = (int)(4 * config.rx + 1);
            int ry = (int)(4 * config.ry + 1);
            int ox = -(int)(1.5 * config.rx);
            int oy = -(int)(1.5 * config.ry);
            int x  = (int)i.p.x - k.xi - ox;
            int y  = (int)i.p.y - k.yi - oy;
            int w  = (int)(4 * config.rx + 1);
            int h  = (int)(4 * config.ry + 1);

            if (0 <= x && x < w && 0 <= y && y < h)
            {
                return(x + y * (int)(4 * config.rx + 1));
            }
            return(-1);
        }
示例#4
0
        double calcGaussian(Kernel k, Position i)
        {
            var dpos    = i.p - m[k.index];
            var invS    = S[k.index].Inverse();
            var posTerm = -0.5 * dpos * invS * dpos;
            var dcol    = c[i.index] - v[k.index];
            var colTerm = -Vec3.DistanceSqr(c[i.index], v[k.index]) / (2 * s[k.index] * s[k.index]);

            try
            {
                double val    = Math.Max(-1e2, Math.Min(1e2, posTerm + colTerm));
                var    result = Math.Exp(val);
                System.Diagnostics.Debug.Assert(double.IsNaN(result) == false);
                return(result);
            }
            catch (Exception ex)
            {
                return(0);
            }
        }
示例#5
0
 double[] g(Kernel k)
 {
     return(g_[k.index]);
 }
示例#6
0
 double[] w(Kernel k)
 {
     return(w_[k.index]);
 }