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

Waj*_*jih 15 matlab image-processing histogram

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

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

有没有更好的方法呢?

在此输入图像描述

sla*_*ton 6

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

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

  • +1,如果你知道你的直方图是"天生的"双峰的,那么我会将它平滑直到它只有两个最大值. (2认同)

yuk*_*yuk 5

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

我还使用了Eli Billauer的PEAKDET功能.效果很好.您可以使用代码示例在此处查看我的答案.