【问题标题】:Combine EXR images合并 EXR 图像
【发布时间】:2015-09-13 18:11:39
【问题描述】:

我在组合 EXR 时遇到了一些问题。使用 PNG 或其他任何东西,都没有问题(使用 ImageMagick)。

我有 4 张相同大小的图像,应该将它们组合起来以获得更大的图像。每个图像代表更大图像的一部分(左上、右上、左下和右下)。每个图像包含 N 层,其中包含信息(颜色、深度等)。这些层必须在最终图像中组合。

每张图片都有这个签名:

$ identify imput_tile_0001.exr
imput_tile_0001.exr EXR 400x225 400x225+0+0 16-bit DirectClass 2.501MB 0.000u 0:00.000

我尝试 ImageMagick 简单的命令,例如

$ convert +append *.exr out.exr
$ montage *.exr -tile 2x2 -geometry +0+0 out.exr

这些命令返回一个全黑的图像,大小正确,只有一层。

我愿意接受任何使用任何语言或任何软件的解决方案,在 Debian 上工作。

编辑: 可以在这里找到 4 个 EXR 磁贴: https://www.dropbox.com/sh/p6h8kh5wlroy5bb/AACMuR8WieZ-SqB3qXHFwk_ea?dl=0 (这些是“imput_tile...exr”)。

有什么想法吗?

【问题讨论】:

  • 适用于ImageMagick 6.9.1-6 Q16 x86_64 2015-06-26
  • 我使用convert -size 400x225 xc:red a1.exrconvert -size 400x225 xc:blue a2.exr 等创建了我的输入文件。
  • 我谈论的是多层 EXR @MarkSetchell。您的输入只有 1 层。
  • 那么请分享你的。
  • 我怀疑多层 EXR 不受支持,但很高兴被证明是错误的...imagemagick.org/discourse-server/viewtopic.php?t=26741

标签: image imagemagick openexr


【解决方案1】:

我不是(好吧,我什至从未见过)EXR 格式图像的专家,但我知道vips 能够处理它们。我什至无法说出你的图片是什么样的,但我认为/希望这可能是你想要的。

首先,我检查了您的图像,发现它们是 4 个 400x225 像素的波段,像这样

vips im_printdesc input_tile_0000.exr
400x225 float, 4 bands, srgb, setbuf VipsImage (0x7fda0984f000) count=1 9600 bytes
width: 400
height: 225
bands: 4
format: 6 - float
coding: 0 - none
interpretation: 22 - srgb
xoffset: 0
yoffset: 0
xres: 1.000000
yres: 1.000000
filename: "input_tile_0000.exr"

然后我执行left-right join 以获得所需结果的第一行:

vips im_lrjoin *0.exr *1.exr top.v

然后我再做一个left-right join 来得到你想要的结果的最后一行:

vips im_lrjoin *2.exr *3.exr bot.v

然后我做一个top-bottom join 加入顶部和底部得到最终结果:

vips im_tbjoin top.v bot.v result.v

如果我查看它,它似乎具有正确的尺寸以及与您的原件相同的带数和编码:

vips im_printdesc result.v
800x450 float, 4 bands, srgb, openin VipsImage (0x7f975b84d010) count=1
width: 800
height: 450
bands: 4
format: 6 - float
coding: 0 - none
interpretation: 22 - srgb
xoffset: 0
yoffset: 0
xres: 1.000000
yres: 1.000000
filename: "result.v"

备注

  1. xyz.v 格式是vips 内部的高效图片格式

  2. vips 可与多种语言绑定 - 请参阅 vips 网站 here

  3. 它也许能够缓存我创建的中间文件(top.vbot.v),但我不知道如何

  4. vips 维护者以 @user894763 的身份在 SO 上,他可能能够进一步阐明我的想法 - 希望!

【讨论】:

  • 嗨,马克!看起来不错。 vips8方式是vips join 0000.exr 0001.exr top.v horizontal,会快一点。 vips 没有 exr 写入,您需要使用 RAD 或 PFM 或 TIFF 进行输出。如果您想避免创建两个中间图像,则需要使用 Ruby / Python / Javascript / 任何绑定。
  • @user894763 再次感谢您的意见。缺少 EXR 编写器可能会破坏这个特定练习的目标:-(
  • 很好的答案@MarkSetchell。似乎充满了希望。我做你所有的操作(不管版本,我有vips7)。那么现在,我该如何打开这种“vips”格式呢?或者更好:如何将其“翻译”为 EXR?
  • @pierallard 使用最近的 imagemagick,您可以使用“convert”将 vips 更改为 exr,或者您可以从 vips 编写类似 .tif 的内容。我认为你的输入图像都是黑色的,所以你会得到一个黑色的输出。
猜你喜欢
  • 1970-01-01
  • 2011-01-08
  • 2011-04-03
  • 1970-01-01
  • 2019-08-28
  • 2011-07-28
  • 2011-08-21
  • 2015-11-11
  • 1970-01-01
相关资源
最近更新 更多