Читаете 5-й канал TIFF на Python? - PullRequest
0 голосов
/ 28 апреля 2018

У меня есть несколько файлов TIFF, которые являются выходными данными рендерера Maya, и мне нужно объединить их с реальными кадрами. Файлы TIFF имеют 5 каналов, rgba + depth канал для композитинга. Однако все библиотеки загрузки TIFF, которые я пробовал, похоже, отбрасывают 5-й уровень.

Есть ли способ загрузить это с остальной частью изображения?

1 Ответ

0 голосов
/ 28 апреля 2018

Вы можете сделать это так:

import cv2

image = cv2.imread('yourImage.tiff', cv2.IMREAD_UNCHANGED)
print image.shape 

channels = cv2.split(image)

channels[0] # R channel
channels[1] # G channel
channels[2] # B channel
channels[3] # A channel
channels[4] # Z channel

Но для компоновки вы должны использовать 16-битный или 32-битный OpenEXR формат файла с различными алгоритмами сжатия вместо TIFF. EXR v1 и EXR v2 поддерживают до 1023 каналов рендеринга, которые может прочитать The Foundry NUKE. Читайте об OpenEXR здесь .

Z канал (a.k.a. zDepth) не подходит для компоновки, так как он приносит краевые артефакты. Вместо этого используйте Deep render pass (вы можете сохранить Deep pass в OpenEXR 2.0). Читайте об артефактах Z pass здесь .

Также в EXR файлах вы можете хранить различные AOV: нормали, положения точек, ультрафиолетовые лучи, окклюзию окружающего воздуха, тени, диспаратность, векторы движения и т. Д.

...