我正在尝试将用于锐化图像的photoshop设置转换为graphicsmagick . 因此我发现这篇有用的文章:https://redskiesatnight.com/2005/04/06/sharpening-using-image-magick/

问题是,如果我使用photoshopgick文章中解释的photoshop等效值,那么图像就不像在photoshop中那样清晰明了 .

例如,我在photoshop上使用此设置:强度:500%半径:2.0像素阈值:8

在文章中,参数解释如下:

radius参数radius参数指定(官方文档)“高斯半径,以像素为单位,不计算中心像素”与许多其他图像处理过滤器一样,反锐化屏蔽是卷积内核操作 . 滤镜逐像素处理图像 . 对于每个像素,它检查围绕它的像素块(内核)并对它们进行一些计算以渲染输出像素值 . 半径参数确定在卷积核心中将考虑围绕中心像素的哪些像素:(想到圆圈)半径越大,每个单独像素需要处理的像素越多 . Image Magick的半径类似于Photoshop,GIMP和其他图像编辑器中的相同参数 . 实际上,它会影响“光晕”的大小,以增加沿图像边缘的对比度,增加锐度,从而增加明显的锐度 . 你怎么知道半径有多大?一方面,它取决于您的输出目标分辨率 . 它还取决于您的个人喜好,以及手头图像的特定需求 . 就分辨率问题而言,GIMP用户手册建议将非锐化掩模半径设置如下:radius =(输出ppi / 30)* 0.2这与另一个常见的经验法则非常相似:

