Конвертация из серого в BGR

Вопрос или проблема

Я хочу преобразовать свои серые изображения из mnist в цветные. Я придумал следующий код, но вывод по-прежнему серый.

# Импорт
(train_images0, train_labels0), (test_images, test_labels) = tensorflow.keras.datasets.fashion_mnist.load_data()

# Разделение
train_images, val_images, train_labels, val_labels = train_test_split(train_images0, train_labels0, test_size=0.20)

# Преобразование в цвет BGR
output = cv2.cvtColor(train_images[88], cv2.COLOR_GRAY2BGR)

# Показать до и после
plt.imshow(output)
plt.show()
plt.imshow(train_images[88], cmap='gray')

До и после

Может кто-нибудь указать мне правильное направление?

Спасибо! 🙂

Вы пробовали этот учебник для раскрашивания изображения?

https://www.pyimagesearch.com/2019/02/25/black-and-white-image-colorization-with-opencv-and-deep-learning/#download-the-code

Сначала вам нужно обучить свою модель, а затем вы сможете преобразовать изображение в цвет, используя cv2

    # Загружаем входное изображение с диска, масштабируем пиксельные интенсивности до
# диапазона [0, 1], а затем преобразуем изображение из BGR в цветовое пространство Lab
image = cv2.imread(args["image"])
scaled = image.astype("float32") / 255.0
lab = cv2.cvtColor(scaled, cv2.COLOR_BGR2LAB)```

Ответ или решение

Конвертация изображений в цветовой формат из градаций серого требует применения более сложной техники, поскольку, как правило, простая конвертация не добавляет никакой информации в изображение.

В предоставленном вами коде вы используете функцию cv2.cvtColor для преобразования изображения из формата градаций серого в формат BGR. Это преобразование просто дублирует одно и то же серое значение в трех каналах (B, G, R), в результате чего изображение выглядит все еще серым. Для преобразования градаций серого в цвет вам нужно использовать методы, которые могут вдохнуть жизнь в ваше изображение, применив цветовую палитру на основе базы данных или совершив моделирование.

Вот шаги, которые вам следует предпринять:

  1. Используйте предобученные модели для колоризации: Существует множество моделей, способных добавлять цвет к черно-белым изображениям. Вы можете использовать библиотеки, такие как TensorFlow или Keras, чтобы применить предобученную нейронную сеть для колоризации. Вы можете начать с таких моделей, как DeOldify или другие доступные решения для колоризации.

  2. Пример кода: Предположим, вы уже обучили модель, и теперь вы можете использовать её для колоризации:

import cv2
import numpy as np
import matplotlib.pyplot as plt

# Загружаем предобученную модель (здесь предполагается, что модель уже существует)
model = ... # ваша модель колоризации

# Загрузка изображения в градациях серого
gray_image = train_images[88]  # Ваше серое изображение
gray_image = np.expand_dims(gray_image, axis=-1)  # Обрабатываем размерность

# Применяем вашу модель для колоризации
colorized_image = model.predict(gray_image[np.newaxis, ...])

# Преобразуем изображение к формату BGR
colorized_image_bgr = cv2.cvtColor(colorized_image[0], cv2.COLOR_RGB2BGR)

# Отображение результатов
plt.figure(figsize=(10,5))
plt.subplot(1, 2, 1)
plt.imshow(gray_image.squeeze(), cmap='gray')
plt.title('Серое изображение')
plt.axis('off')

plt.subplot(1, 2, 2)
plt.imshow(colorized_image_bgr)
plt.title('Цветное изображение')
plt.axis('off')

plt.show()
  1. Обучение модели: Если у вас нет предобученной модели, вы можете воспользоваться учебными курсами или репозиториями, которые описывают, как обучить модель с использованием нейронных сетей. Обратите внимание, что это может занять время и потребовать хороших ресурсов.

  2. Дополнительные ресурсы: Вы можете также ознакомиться с онлайн-руководствами и учебниками, которые детально объясняют процесс колоризации, например, через PyImageSearch.

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

Оцените материал
Добавить комментарий

Капча загружается...