02 Обработка канала изображения OpenCV

1-канальное извлечение и слияние

В цифровой обработке изображений канал изображения относится к разделению информации о цвете в изображении на различные компоненты цвета. Общие каналы изображения включают каналы RGB, каналы оттенков серого, каналы HSV и т. д.

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

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

Канал HSV относится к разделению информации о цвете в изображении на три канала: оттенок (H), насыщенность (S) и яркость (V). Этот метод является более интуитивным, чем RGB, в управлении изменением цвета и больше подходит для настройки цвета при обработке изображений.

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

1 форма массива

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

# 以下代码使用数组的形式对通道进行处理
import cv2  
lena = cv2.imread("lenacolor.png")  
cv2.imshow("lena1", lena)  
b = lena[:, :, 0]  
g = lena[:, :, 1]  
r = lena[:, :, 2]  
cv2.imshow("b", b)  
cv2.imshow("g", g)  
cv2.imshow("r", r)  

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

lena[:, :, 0] = 0  
cv2.imshow("lenab0", lena)  
lena[:, :, 1] = 0  
cv2.imshow("lenab0g0", lena)  
cv2.waitKey()  
cv2.destroyAllWindows()

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

2 формы разделения и слияния

Функция cv2.split() способна разбивать каналы изображения. Например, следующий оператор может использоваться для разделения цветного изображения BGR img для получения изображения B-канала b, изображения G-канала g и изображения R-канала r.

b, g, r=cv2.split(img)

b=cv2.split(img)[0]
g=cv2.split(img)[1]
r=cv2.split(img)[2]

Выше приведены два метода извлечения каналов с помощью разделения.
После обработки канала BGR для отображения графики необходимо объединить три канала.

bgr = cv2.merge([b, g, r])  
rgb = cv2.merge([r, g, b])  
cv2.imshow("real", bgr)  
cv2.imshow("fake", rgb)

Обычно нам все еще нужно объединять графики в порядке BGR. Но если мы не будем следовать этому порядку или введем данные из других диапазонов, получится ложная картина (концепция, которая будет более знакома студентам, изучающим дистанционное зондирование).
изображение.png

Supongo que te gusta

Origin blog.csdn.net/nkufang/article/details/128993656
Recomendado
Clasificación