此函数的文档根本没有用或没有帮助。“锐化”、“对比度”和“中点”不是参数的名称,参数被称为“alpha”和“beta”。
ImageMagick 手册条目
对于感兴趣的人,“S 型非线性对比度控制”的修正公式是……
( 1/(1+exp(β*(α-u))) - 1/(1+exp(β)) ) / ( 1/(1+exp(β*(α-1))) - 1/(1+exp(β*α)) )
其中 α 是阈值,β 是要应用的对比度因子。
该公式实际上是一个非常简单的指数曲线,上述公式的大部分内容旨在确保 0 保持为零,而 1 保持为一。也就是说,该图始终经过点 0,0 和 1,1。并且变化的最大梯度在给定的阈值处。
来源:https://imagemagick.org.cn/Usage/color_mods/#sigmoidal
在 Imagick 扩展源代码中,函数调用为
status = MagickSigmoidalContrastImageChannel(intern->magick_wand, channel, sharpen, alpha, beta);
来源:https://github.com/mkoppanen/imagick/
参考回二进制 API 调用给出
foreign import ccall "MagickSigmoidalContrastImageChannel" magickSigmoidalContrastImageChannel
:: Ptr MagickWand
-> ChannelType -- ^ 标识要调整哪个通道:`redChannel`、`greenChannel`
-> MagickBooleanType -- ^ 增加或减少图像对比度
-> CDouble -- ^ 对比度的强度,数字越大,“阈值”特性越明显
-> CDouble -- ^ 函数的中点作为颜色值 0 到 `quantumRange`
-> IO MagickBooleanType
来源:http://hackage.haskell.org/package/imagemagick-0.0.2/docs/src/Graphics-ImageMagick-MagickWand-FFI-WandImage.html
因此,参数显然应该解释为
锐化:0/1(增加/减少对比度)
Alpha:对比度强度(通常为 3-20)
Beta:对比度中点(通常为 50)