Очистка изображений — ценный метод, будь то для дальнейшего анализа или просто для того, чтобы ваши фотографии выглядели как можно лучше.
Улучшение изображения — важнейший инструмент для приложений компьютерного зрения и редактирования изображений. Он направлен на улучшение качества изображений.
Повышая качество изображения, можно значительно повысить точность и надежность методов анализа и обработки изображений. Это особенно важно в приложениях для обнаружения, распознавания, сегментации и отслеживания объектов.
Улучшение изображения может помочь, когда такие факторы, как условия низкой освещенности, шум датчика, размытость изображения или ошибки передачи, ухудшают качество изображения.
Настройка вашей среды
Начать с настройка среды Python, затем выполните следующую команду терминала, чтобы установить библиотеку OpenCV. Вы будете использовать OpenCV для загрузки и обработки исходного изображения и для сохранения окончательного улучшенного изображения.
pip установить opencv-python
Вы будете использовать Matplotlib для отображения двух изображений. Установите его с помощью этой команды:
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()
Окончательное улучшенное изображение выглядит следующим образом:
Будущее улучшения изображения
Будущее улучшения изображений находится в области искусственного интеллекта. Алгоритмы машинного обучения обучаются автоматически выполнять методы улучшения изображения на изображениях.
Эти программы обрабатывают каждое изображение независимо, поэтому они применяют разные значения методов для разных изображений.