有没有一种好的方法(自动)在二值图像上绘制空间直方图(直方图 x 轴应该是图像的宽度,y 轴应该是图像在 col 位置的强度),使用 Opencv 和 C++ ?
在这种情况下,我只能考虑沿图像列汇总图像强度(仅 1 或 0)。但显示它们对我来说仍然不是很清楚
谢谢
最佳答案
经过一些研究,我想我已经接近答案了。
首先,我将图像分成一定宽度和相等长度的箱子。这是必要的,因为宽度大小等于 1 像素的 bin 效果不佳。原因是
- 该算法会运行得太慢,因为它需要收集 n 个 bin,其中 n 是宽度大小
- 对于现实生活中的应用,空间图像或强度模式可能是漫射的,并且可能会给出具有相等 bin 强度的结果
接下来,我将横跨图像宽度或 bin 宽度,以将具有特定阈值的图像强度分配给 bin。然后构建一个直方图来表示模式的粗略形状
如果我需要一张显示直方图的图片,我会
- 创建一个大小为(max_bin_weights,bin 数量)的 Mat
- 然后创建 std::vector。每个Point坐标(0.5 * nth bin,第n个bin的权重)
- 通过迭代 std::vector 绘制直方图。使用 cv::line 将前一点连接到当前点
关于c++ - 二值图像的空间直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51941142/