【问题标题】:Which sigmoid function to use for increasing contrast of an image?使用哪个 sigmoid 函数来增加图像的对比度?
【发布时间】:2020-04-22 23:23:01
【问题描述】:

是否有用于增加灰度位图对比度的标准 sigmoidal 函数?

目前我正在使用以下内容。这将应用于以 0 和 1 之间的值表示的灰度级。

static double ContrastCurve(double val, double k = 1)
{
    Func<double,double> logistic_func = (double x) => 1.0 / (1.0 + Math.Exp(-k * (x - 0.5)));
    var low = logistic_func(0);
    var high = logistic_func(1);
    var range = high - low;
    var value = logistic_func(val);
    return (value - low) / range;
}

这是 the logistic function 应用于 0 和 1 之间的值,输出标准化,因此输出也在 [0...1] 中。这个函数是有效的,但它是完全任意的,我只是编造的,所以k 参数在图像处理文献等中没有正式的名称或含义。

如果有一个标准的功能,我会更喜欢它,但还没有找到任何似乎确定的功能。像as this link 这样的代码对我来说似乎是临时的。

【问题讨论】:

标签: image-processing contrast math-functions


【解决方案1】:

正如 Mark Setchell 的评论所说,ImageMagick 使用以下函数引用 "Fundamentals of Image Processing", Hany Farid

g(u) = 1 / [1 + exp(-α*u + β)]

缩放使得域 [0..1] 的范围为 [0..1]。

这本质上是上面问题代码中定义的函数的双参数版本,即问题中的代码实现了相同的函数,但替换了α = kβ = -k/2,这产生了一个参数函数@987654326 @ 其中f(0.5) = 0.5 缩放为f(0) = 0f(1) = 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-17
    • 2014-10-01
    • 2013-12-17
    • 2017-01-11
    • 1970-01-01
    • 2011-05-07
    相关资源
    最近更新 更多