Image 合并EXR图像

Image 合并EXR图像,image,imagemagick,openexr,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

我在合并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瓷砖可在此处找到: (这些是“输入瓦…exr”)

有什么想法吗?

我不是EXR格式图像的专家(好吧,我甚至从未见过任何)但我知道
VIP
能够处理它们。我甚至不知道你的照片是什么样子,但我想/希望这可能是你想要的

首先,我检查您的图像,看到它们是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"
然后我执行
左-右连接
,以获得所需结果的顶行:

vips im_lrjoin *0.exr *1.exr top.v
vips im_lrjoin *2.exr *3.exr bot.v
然后我执行另一个
左-右连接
,以获得所需结果的最后一行:

vips im_lrjoin *0.exr *1.exr top.v
vips im_lrjoin *2.exr *3.exr bot.v
然后我执行一个
上下连接
来连接顶部和底部以获得最终结果:

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"
注释

  • xyz.v
    格式是
    vips
    的内部高效图像格式

  • vips
    可与多种语言绑定-请参阅
    vips
    网站

  • 它可能能够缓存我创建的中间文件(
    top.v
    bot.v
    ),但我不知道如何缓存

  • vips
    维护人员开启了@user894763,他可能会对我的沉思有更多的了解-希望如此


  • 适用于
    ImageMagick 6.9.1-6 Q16 x86642015-06-26
    我使用
    convert-size 400x225 xc:red a1.exr
    convert-size 400x225 xc:blue a2.exr
    等创建了输入文件。我讨论了多层exr@MarkSetchell。您的输入只有一层。请分享您的。我怀疑多层EXR不受支持,但很高兴被证明是错误的。。。嗨,马克!看起来不错。vips8的方式是
    vips join 0000.exr 0001.exr top.v horizontal
    ,这样会快一点。VIP没有exr写入,您需要使用RAD或PFM或TIFF进行输出。如果希望避免创建两个中间映像,则需要使用Ruby/Python/Javascript/which绑定。@user894763再次感谢您的输入。缺少EXR编写器可能会使这一特定练习的目标落空:-(很好的答案@MarkSetchell.似乎充满希望。我做你所有的操作(无论版本如何,我有vips7)。那么现在,我如何打开这个“vips”格式?或者更好:如何将其“翻译”为EXR?@pierallard,使用最新的imagemagick,你可以使用“转换”要将VIP更改为exr,或者您可以从VIP中编写类似.tif的内容。我认为您的输入图像都是黑色的,因此您将获得黑色输出。