我有一个充满值(0-255)的int数组,我需要提取两个索引。
要找到的索引将代表我想要关注的有趣区域。
此区域的值始终高于其他区域,但有时差异非常小。
就像这个例子:
我的兴趣领域是:
我目前的做法是获取最大值和平均值。然后我会得到:
但有时候,就像在这种情况下我的方法得到垃圾部分。 (第五个“栏目”,右侧)
任何人都可以建议更好的方法吗?
注意: 兴趣区域总是有4个“列”,如示例图像
答案 0 :(得分:0)
您可以在直方图中应用一个简单的脉冲响应滤波器(如Boxcar或任何其他平滑方法)来减少高频成分。之后,您可以计算局部最小值和最大值,并在一个带宽内精确定位各个峰值(每个峰值的最大最小值 - 最大值 - 最小值),这将有助于缩小投资回报率。
以下是我的简单Boxcar过滤器实现。
答案 1 :(得分:0)
也许我假设太多了。但是,您的数据使其看起来像是有强大的边缘'在4'山周围。因此,您应该查看那些edge/ridge detection算法组。
我最简单的答案是先尝试阈值处理。看看是否有效。
如果没有,可以应用一维版本的过滤器,例如Sobel filter。 他们应该突出显示二阶导数很大的数据中的重要点。