2015-06-26 4 views
1

У меня возникли проблемы с объединением EXR. С PNG или чем-нибудь еще, никаких проблем (с ImageMagick).Комбинировать EXR-изображения

У меня 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.

Edit: В 4 EXR плитки можно найти здесь: https://www.dropbox.com/sh/p6h8kh5wlroy5bb/AACMuR8WieZ-SqB3qXHFwk_ea?dl=0 (Это "imput_tile ... EXR").

Любая идея?

+0

Прекрасно работает с 'ImageMagick 6.9.1-6 Q16 x86_64 2015-06-26' –

+0

Я создал свои входные файлы с' конвертировать -size 400x225 хс: красный a1.exr' и 'конвертировать -size 400x225 хс : blue a2.exr' и т. д. –

+0

Я говорю о многослойном EXR @MarkSetchell. Ваши входы имеют только 1 слой. – pierallard

ответ

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 «S внутренний, эффективный формат изображения

  2. vips доступен с креплениями на многих языках - см vips сайт here.

  3. Это может быть в состоянии кэшировать промежуточные файлы я создаю (top.v и bot.v), но я понятия не имею, как

  4. vips Сопровождающий находится на SO, как @ user894763, и он может быть в состоянии бросить более свет на мои размышления - надеюсь!

+0

Привет, Марк! Выглядит хорошо. Способ vips8 - 'vips join 0000.exr 0001.exr top.v horizontal', это будет немного быстрее. vips не имеет записи exr, вам нужно использовать RAD или PFM или TIFF для вывода. Если вы хотите избежать создания двух промежуточных изображений, вам нужно использовать Ruby/Python/Javascript/любые привязки. – user894763

+0

@ user894763 Еще раз спасибо за ваши данные. Отсутствие сценария EXR, возможно, скорее поражает объект этого конкретного упражнения :-( –

+0

Хороший ответ @MarkSetchell. Кажется полным обещаний. Я делаю все ваши операции (независимо от версии, у меня есть vips7). Так что теперь, как я могу откройте этот «vips» формат? Или лучше: как «перевести» его на EXR? – pierallard

Смежные вопросы