我有特定图像的色调直方图,如下图所示:
这是我用来计算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);
我需要获得位于红色虚线之间的像素的亮度直方图。
有人对如何实现这个有什么想法吗?
提前谢谢。
答案 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));