获得直方图(Int Array)的感兴趣区域

时间:2013-05-21 15:05:40

标签: algorithm image-processing pattern-matching histogram

我有一个充满值(0-255)的int数组,我需要提取两个索引。

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

此区域的值始终高于其他区域,但有时差异非常小。

就像这个例子:

enter image description here

我的兴趣领域是:

enter image description here

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

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

但有时候,就像在这种情况下我的方法得到垃圾部分。 (第五个“栏目”,右侧)

任何人都可以建议更好的方法吗?

注意: 兴趣区域总是有4个“列”,如示例图像

2 个答案:

答案 0 :(得分:0)

您可以在直方图中应用一个简单的脉冲响应滤波器(如Boxcar或任何其他平滑方法)来减少高频成分。之后,您可以计算局部最小值和最大值,并在一个带宽内精确定位各个峰值(每个峰值的最大最小值 - 最大值 - 最小值),这将有助于缩小投资回报率。

以下是我的简单Boxcar过滤器实现。

答案 1 :(得分:0)

也许我假设太多了。但是,您的数据使其看起来像是有强大的边缘'在4'山周围。因此,您应该查看那些edge/ridge detection算法组。

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

如果没有,可以应用一维版本的过滤器,例如Sobel filter。 他们应该突出显示二阶导数很大的数据中的重要点。