Привет! Меня зовут Александр, и сегодня я расскажу тебе, как я смог очистить черно-белое изображение от шума с помощью библиотеки TensorFlow на языке Python.Итак, первым шагом было подготовить несколько изображений с шумом. Я использовал изображение с шумом ″соль и перец″ ౼ это типичный шум, который встречается при цифровой обработке изображений.
Далее я установил TensorFlow и импортировал необходимые библиотеки.
python
import tensorflow as tf
from tensorflow.keras.layers import Conv2D٫ Conv2DTranspose٫ Input
from tensorflow.keras.models import Model
from tensorflow.keras.datasets import mnist
import numpy as np
Затем я загрузил датасет MNIST, который содержит черно-белые изображения цифр. Для нашей задачи нам понадобятся только изображения без шума, поэтому я использовал только тренировочные данные⁚
python
(X_train, _), (_, _) mnist.load_data
Далее я нормализовал значения пикселей до диапазона от 0 до 1⁚
python
X_train X_train.astype(‘float32′) / 255.Теперь давайте создадим модель автоэнкодера, который будет использоваться для удаления шума из изображений. Автоэнкодер ౼ это нейронная сеть, которая обучается сжимать и восстанавливать данные. Он состоит из кодировщика и декодировщика.python
input_img Input(shape(28, 28, 1))
# Кодировщик
x Conv2D(32٫ (3٫ 3)٫ activation’relu’٫ padding’same’)(input_img)
x tf.keras.layers.MaxPooling2D((2, 2), padding’same’)(x)
x Conv2D(32, (3, 3), activation’relu’, padding’same’)(x)
encoded tf.keras.layers.MaxPooling2D((2, 2), padding’same’)(x)
# Декодировщик
x Conv2D(32, (3, 3), activation’relu’, padding’same’)(encoded)
x Conv2DTranspose(32٫ (3٫ 3)٫ strides2٫ activation’relu’٫ padding’same’)(x)
x Conv2D(1٫ (3٫ 3)٫ activation’sigmoid’٫ padding’same’)(x)
decoded tf.keras.layers.Conv2DTranspose(1, (3, 3), strides2, activation’sigmoid’, padding’same’)(x)
autoencoder Model(input_img, decoded)
После создания модели мы должны скомпилировать ее и обучить наши данные⁚
python
autoencoder.compile(optimizer’adam’, loss’binary_crossentropy’)
autoencoder.fit(X_train, X_train,
epochs50,
batch_size128,
shuffleTrue)
После обучения модели мы можем использовать ее для удаления шума из наших тестовых изображений⁚
python
# Получаем тестовые изображения
_, (x_test, _) mnist.load_data
x_test x_test.astype(‘float32’) / 255.x_test np.reshape(x_test, (len(x_test), 28, 28, 1))
# Применяем автоэнкодер для удаления шума
denoised_images autoencoder.predict(x_test)
Теперь у нас есть очищенные от шума изображения! Мы можем сравнить исходные изображения с очищенными, чтобы увидеть результат⁚
python
import matplotlib.pyplot as plt
n 10
plt.figure(figsize(20٫ 4))
for i in range(n)⁚
# Исходное изображение
ax plt.subplot(2, n, i 1)
plt.imshow(x_test[i].reshape(28٫ 28))
plt.gray
ax.get_xaxis.set_visible(False)
ax.get_yaxis.set_visible(False)
# Очищенное изображение
ax plt.subplot(2, n, i 1 n)
plt.imshow(denoised_images[i].reshape(28, 28))
plt.gray
ax.get_xaxis.set_visible(False)
ax.get_yaxis.set_visible(False)
plt.show
И вот результат! Теперь мы видим, что шум был успешно удален из исходных изображений.
Вот так я использовал библиотеку TensorFlow на Python, чтобы очистить черно-белые изображения от шума. Надеюсь, эта статья была полезной для тебя! Удачи в твоих экспериментах с обработкой изображений!