如何计算亮度直方图?

时间:2013-06-24 21:18:23

标签: opencv histogram emgucv

我有特定图像的色调直方图,如下图所示:

enter image description here

这是我用来计算Hue直方图的代码(我正在使用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);

我需要获得位于红色虚线之间的像素的亮度直方图。

有人对如何实现这个有什么想法吗?

提前谢谢。

1 个答案:

答案 0 :(得分: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));