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=0
sigma=1.0
此外default value for those parameters are
- radius 高斯半径,以像素为单位,不包括中心像素(默认0)。
- sigma 高斯分布的标准偏差,以像素为单位 (默认 1.0).
- 增益 原始图像和模糊图像之间的差异被加回到原始图像中的分数 (默认 1.0)。
- threshold 阈值,作为 QuantumRange 的一部分,需要应用差异量 (默认 0.05).
将 c 代码更正为
MagickUnsharpMaskImage(wand, 0.0, 1.0, 1.0, 0.05);
我有一个下面的 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 andUnsharpMaskImage()
selects a suitable radius for you.
强调我的
你称之为传递radius=0
sigma=1.0
此外default value for those parameters are
- radius 高斯半径,以像素为单位,不包括中心像素(默认0)。
- sigma 高斯分布的标准偏差,以像素为单位 (默认 1.0).
- 增益 原始图像和模糊图像之间的差异被加回到原始图像中的分数 (默认 1.0)。
- threshold 阈值,作为 QuantumRange 的一部分,需要应用差异量 (默认 0.05).
将 c 代码更正为
MagickUnsharpMaskImage(wand, 0.0, 1.0, 1.0, 0.05);