指数衰变周围的边界框

时间:2011-03-07 20:47:42

标签: c# gaussian exponential

我真的不知道怎么说这个问题,这很奇怪。

我有一个强度值的1d数组和一个边界框(数组中的整数起点和终点)。我想保持边界框内的值相同,但是以指数方式减小框外的值(即它们离它们越远它们越少)。应该看起来像一个高斯的高斯,在边界框的位置。任何人都可以举例说明我该如何做到这一点?今晚我的大脑不能正常工作,谢谢。

更新:

我用过这个:

if (j < low) a[j] *= Logistic(t*(j + (6f/t) - low));
else if (j > high) a[j] *= Logistic(-t*(j - (6f/t) - high));

private double Logistic(double x)
{
    return (1 / (1 + Math.Exp(-x)));
}

3 个答案:

答案 0 :(得分:1)

您是否指数如何减少,任意接近0?

value = 1 / e^(distance)

或者当你进一步向外移动时,首先快速增加并且缓慢增加的东西,即。指数的倒数?

value = ln(distance)

如果你想要类似的东西(一开始就快速增加,当你越走越慢时)有界,请参阅sigmoid曲线上的this answer

答案 1 :(得分:1)

这样的东西
if (n<low)
  a[n] *=  exp(-t*(low-n));
else if (n>high)
  a[n] *=  exp(-t*(n-high));
else 
  a[n] *=  1.0;

带参数t?实际上可以省略最后一个分支。

答案 2 :(得分:0)

你想要砍掉高斯的驼峰吗?

高斯就像I = I_0 exp(-aX^2)。您的I X位于边框宽度的一半处I_0。然后,您可以使用aI_0,直到获得所需内容(选择a获取相应的X,反之亦然。)

(另外,X偏移到边界框的中心。上面的公式适用于{{1}} = 0。)