【问题标题】:How to calculate brightness histogram?如何计算亮度直方图?
【发布时间】:2013-06-21 12:56:37
【问题描述】:

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

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

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

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

提前谢谢你。

【问题讨论】:

  • channel 声明为什么?它只是您要绘制的频道的占位符吗?

标签: opencv histogram emgucv


【解决方案1】:

您需要使用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));

【讨论】:

  • Aurelies,知道如何显示brightnessHist的结果吗?
  • 我会假设您显示其他直方图的方式相同。
猜你喜欢
  • 1970-01-01
  • 2016-09-29
  • 2020-03-09
  • 1970-01-01
  • 2021-06-01
  • 2015-01-21
  • 1970-01-01
  • 2023-01-27
  • 1970-01-01
相关资源
最近更新 更多