c++ - 二值图像的空间直方图

标签 c++ opencv histogram

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

在这种情况下,我只能考虑沿图像列汇总图像强度(仅 1 或 0)。但显示它们对我来说仍然不是很清楚

谢谢

最佳答案

经过一些研究,我想我已经接近答案了。

首先,我将图像分成一定宽度和相等长度的箱子。这是必要的,因为宽度大小等于 1 像素的 bin 效果不佳。原因是

  • 该算法会运行得太慢,因为它需要收集 n 个 bin,其中 n 是宽度大小
  • 对于现实生活中的应用,空间图像或强度模式可能是漫射的,并且可能会给出具有相等 bin 强度的结果

接下来,我将横跨图像宽度或 bin 宽度,以将具有特定阈值的图像强度分配给 bin。然后构建一个直方图来表示模式的粗略形状

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

  1. 创建一个大小为(max_bin_weights,bin 数量)的 Mat
  2. 然后创建 std::vector。每个Point坐标(0.5 * nth bin,第n个bin的权重)
  3. 通过迭代 std::vector 绘制直方图。使用 cv::line 将前一点连接到当前点

关于c++ - 二值图像的空间直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51941142/

相关文章:

asynchronous - 如何使用 Prometheus 测量异步调用的延迟?

c++ - 如何找到文件夹内所有文件的大小?

opencv - 在opencv中合并两个cvHistograms

c++ - 向后读取文件的适当 madvise 设置是什么?

c++ - 如何有效地提取 cv::Mat 的子集

python - 图像处理中的多线程——视频python opencv

python - 如何使用 OpenCV 在图像上标记数字并绘制圆圈

python - 如何在 Python 中将一系列浮点值合并到直方图中?

c++ - 如何在C++中跳到Ofstream对象的下一行

c++ - Dash 直播流编码文档