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

How to translate ImageMagick's unsharpMask settings to VIPS's vips_sharpen() settings

我目前正在使用 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 转换的简单方法?一定有什么公式?

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

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

但简而言之:

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

还有一些其他的区别。 vips one只是在CIELAB的L*上操作,也就是只是对亮度通道进行了锐化,感知上是均匀的。 vips one 确实是为胶版印刷工作而设计的,因此目前很难对屏幕进行所需的更温和的调整。现在有一些补丁正在进行中,应该会使 vips_sharpen() 更适合显示输出。

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