Вопрос или проблема
Я хочу преобразовать свои серые изображения из 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')
Может кто-нибудь указать мне правильное направление?
Спасибо! 🙂
Вы пробовали этот учебник для раскрашивания изображения?
Сначала вам нужно обучить свою модель, а затем вы сможете преобразовать изображение в цвет, используя 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), в результате чего изображение выглядит все еще серым. Для преобразования градаций серого в цвет вам нужно использовать методы, которые могут вдохнуть жизнь в ваше изображение, применив цветовую палитру на основе базы данных или совершив моделирование.
Вот шаги, которые вам следует предпринять:
-
Используйте предобученные модели для колоризации: Существует множество моделей, способных добавлять цвет к черно-белым изображениям. Вы можете использовать библиотеки, такие как TensorFlow или Keras, чтобы применить предобученную нейронную сеть для колоризации. Вы можете начать с таких моделей, как DeOldify или другие доступные решения для колоризации.
-
Пример кода: Предположим, вы уже обучили модель, и теперь вы можете использовать её для колоризации:
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()
-
Обучение модели: Если у вас нет предобученной модели, вы можете воспользоваться учебными курсами или репозиториями, которые описывают, как обучить модель с использованием нейронных сетей. Обратите внимание, что это может занять время и потребовать хороших ресурсов.
-
Дополнительные ресурсы: Вы можете также ознакомиться с онлайн-руководствами и учебниками, которые детально объясняют процесс колоризации, например, через PyImageSearch.
В заключение, просто конвертировать серое изображение в BGR не достаточно для добавления цвета. Использование хорошо обученной модели для колоризации является оптимальным решением.