Статья Автор: Деникина Наталья Владимировна

Изменение яркости и контрастности

Яркость и контрастность

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

Возьмем исходное изображение и проведем с ним несколько экспериментов:
  • Яркость: Общий уровень освещенности изображения. Увеличение яркости делает изображение светлее, а уменьшение — темнее.
  • Контрастность: Разница между самыми темными и самыми светлыми частями изображения. Высокая контрастность делает изображение более "живым", а низкая — более "плоским".

Изменение яркости изображения осуществляется путем добавления или вычитания определенного значения ко всем пикселям изображения.

  • Увеличение яркости: Когда мы добавляем положительное значение ко всем пикселям изображения, оно становится светлее. Например, добавление значения +100 к каждому пикселю приведет к заметному осветлению изображения.

  • Уменьшение яркости: Когда мы вычитаем значение из каждого пикселя, изображение становится темнее. Например, вычитание значения -100 приведет к затемнению изображения.

Изменение контрастности изображения осуществляется путем умножения или деления значения яркости каждого пикселя на определенный коэффициент.

  • Увеличение контрастности: Когда мы умножаем значение яркости каждого пикселя на коэффициент больше 1, изображение становится более контрастным. Темные участки становятся темнее, а светлые — светлее. Например, умножение на коэффициент 1.5 увеличивает контрастность.

  • Уменьшение контрастности: Когда мы умножаем значение яркости каждого пикселя на коэффициент меньше 1, изображение становится менее контрастным. Разница между темными и светлыми участками становится меньше, картинка становится более "плоской".

Важно, что при изменении параметров яркости и контрастности нужно ограничивать выход значений за пределы от 0 до 255 с помощью функции np.clip(image, 0, 255), мы ее подробно разбирали в уроке по NumPy.

Пример скрипта для регулировки яркости и контрастности методами NumPy:

import cv2
import numpy as np

def adjust_brightness(image, brightness=0):
    new_image = np.int16(image)
    new_image = new_image + brightness
    new_image = np.clip(new_image, 0, 255)
    return np.uint8(new_image)

def adjust_contrast(image, contrast=1.0):
    new_image = np.int16(image)
    new_image = new_image * contrast
    new_image = np.clip(new_image, 0, 255)
    return np.uint8(new_image)


# Загрузка изображения
image = cv2.imread('orig.png')

# Изменение яркости
bright_image = adjust_brightness(image, 100)
dark_image = adjust_brightness(image, -100)

# Сохранение результатов
cv2.imwrite('bright_image.png', bright_image)
cv2.imwrite('dark_image.png', dark_image)

# Изменение контрастности
high_contrast_image = adjust_contrast(image, 1.5)
low_contrast_image = adjust_contrast(image, 0.5)

# Сохранение результатов
cv2.imwrite('high_contrast_image.png', high_contrast_image)
cv2.imwrite('low_contrast_image.png', low_contrast_image)

Изменение яркости и контрастности с использованием OpenCV

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

Изменение яркости и контрастности с использованием OpenCV

Изменение яркости и контрастности изображения можно также реализовать с использованием функций OpenCV. Для этого используется функция cv2.convertScaleAbs, которая позволяет масштабировать, смещать и обрезать значения пикселей.

Пример скрипта для регулировки яркости и контрастности методами OpenCV:

import cv2

# Загрузка изображения
image = cv2.imread('orig.png')

# Изменение яркости и контрастности
bright_image_opencv = cv2.convertScaleAbs(image, beta=100)
dark_image_opencv = cv2.convertScaleAbs(image, beta=-100)
high_contrast_image_opencv = cv2.convertScaleAbs(image, alpha=1.5)
low_contrast_image_opencv = cv2.convertScaleAbs(image, alpha=0.5)

# Сохранение результатов
cv2.imwrite('bright_image_opencv.jpg', bright_image_opencv)
cv2.imwrite('dark_image_opencv.jpg', dark_image_opencv)
cv2.imwrite('high_contrast_image_opencv.jpg', high_contrast_image_opencv)
cv2.imwrite('low_contrast_image_opencv.jpg', low_contrast_image_opencv)
  • alpha (контрастность): Коэффициент, на который умножается каждое значение пикселя.
  • beta (яркость): Значение, которое добавляется к каждому пикселю после умножения.
  • Функция cv2.convertScaleAbs выполняет эти операции и возвращает обрезанное изображение в диапазоне от 0 до 255.

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

Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать