我有一个充满值 (0-255) 的 int 数组,我需要提取两个索引。
要找到的索引将代表我要关注的兴趣领域。
该区域的值总是高于其他区域,但有时差异非常小。
像这个例子:
我感兴趣的领域是:
我目前的方法是获取最大值和平均值。然后我会得到:
- 大于“Max - (Max - Average)”的第一个索引。
- 最后一个指数大于“Max - (Max - Average)”。
但有时,就像在这种情况下,我的方法会得到垃圾部分。 (第五“柱”,右边)
谁能提出更好的方法?
注意: 兴趣区域始终有 4 个“列”,如示例图像
最佳答案
您可以对直方图应用简单的脉冲响应滤波器(例如 Boxcar)或任何其他平滑方法以减少高频分量。之后,您可以计算局部最小值和最大值,并在有助于缩小 ROI 的带宽内精确定位各个峰值(每个峰值的最大-最小-最大-最小值)。
这是一个简单的 Boxcar过滤我的实现。
关于algorithm - 获取直方图的兴趣区域(Int 数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16673323/