从直方图中检测两个最高峰

时间:2012-04-24 16:47:12

标签: image-processing matlab histogram

我试图了解如何从直方图中检测出两个峰值。可能有多个,但我需要选择两个最高。基本上我需要的是,虽然我会将这些峰值向左或向右移动,但我需要掌握它们。它们的传播可能会有所不同,它们的PEAK值可能会发生变化,因此我必须找到一种方法来在Matlab中掌握这两个峰值。

到目前为止我所做的是创建一个5值窗口。该窗口填充直方图中的值并执行扫描。每次我向前移动5步到下一个值并将之前的窗口值与当前值进行比较。保留了更大的东西。

有更好的方法吗?

enter image description here

2 个答案:

答案 0 :(得分:6)

最简单的方法是首先使用高斯内核平滑数据,以消除高频变化。

然后使用函数localmax查找局部最大值。

答案 1 :(得分:5)

将数据从hist(或histc)函数返回到变量(y = hist(x,bin);)并使用PEAKFINDER FileExchange提交来查找本地最大值。

我还使用了Eli Billauer的PEAKDET函数。效果很好。您可以在此处查看我的answer代码示例。