Преобразование двух изображений в градациях серого в одно 2-канальное изображение в Python - PullRequest
0 голосов
/ 23 октября 2019

Я хотел бы преобразовать два изображения в градациях серого [256,256,1] - [256,256,1] в одно 2-канальное изображение [256,256,2] ..

Как я могу это сделать? Как я могу соединить два изображения в одно?

1 Ответ

0 голосов
/ 23 октября 2019

Основным принципом является «изображение matplotlib / opencv на самом деле numpy ndarray», поэтому вы можете использовать несколько методов, поддерживаемых numpy.

Пример:

import numpy as np

# Create grayscale image A (The shape as you describe)
greyA = np.random.randint(0, high=256, size=(256, 256, 1))
# Create grayscale image B (The shape as you describe)
greyB = np.random.randint(0, high=256, size=(256, 256, 1))

# Confirm the shape of the grayscale image A
print(greyA.shape)  # (256, 256, 1)
# Confirm the shape of the grayscale image B
print(greyB.shape)  # (256, 256, 1)

# Merged image
merge_image = np.concatenate((greyA, greyB), axis=2)
# Confirm the shape of the Merged image
print(merge_image.shape)  # (256, 256, 2)

ОтветВаш вопрос в комментариях

Читать imshow () Если изображение 8-битное без знака, оно отображается как есть. Если изображение является 16-разрядным беззнаковым или 32-разрядным целым числом, пиксели делятся на 256. То есть диапазон значений [0,255 * 256] отображается на [0,255]. Если изображение является 32-разрядным или 64-разрядным с плавающей точкой, значения пикселей умножаются на 255. То есть диапазон значений [0,1] сопоставляется с [0,255].

Поэтому не поддерживается прямой вывод изображения с цветовым пространством 2. Вы можете использовать среднее или взвешенное среднее, чтобы объединить пиксельные массивы двух изображений.

...