radius = output ppi / 150因此,对于分辨率为72 PPI的显示器,您使用的半径约为0.5;如果你的目标是打印机
在300 PPI时,您使用的值为2.0 . 以这些为出发点;不同的图像具有不同的锐化要求,个人偏好也是一个考虑因素 . [旁白:网上有一些帖子(包括本文中提到的一些帖子)表明Image Magick接受但不尊重小数半径;也就是说,如果您指定半径为0.5或1.2,它将被舍入,或者默认为整数,或者被忽略,等等 . 这不是真的,至少从版本5.4.7开始,这是我的一个使用我写这篇文章 . 您可以通过执行以下操作轻松查看:$ convert -unsharp 1.2x1.2 5 0 test.tif testo1.tif $ convert -unsharp 1.4x1.4 5 0 test.tif testo2.tif $ composite -compose difference test01.tif testo2.tif diff.tif $ display diff.tif你也可以将它们加载到GIMP或Photoshop中的不同图层,并将混合模式改为“差异”;生成的图像不是黑色(您可能需要仔细查看0.2的半径差异) . 不,这种错误的印象可能来自于半径和西格玛参数之间存在关系的事实,并且如果您没有相对于半径正确指定西格玛,则半径可能确实会改变,或者至少不能按预期工作 . 请继续阅读 . 请注意,默认半径(如果没有指定任何内容)是0,这是一个特殊值,它告诉非锐化掩码算法“为半径选择合适的值”! sigma参数sigma参数指定(官方文档)“高斯的标准偏差,以像素为单位”这是四个中最令人困惑的参数,可能是因为它在其他实现的反锐化掩模中是“不可见的”,并且它是最多的稀疏记录 . 我找到的最好的解释来自谷歌搜索,它发现了一个存档的邮件列表线程,其中包含以下代码:比较转换结果-unsharp 1.2x1 4 0 test test1.2x1 4 0和convert -unsharp 30x1 4 0 test test30x1 4 0没有显着差异,但后者需要大约 . 完成时间长50倍 . 这并不奇怪 . 半径30涉及每个输出像素的卷积中的61×61输入像素的量级 . 半径为1.2涉及3x3或5x5像素 . 请任何人给我任何提示,'sigma'是什么意思?它描述了像素的相对权重作为它们与卷积核心的距离的函数 . 对于小sigma,外部像素的重量很小 . 另一个重要线索来自转换-unsharp选项的文档(强调我的):-unsharp选项锐化图像 . 我们用给定半径和标准偏差(sigma)的高斯算子对图像进行卷积 . 为获得合理的结果,半径应大于西格玛 . 使用半径0可使方法选择合适的半径 . 结合这两条线索提供了一些很好的见解:sigma是一个给你的参数当你从卷积矩阵的中心的给定像素辐射到由半径定义的极限时,一些控制锐化的强度(由量参数给出)是“渐变的”还是减小的 . 我的测试证实了这个推断的结论,即更大的sigma会导致给定半径更明显的锐化 . 这就是为什么邮件列表问题中的海报(上图)在锐化方面没有看到任何显着差异,即使他使用了400%(!!)和0%的阈值;只有1.0的sigma,尽管两次调用之间的半径差异很大,但滤波器的强度下降太快而无法被注意到 . 这也是为什么手册页上写着“为了得到合理的结果,半径应该大于sigma”;如果不是,那么sigma参数没有按照设计的渐变效果,将光晕“软化”到它们的边缘;相反,它只是将数量均匀地应用到半径的边缘(在某些情况下可能是你想要的) . 选择sigma的一般经验法则可能是:如果radius <1,则sigma = radius else sigma = sqrt(radius)摘要:首先选择半径,然后选择小于或等于sigma的sigma . 实验将产生最好的结果 . 请注意,默认的sigma(如果没有指定任何内容)是1.0 . 这就是为什么大多数人没有看到Image Magick的非锐化遮罩操作符效果的主要原因,因为如果他们使用更大的半径,他们会使用非锐化遮罩的其他实现:除非你提高这个参数你没有得到充分受益于更大的半径! [旁白:你可能想知道如果指定sigma大于半径会发生什么 . 正如文件所述,答案是结果可能不合理 . 在我的测试中,通常的结果是锐化以指定的量扩展到指定半径的边缘,而更大的sigma值几乎没有效果 . 在某些情况下(例如,对于半径<0),指定较大的西格玛增加了有效半径(例如,增加到1);这可能是对代码中参数进行“健全性检查”的结果 . 在任何情况下,请记住算法是为sigma设计的,小于或等于半径,如果另外使用,结果可能是意外的 . ] amount参数amount参数指定(官方文档)“百分比原始图像和模糊图像之间的差异被添加回原始图像中“量参数可以被认为是锐化的”强度“:较高的值会增加光晕中的对比度而不是较低的值 . 非常大的值可能会导致光晕上的高光爆炸或阴影遮挡 . 如果发生这种情况,请考虑使用较低半径的较低量 . 金额应指定为表示百分比的十进制值 . 因此,例如,如果在Photoshop中你会使用170(170%)的数量,在Image Magick中你会使用1.7 . 请注意,默认金额(如果您未指定任何内容)为1.0(即100%) . 阈值参数阈值参数指定(官方文档)“作为MaxRGB的一小部分,需要应用差异量”阈值指定应用本地所需的卷积内核中的中心像素与环绕像素之间的最小差异量对比增强 . 增加此值会导致算法对可能定义边的差异变得不那么敏感 . 通常使用指定正阈值来避免锐化可能包含噪声的平滑区域(例如蓝天区域) . 如果您有嘈杂的图像,请强烈考虑提高阈值,或使用某种智能锐化技术 . 阈值参数应指定为表示此百分比的十进制值 . 这与GIMP或Photoshop不同,GIMP或Photoshop都指定实际像素级别的阈值在0和最大值之间(对于8位图像,255) . 请注意,默认阈值(如果您未指定任何内容)为0.05(即5%;这对应于Photoshop中的.05 * 255 = 12-13的阈值) . Photoshop使用默认阈值0(即无阈值),并且在整个图像中均匀地应用反锐化掩模 . 如果这是你想要的,你需要为Image Magick的阈值指定0.0值 . 这无疑是Image Magick锐化算法混淆的另一个原因 .

所以我这样做了并且达到了这个命令:

gm convert file1.jpg -unsharp 2x1.41+5+0.03 file1_2x1.41+5+0.03.jpg

但就像我说的那样,图像并没有像在Photoshop中那样锐利 . 我们还尝试了许多其他值,但没有良好的图像 . 那么有可能用photosmagick做Photoshop改镜吗?或者它只是一个不好的图书馆?仅仅使用photoshop进行锐化的主要问题是我们想要改进我们的linux服务器上的图像并且photoshop运行不是很好在linux上 .