将高斯曲线拟合到c ++中的某个直方图峰值

时间:2009-12-20 15:16:45

标签: algorithm histogram curve-fitting

关于将高斯曲线拟合到直方图峰值,我有两个问题。 我的第一个问题是一个非常基本的问题:

  1. 如何将高斯曲线拟合到整个直方图?这只是意味着我必须找出并计算直方图的平均值(μ)和偏差(ϭ)并将它们放入高斯曲线的公式中吗?
  2. 以下示例是否正确?: 假设(仅作为示例)我有一个具有5个颜色值的图像的直方图。 在X轴上有这5个颜色值,在Y轴上有每个值的频率。 即:

    值1:1时间

    值2:4次

    值3:7次

    值4:3次

    值5:2次

    现在平均值(μ)将是3(μ= 3)。

    偏差(ϭ)为0.9(ϭ= 0.9)。 表现公式:

    现在我在density function的公式中使用这些值来计算我的高斯曲线?

    这是对的吗?不幸的是,我对数学背景有点不安。

    1. 我的第二个问题有点棘手: 这次,我有一个有几个峰的直方图,但我只想将高斯曲线拟合到最高峰。 因此,我通过简单的for循环遍历直方图的所有区间,并在x轴上找到一个强度值(包含图像的强度) 最频率(显示在y轴上)。这将是最高峰。但是我如何找出偏差呢?特别是,因为我不 知道我应该在计算中包含哪个强度值。 据我所知,高斯曲线的转折点位于μ+ϭ和μ-ϭ。这有助于解决问题。
    2. 我很抱歉这个问题有点数学,但我没有找到一个更好的地方来问它。我也读了一些类似的话题,但不幸的是他们最终没有回答我的问题。

      感谢您的帮助!

      关心Marc

2 个答案:

答案 0 :(得分:4)

单峰的简单方法应该没问题。 [顺便说一下,如果它与图像有关,我认为这是一个编程问题。]

多个峰值更难。解析峰值的过程称为解卷积http://en.wikipedia.org/wiki/Deconvolution),通常没有唯一的答案。您可能必须确定有多少峰值,或者峰值的最小方差是什么(否则您可以为每个箱子创建峰值: - ))。

答案 1 :(得分:3)

我认为你估算单个高斯参数的方法是正确的。

对于多个高斯人,你可能想要查找mixture models或更具体的高斯混合物。关于这一点的几点说明:

  1. (你可能已经知道)混合中最强的高斯不一定是峰值最高的
  2. 如果您有两个具有不同平均值的高斯的总和,则直方图中的峰值将与平均值不匹配
  3. 在离散直方图中使用单个峰的高度可能不是一个好主意:实际峰值可能位于两个直方图区间之间。 [澄清:在这种情况下,两个箱子中的计数可能明显低于以箱子为中心的峰值。]此外,对于大多数类型的数据,您的直方图将包含大量噪音。至少在直方图上使用某种平均滤波器。