MagickWand C 的 MagickUnsharpMaskImage 方法是否存在错误?

Is there a bug in MagickUnsharpMaskImage method for MagickWand C?

我有一个下面的 CLI 并尝试使用 magickwand c 获得相同的结果。 一切似乎都很完美,或者不知道可能是我错过了什么,但 MagickUnsharpMaskImage 对我不起作用。检查我的源代码。我还附上了 CLI 和 C API.

生成的源和两个输出图像

CLI

convert testsharp.jpg -unsharp 0x1 unsharpC.jpg

C代码

int main(int argc, char const *argv[]) {
    MagickWand * wand;
    wand = NewMagickWand();
    MagickReadImage(wand, "testsharp.jpg");
    MagickUnsharpMaskImage(wand, 0.0, 1.0, 0.0, 0.0);
    MagickWriteImage(wand, "unsharpW.jpg");
    return 0;
}

源图片

使用 CLI 输出图像

使用 C 输出图像

ImageMagick 版本

版本:ImageMagick 7.0.5-5 Q16 x86_64 2017-05-23 http://www.imagemagick.org

来自the man

MagickUnsharpMaskImage() sharpens an image. We convolve the image with a Gaussian operator of the given radius and standard deviation (sigma). For reasonable results, radius should be larger than sigma. Use a radius of 0 and UnsharpMaskImage() selects a suitable radius for you.

强调我的

你称之为传递radius=0sigma=1.0

此外default value for those parameters are

  1. radius 高斯半径,以像素为单位,不包括中心像素(默认0)。
  2. sigma 高斯分布的标准偏差,以像素为单位 (默认 1.0).
  3. 增益 原始图像和模糊图像之间的差异被加回到原始图像中的分数 (默认 1.0)
  4. threshold 阈值,作为 QuantumRange 的一部分,需要应用差异量 (默认 0.05).

代码更正为

MagickUnsharpMaskImage(wand, 0.0, 1.0, 1.0, 0.05);