0

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

在此处输入图像描述

这是我用于计算色调直方图的代码(我使用的是 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);

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

有没有人对如何实现这一点有任何想法?

先感谢您。

4

1 回答 1

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));
于 2013-06-25T15:35:05.993 回答