Подгонка кривой Гаусса к определенному пику гистограммы в c ++ - PullRequest
4 голосов
/ 20 декабря 2009

У меня есть два вопроса относительно подгонки кривой Гаусса к пикам гистограммы. Мой первый вопрос очень простой:

  1. Как я могу подогнать кривую Гаусса ко всей гистограмме? Означает ли это только, что мне нужно выяснить и рассчитать среднее значение (µ) и отклонение (ϭ) гистограммы и поместить их в формулу для кривой Гаусса?

Правильный ли следующий пример ?: Предположим (только в качестве примера) у меня есть гистограмма изображения с 5 цветовыми значениями. На осях X есть эти 5 значений цвета, а на осях Y есть частоты каждого из этих значений. i.e.:

значение 1: 1 раз

значение 2: 4 раза

значение 3: 7 раз

значение 4: 3 раза

значение 5: 2 раза

Теперь среднее значение (µ) будет равно 3 (µ = 3).

А отклонение (ϭ) будет 0,9 (ϭ = 0,9). формульной:

Теперь я использую эти значения в формуле функции плотности для расчета кривой Гаусса?

Это правильно? К сожалению, я немного не уверен насчет математики.

  1. Мой второй вопрос немного сложнее: На этот раз у меня есть гистограмма с несколькими пиками, но я хочу только подогнать кривую Гаусса к самому высокому пику. Итак, я прохожу все ячейки гистограммы с помощью простого цикла for и нахожу одно значение интенсивности на оси x (которое содержит интенсивности изображения) с помощью большинство частот (показано по оси Y). Это будет самый высокий пик. Но как мне узнать отклонение? Особенно, так как я не знать, какое из значений интенсивности я должен включить в мои расчеты. Насколько я знаю, точка поворота кривой Гаусса лежит на µ + ϭ и µ-ϭ. Может ли это помочь решить проблему.

Я сожалею, что этот вопрос немного математический, но я не нашел лучшего места, чтобы задать его. Я также читал некоторые похожие темы, но, к сожалению, они не ответили окончательно на мой вопрос.

Спасибо за вашу помощь!

С уважением, Марк

Ответы [ 2 ]

4 голосов
/ 20 декабря 2009

Ваш простой подход для одного пика должен быть в порядке. [Кстати, я думаю, что это вопрос программирования, если он относится к изображениям.]

Несколько пиков сложнее. Процесс разрешения пиков называется деконволюция (http://en.wikipedia.org/wiki/Deconvolution), и обычно нет единственного ответа. Возможно, вам придется решить, сколько существует пиков или какова минимальная дисперсия пика (иначе вы можете создать пик для каждой корзины: -)).

3 голосов
/ 21 декабря 2009

Ваш подход к оценке параметров одного гауссиана, я думаю, правильный.

Для нескольких гауссиан, возможно, вы захотите посмотреть смесь моделей или, более конкретно, смеси гауссиан. Несколько замечаний по этому поводу:

  1. (вы, наверное, уже знали это), самый сильный гауссиан в миксе не обязательно должен быть тем, у которого самый высокий пик
  2. Если у вас сумма двух гауссианов с разным средним, пики на гистограмме не будут совпадать со средними
  3. Использование высоты одиночного пика в дискретной гистограмме, вероятно, не очень хорошая идея: фактический пик может быть между двумя ячейками гистограммы. [Пояснение: в этом случае счет в обоих бинах может быть значительно ниже, чем для пика, центрированного в бине.] Кроме того, для большинства видов данных гистограмма будет содержать много шума. По крайней мере, используйте какой-то фильтр усреднения по гистограмме.
...