gpt4 book ai didi

command-line - 如何使用 ImageMagick 自动裁剪桶形失真图像?

转载 作者:行者123 更新时间:2023-12-04 05:03:04 24 4
gpt4 key购买 nike

使用 ImageMagick 的 convert 对照片进行桶形扭曲以校正强烈可见的枕形失真,我提供正的 a、b 或 c 值(来 self 的镜头 + 焦距的数据库)。这导致图像被校正,具有原始宽度和高度,但包括非矩形、弯曲/扭曲的边界,因为图像被校正到其中心。简化示例:

convert rose: -virtual-pixel black -distort Barrel '+0.0 +0.1 +0.0' out.png

如何自动将黑色弯曲边框裁剪成玫瑰中原始纵横比最大的矩形?

enter image description here

ImageMagick 网站说,参数“d”是自动计算的,可以做到这一点(导致线性失真有效地放大图像并将弯曲的边框推到图像边界之外),但是 imagemagick 计算的值似乎针对不同的东西(ubuntu 12.04 上的 v6.6.9)。如果我猜测并手动指定一个“d”,我可以获得预期的结果:

convert rose: -virtual-pixel black -distort Barrel '+0.0 +0.1 +0.0 +0.6' out.png

给定的公式 a+b+c+d=1 似乎不适合我的裁剪案例。此外,d 似乎取决于图像的纵横比,而不仅仅是 a/b/c。如何让 ImageMagick 裁剪图像,或者如何计算适当的 d?

更新

我发现 Fred 的 ImageMagick 脚本 innercrop ( http://www.fmwconcepts.com/imagemagick/innercrop/index.php ) 可以满足我的需要,但也有缺点,对我来说不是解决方案。它假设任意外部区域,因此需要很长时间才能找到裁剪矩形。它在 Unix 管道中不起作用,并且不保持原始纵横比。

更新 2

考虑到这个问题,我认为计算“d”并不是解决方案,因为改变 d 或多或少会引入弯曲,而且似乎不仅仅是缩放。由 imagemagick 计算的 d=1-(a+b+c) 导致弯曲图像接触上/下边界(对于风景图像)或左/右边界(对于肖像图像)。所以我认为正确的解决方案是计算新的 4 个角中的一个将被赋予 a/b/c/d 的位置,然后裁剪到这些新角。

最佳答案

按照对文档的理解,您不使用逗号分隔桶形失真运算符的参数。

这是一个示例图像,以及您给出的两个命令的输出:

convert o.png -virtual-pixel black -distort Barrel '+0.0 +0.1 +0.0' out0.png
convert o.png -virtual-pixel black -distort Barrel '+0.0 +0.1 +0.0 +0.6' out1.png

我创建示例图像是为了更好地可视化您可能想要实现的目标。

但是,我没有看到您所说的关于自动计算参数 'd' 的要点,我也没有看到您所说的关于使用 'd=+0.6'< 的效果/em>...

我不确定我是否正确理解了您想要的结果,因此我假设您希望裁剪黄色矩形标记的区域。

左边的图像是由上面的第一个命令创建的 out0.png。为了猜测所需的坐标,我们必须先确定图像尺寸:

identify out0.png
out0.png PNG 700x700 700x700+0+0 8-bit sRGB 36KB 0.000u 0:00.000

中间的图像用白色矩形标记。矩形在那里,所以您可以查看它并告诉我它是否是您要裁剪的区域。右边的图像是裁剪后的图像(没有将其缩放回原始大小)。

这是您想要的吗? 如果是,我可能会更新答案以自动确定所需的裁剪坐标。 (目前我是基于猜测完成的。)


更新

我认为您可能误解了桶形失真操作的目的。它用于校正由相机镜头产生的桶形(轻微)畸变。用于相机、镜头和当前变焦的任何特定组合的 3 个参数 abc 可能会在您的照片中说明EXIF 数据。公式 a+b+c+d = 1 用于新的失真校正图像应与原始(失真)图像具有相同尺寸的情况。

因此,为了模仿桶形校正,我们可能应该使用上面最后一行的第二张图像作为我们的输入:

convert out3.png -virtual-pixel gray -distort barrel '0 -0.2 0' corrected.png

结果:

关于command-line - 如何使用 ImageMagick 自动裁剪桶形失真图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27687224/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com