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

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

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

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

import cv2
# Load the image
image = cv2.imread('image.jpg', 0)
# Apply histogram equalization
equalized_image = cv2.equalizeHist(image)
# Display the result
cv2.imshow('Equalized Image', equalized_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

Метод 2: использование NumPy и Matplotlib
Если вы предпочитаете более практический подход, вы можете использовать NumPy и Matplotlib для выравнивания гистограммы. Вот пример:

import numpy as np
import matplotlib.pyplot as plt
# Load the image
image = plt.imread('image.jpg')
# Convert the image to grayscale
grayscale_image = np.dot(image[..., :3], [0.2989, 0.5870, 0.1140])
# Flatten the image into a 1D array
pixels = grayscale_image.flatten()
# Calculate the histogram
histogram, bins = np.histogram(pixels, bins=256, range=[0, 256])
# Calculate the cumulative distribution function (CDF)
cdf = histogram.cumsum()
# Normalize the CDF
cdf_normalized = cdf * histogram.max() / cdf.max()
# Perform histogram equalization
equalized_pixels = np.interp(pixels, bins[:-1], cdf_normalized)
# Reshape the equalized pixels back into an image
equalized_image = equalized_pixels.reshape(image.shape)
# Display the result
plt.imshow(equalized_image, cmap='gray')
plt.axis('off')
plt.show()

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

  1. Адаптивное выравнивание гистограммы (AHE): AHE улучшает выравнивание гистограммы за счет разделения изображения на более мелкие области и применения выравнивания гистограммы независимо к каждой области. Это помогает сохранить локальный контраст и может быть полезно для изображений с неравномерным освещением.

  2. Адаптивное выравнивание гистограммы с ограниченным контрастом (CLAHE): CLAHE — это расширение AHE, которое ограничивает усиление шума в областях с низкой контрастностью. Этот метод может быть особенно эффективен для приложений медицинской визуализации.

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

Выравнивание гистограммы – это мощный метод повышения контрастности и улучшения визуального качества изображений. В этой статье мы рассмотрели два метода выравнивания гистограмм с использованием Python: один с использованием библиотеки OpenCV, а другой с использованием NumPy и Matplotlib. Мы также представили альтернативные методы, такие как адаптивное выравнивание гистограммы (AHE), адаптивное выравнивание гистограммы с ограниченным контрастом (CLAHE) и гамма-коррекция. Применяя эти методы, вы сможете поднять свои навыки обработки изображений на новый уровень и добиться впечатляющих результатов.