二值图像的空间直方图

时间:2018-08-21 03:23:46

标签: c++ opencv histogram

是否有使用Opencv和C ++在二进制图像上绘制空间直方图的好方法(自动)(直方图x轴应为图像的宽度,y轴应为col位置的图像的强度) ?

在这种情况下,我只能考虑沿图像的各列汇总图像强度(仅1或0)..但对我来说仍然不太清楚

谢谢

1 个答案:

答案 0 :(得分:0)

经过研究,我认为我已经接近答案了。

首先,我将图像分为一定宽度和相同长度的箱。这是必要的,因为宽度大小等于1个像素的bin不能很好地工作。原因是

  • 该算法工作太慢,因为它需要收集n个宽度大小为n的bins
  • 对于现实生活中的应用,空间图像或强度模式可能是分散的,并且可能会产生具有相等箱仓强度的结果

接下来,我将横穿图像宽度或容器宽度,以将具有特定阈值的图像强度分配给容器。然后建立直方图来表示图案的粗糙形状

如果我需要一张显示直方图的图片,我会

  1. 创建一个大小为Mat(max_bin_weights,箱数)的垫子
  2. 然后创建std :: vector。每个点坐标(0.5 *第n个仓,第n个仓的权重)
  3. 通过遍历std :: vector绘制直方图。使用cv :: line
  4. 将上一个点连接到当前点