如何将ImageMagick的unsharpMask设置转换为VIPS的vips_sharpen()设置

时间:2016-02-24 13:47:30

标签: linux image-processing imagemagick vips

我目前正在使用ImageMagick来调整大小和锐化图像。由于性能原因,我现在正转向VIPS。

我使用imageMagick的unsharpMask(http://php.net/manual/en/imagick.unsharpmaskimage.php)功能在调整照片大小后对其进行锐化。我目前正在使用以下设置:

Radius: 0
Sigma: .5
Amount: .25
threshold: .008

vips_sharpen(http://www.vips.ecs.soton.ac.uk/supported/7.42/doc/html/libvips/libvips-convolution.html#vips-sharpen)有许多其他参数,我试图复制相同的锐化结果。

有谁知道一个简单的方法来计算imagemagick非锐化掩模设置的VIPS翻译?必须有某种公式?

1 个答案:

答案 0 :(得分:0)

此问题已在vips问题跟踪器中讨论过:

https://github.com/jcupitt/libvips/issues/393

但简单地说:

  • radius与IM中的sigma相同。 vips根据sigma设置为您选择一个半径。
  • x1对应threshold,但缩放比例不同。 vip one是在L *差分图像上计算的,我猜IM的范围是0-1,所以(可能是?)将IM值乘以100。
  • y2y3似乎没有IM等价物。它们在打印时很有用,可以限制你在边缘上出现的晕圈量,我不知道它们对于屏幕输出有多大用处。默认值可能是合理的,但您可以尝试将其关闭。
  • m1(我认为)在IM中总是为零,你可以尝试将其设为一个较小的值,它可以使平坦区域到边缘区域的过渡不那么刺耳。
  • 我认为,
  • m2相当于amount,但缩放可能不同。

还有一些其他差异。 Vips只在CIELAB的L *上运行,也就是说,它只是对亮度通道的锐化,并且它在感知上是均匀的。 vips one真的是专为胶印工作而设计的,因此目前很难对屏幕进行更温和的调整。现在有一些补丁可以使vips_sharpen()更适合显示输出。

总结:可能没有完美的参数匹配,因为底层运算符相当不同。