结合EXR图像

时间:2015-06-26 17:41:09

标签: image imagemagick openexr

我遇到了一些将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

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

我对使用任何语言或任何软件的任何解决方案持开放态度,使用Debian。

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

有什么想法吗?

1 个答案:

答案 0 :(得分: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维护者在@用户894763上就可以了,他可能会对我的思考有所了解 - 希望如此!