Очистка изображений — ценный метод, будь то для дальнейшего анализа или просто для того, чтобы ваши фотографии выглядели как можно лучше.

Улучшение изображения — важнейший инструмент для приложений компьютерного зрения и редактирования изображений. Он направлен на улучшение качества изображений.

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

Улучшение изображения может помочь, когда такие факторы, как условия низкой освещенности, шум датчика, размытость изображения или ошибки передачи, ухудшают качество изображения.

Настройка вашей среды

Начать с настройка среды Python, затем выполните следующую команду терминала, чтобы установить библиотеку OpenCV. Вы будете использовать OpenCV для загрузки и обработки исходного изображения и для сохранения окончательного улучшенного изображения.

pip установить opencv-python

Вы будете использовать Matplotlib для отображения двух изображений. Установите его с помощью этой команды:

instagram viewer
pip установить matplotlib

Наконец, установите NumPy, который вы использовать для числовых операций включая создание справочных таблиц для гамма-коррекции и определение ядра для повышения резкости изображения:

пип установить numpy

После того, как вы установили эти библиотеки в своей среде, вы готовы начать кодирование.

Полный исходный код для этой демонстрации доступен в Репозиторий GitHub.

Импорт необходимых библиотек

Импортируйте библиотеки, которые вы ранее установили в своей среде:

Импортировать cv2
Импортировать matplotlib.pyplot как плт
Импортировать пустышка как нп

Обратите внимание, что вы должны импортировать OpenCV как cv2. Это стандартная практика, направленная на обеспечение совместимости кода и легкости его понимания другими разработчиками.

Загрузка и отображение исходного изображения

Начните с загрузки исходного изображения с помощью cv2.imread функция. Это входное изображение, на котором ваша программа будет выполнять методы улучшения. Затем отобразите его с помощью соответствующих функций Matplotlib:

изображение = cv2.imread('пример.jpg')
plt.imshow(cv2.cvtColor (изображение, cv2.COLOR_BGR2RGB))
пл.название(«Исходное изображение»)
plt.show()

Отображение исходного изображения поможет вам позже сравнить результаты работы программы:

Изображение выше будет вводом программы.

Уменьшение шума в изображении

Шумоподавление — это метод, направленный на уменьшение шума — случайных искажений — в изображении. Это приводит к более плавному выходу. OpenCV предоставляет fastNlMeansDenoisingColored функцию для этой цели. Он использует алгоритм нелокальных средств для удаления шума при сохранении деталей изображения.

# Применить улучшения изображения
# Уменьшить шум изображения
denoised_image = cv2.fastNlMeansDenoisingColored (изображение, Никто, 10, 10, 7, 21)

fastNlMeansDenoisingColored Функция принимает несколько параметров, включая изображение, силу фильтра, размер окна шаблона и размер окна поиска. Вы можете поэкспериментировать с различными значениями, чтобы получить желаемые результаты.

Растяните контраст, чтобы улучшить видимость деталей

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

Вы можете применить контрастное растяжение к изображению с шумоподавлением, используя OpenCV. нормализовать функция:

# Выполнить контрастную растяжку
convert_stretched_image = cv2.normalize (denoised_image, Никто, 255, 0, cv2.NORM_MINMAX, cv2.CV_8UC1)

Как повысить резкость изображения

Повышение резкости изображения улучшает края и детали изображения, помогая улучшить четкость изображения.

# Повышение резкости изображения
ядро ​​= np.array ([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32)
sharpened_image = cv2.filter2D (contrast_stretched_image, -1, ядро ​​= ядро)

Приведенный выше код создает матрицу ядра, которая подчеркивает края и детали изображения. cv2.filter2D Функция применяет ядро ​​к растянутому по контрасту изображению, в результате повышая его резкость.

Отрегулируйте яркость, чтобы улучшить экспозицию

Регулировка яркости управляет общей яркостью изображения. Это помогает сделать изображение визуально привлекательным и хорошо экспонированным.

# Регулировка яркости
яркость_изображения = cv2.convertScaleAbs (sharpened_image, альфа =1, бета=5)

cv2.convertScaleAbs Функция регулирует яркость изображения. альфа параметр регулирует контрастность, а бета параметр управляет яркостью. Увеличение бета значение увеличивает яркость изображения.

Примените гамма-коррекцию, чтобы сделать изображение ярче

Изображение может казаться слишком ярким после метода регулировки яркости. Гамма-коррекция регулирует общую яркость и контрастность изображения. Он корректирует изображения, которые кажутся слишком темными или слишком яркими.

# Гамма-коррекция
гамма = 1.5
lookup_table = np.array([((i / 255.0) ** гамма) * 255для я в np.arange(0, 256)]).astype("uint8")
gamma_corrected_image = cv2.LUT (яркость_изображения, таблица поиска)

Приведенный выше фрагмент кода создает справочную таблицу, которая применяет преобразование гамма-коррекции к изображению с поправкой на яркость. гамма значение управляет регулировкой. Используйте значения больше 1, чтобы сделать изображение темнее, и значения меньше 1, чтобы сделать его ярче.

Сохранение и отображение окончательного улучшенного изображения

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

# Сохранить финальное изображение
cv2.imwrite('final_image.jpg', гамма_скорректированное_изображение)

Затем отобразите вывод программы с помощью Matplotlib.

# Показать окончательное улучшенное изображение
plt.imshow (cv2.cvtColor (gamma_corrected_image, cv2.COLOR_BGR2RGB))
пл.название(«Окончательное улучшенное изображение»)
plt.show()

Окончательное улучшенное изображение выглядит следующим образом:

Будущее улучшения изображения

Будущее улучшения изображений находится в области искусственного интеллекта. Алгоритмы машинного обучения обучаются автоматически выполнять методы улучшения изображения на изображениях.

Эти программы обрабатывают каждое изображение независимо, поэтому они применяют разные значения методов для разных изображений.