0

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

我有一个强度值的一维数组和一个边界框(数组中的整数起点和终点)。我想保持边界框内的值相同,但以指数方式减少框外的值(即它们越远,它们被减少的越多)。应该看起来像一个高斯,在边界框所在的地方有一个高原。谁能举例说明我如何做到这一点?今晚我的大脑不能正常工作,谢谢。

更新:

我用这个:

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)));
}
4

3 回答 3

1

您是在问如何以指数方式减少,任意接近0?

value = 1 / e^(distance)

或者当你进一步向外移动时开始快速增加的东西,即。指数的倒数?

value = ln(distance)

如果您想要与bounded类似的东西(起初快速增加,随着您越来越远而缓慢增加) ,请在 sigmoid 曲线上查看此答案。

于 2011-03-07T20:52:50.310 回答
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? 事实上,最后一个 else 分支可以省略。

于 2011-03-07T20:54:21.803 回答
0

你想从本质上砍掉高斯的驼峰吗?

高斯类似于I = I_0 exp(-aX^2). 您IX边界框宽度为一半。然后你可以玩I_0anda直到你得到你想要的(选择 anI_0来得到相应的a,反之亦然)。

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

于 2011-03-07T20:57:48.693 回答