2013-06-24 4 views
0

У меня есть гистограмму цветового тона для конкретного изображения, как показано на следующем графике:Как рассчитать гистограмму яркости?

enter image description here

Вот код, который я использую для вычисления гистограммы цветового тона (я использую EMGU обертку):

Image<Hsv, Byte> hsvImage = originalImage.Convert<Hsv, Byte>(); 
    Image<Gray, byte>[] channels = hsvImage.Split();  
    DenseHistogram hist = new DenseHistogram(19, new RangeF(0,190)); 
    hist.Calculate(new IImage[1] { channel }, true, null); 

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

У кого-нибудь есть идеи о том, как реализовать это?

Заранее спасибо.

+0

Что 'channel' объявлен как? Это просто место для канала, который вы хотите построить? – Aurelius

ответ

3

Чтобы получить изображение, которое представляет собой маску пикселей, попадающих в желаемый диапазон, вам необходимо использовать InRange. Затем передайте это изображение как параметр mask (который находится в вашем примере null) до Calculate(). Похоже, что вы хотите значения цветового тона между 70 и 100.

код может выглядеть следующим образом: (Отказ от ответственности: я не пишу C#)

DenseHistogram brightnessHist = new DenseHistogram(10, new RangeF(0,260)); //Use whatever range you want 
//InRange is probably exclusive of upper bound 
brightnessHist.Calculate(new IImage[1]{channels[2]}, false, channels[0].InRange(70,101)); 
+0

Aurelies, любая идея, как я могу проиллюстрировать результат яркостиHist? – Michael

+0

Я бы предположил, что вы показываете другие гистограммы. – Aurelius

Смежные вопросы