获取直方图(整数数组)的兴趣区域

5

我有一个包含数值(0-255)的整形数组,需要提取两个索引。

要找到的索引将代表我想要关注的感兴趣区域。

这个区域的值总是高于其他值,但有时差异非常小。

就像这个例子:

enter image description here

我的感兴趣区域是这样的:

enter image description here

我的目前方法是获得最大值和平均值。然后我会得到:

  • 第一个索引大于 "Max - (Max - Average)"。
  • 最后一个索引大于 "Max - (Max - Average)"。

但有时候,比如在这种情况下,我的方法会获取垃圾部分。 (右边的第五个“列”)

是否有人可以建议更好的方法?

注意:感兴趣的区域始终有4个“列”,就像示例图像一样。

2个回答

0

您可以应用简单的脉冲响应滤波器,例如Boxcar或任何其他平滑方法,来减少直方图中的高频成分。之后,您可以计算局部极小值和极大值,并在带宽内定位单个峰值(每个峰值的最大-最小-最大-最小),从而有助于缩小感兴趣区域。

这是我实现的一个简单的Boxcar滤波器。


0

也许我假设得太多了。但是你的数据看起来像是在这4个“山峰”周围有强烈的“边缘”。因此,你应该考虑那些边缘/脊线检测算法组合来获取想法。

我的最简单的答案是先尝试阈值处理。看看是否有效。

如果不行,也许可以应用一维版本的滤波器,例如Sobel滤波器。它们应该会突出显示你的数据中二阶导数较大的重要点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接