2015-07-15 4 views
1

Я хочу выбрать зеленый канал изображения и выполнить преобразование интенсивности. Я выбрал зеленый канал изображения. Я хотел бы знать, как сделать преобразование интенсивности. В настоящее время я работаю на python.Что такое преобразование интенсивности при обработке изображений?

+1

Обычно вы берете все три канала, RG & B, и применяете формулу к ним, чтобы принять процент (или другую функцию) каждого и называть это «интенсивностью», которая обычно отображается в оттенках серого. Функции могут составлять 33% каждого из RG & B, или 30% R + 60% G + 10% B, или иначе. См. Https://en.wikipedia.org/wiki/Grayscale –

ответ

0

Вы должны быть более точным. «Зеленый канал», вероятно, означает, что у вас зеленая яркость, корреляция зеленой интенсивности. Они связаны с помощью «передаточной функции», например. как определено как часть SRGB:

https://en.wikipedia.org/wiki/SRGB

Это позволит вам переключаться между интенсивностью свечения зеленого и яркости зеленого цвета.

В равной степени, вероятно, вас интересует яркость (CIE Y) или яркость. Google для «Gamma FAQ», если это так.

1

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

Тем не менее, @MarkSetchell правильно, где канонический подход к преобразованию из цветных изображений в интенсивность представляет собой взвешенную комбинацию каждого цвета. Некоторые люди усредняют все из них, другие люди преувеличивают зеленый канал больше, потому что мы воспринимаем этот цвет более четко, но SMPTE Rec. 709 является одним из самых популярных: Y' = 0.299 R' + 0.587 G' + 0.114 B'.

Посмотрите на эти информативные ссылки для получения более подробной информации о конверсии:


Однако s осле вы используете OpenCV, вы можете просто вызвать cv2.cvtColor с правильным флагом, чтобы преобразовать изображение из цветного в оттенках серого:

import numpy as np 
import cv2 

im = cv2.imread('...') # Place filename here 
im = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY) 

В качестве альтернативы, вы можете указать 0 в качестве дополнительного флага cv2.imread автоматически конвертировать любое изображение в оттенках серого без необходимости называть cv2.cvtColor:

im = cv2.imread('...', 0)