Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 从直方图中检测两个最高峰值_Image Processing_Matlab_Histogram - Fatal编程技术网

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

Image processing 从直方图中检测两个最高峰值,image-processing,matlab,histogram,Image Processing,Matlab,Histogram,我试图了解如何从直方图中检测两个峰值。可以有多个,但我需要选择最高的两个。基本上我需要做的是,尽管我会让这些峰值向左或向右移动,但我需要抓住它们。它们的分布可能会发生变化,它们的峰值可能会发生变化,所以我必须找到一种方法在Matlab中获得这两个峰值 到目前为止,我所做的是创建一个5值窗口。使用直方图中的值填充此窗口,并执行扫描。每次我向前移动5步到下一个值,并将上一个窗口值与当前值进行比较。谁比谁更伟大,谁就留着谁 有更好的方法吗 将数据从hist(或histc)函数返回到变量(y=hist(

我试图了解如何从直方图中检测两个峰值。可以有多个,但我需要选择最高的两个。基本上我需要做的是,尽管我会让这些峰值向左或向右移动,但我需要抓住它们。它们的分布可能会发生变化,它们的峰值可能会发生变化,所以我必须找到一种方法在Matlab中获得这两个峰值

到目前为止,我所做的是创建一个5值窗口。使用直方图中的值填充此窗口,并执行扫描。每次我向前移动5步到下一个值,并将上一个窗口值与当前值进行比较。谁比谁更伟大,谁就留着谁

有更好的方法吗

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


我还使用了Eli Billauer的函数。效果很好。您可以在这里用代码示例检查我的代码。

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


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

我建议在运行峰值查找器之前先执行内核密度估计。fileexchange页面上的示例图显示了几个误报。另外,为什么另一个问题首先转移到dsp上?o_O@Bringbackspy:是的,您可以使用
ksdensity
函数代替
hist
。至于问题迁移到dsp,我不知道。当我在做答案的时候,它被某个主持人的决定所感动。yuk,太棒了!“谢谢”看起来很有希望,所以我要看一看:)+1如果你知道直方图是“固有”双峰的,那么我会平滑它,直到它只有两个最大值。@slayton,直方图已经经过了平滑阶段。@Wajih,好的,但是如果你只想隔离峰值,那么你可以更平滑地过滤掉高频变化。这些变化正是峰值检测困难的原因,因为存在大量的局部最大值。如果你过滤掉它们,那是因为它很琐碎。我认为在这个问题上你不能把信号处理和编程分开。如果有人提出一个基于统计的答案,会是什么?信号处理还是编程?