Я ищу установку кривой Гаусса с помощью OpenCV. У меня может быть 1D или 2D Mat
, и я бы хотел рассчитать гауссовские параметры наилучшего гауссовского соответствия по матрице. Тем не менее, я хотел бы иметь возможность исправить некоторый параметр (например, значение Гаусса или дисперсия). Модель 1D, которую я хотел бы подобрать, такова:
y = a + (b - a) * exp( -( x - c )/( 2 * d^2 ) )
В случае 2D Mat
модель одинакова для многовариантной гауссовой функции.
Имеет ли OpenCV некоторую реализацию, подходящую для моих подходящих потребностей? Если да, можете ли вы привести пример или некоторые полезные ссылки? Заранее спасибо.
Приведение гауссовой кривой просто означает вычисление ее параметров, которые в 1D случае являются скалярным средним и дисперсией. Mean = sum(Xi)/n
, variance = sum(Xi-mean)^2/(n-1)
, где ^2
означает квадрат. Это становится более интересным для 2D-случая. Среднее значение по-прежнему вычисляется одинаково, но оно становится двумерным вектором. Вместо того, чтобы рассчитать дисперсию ковариационной матрицы, как это. Это 2x2 матрица.
В OpenCV ничего не поделаешь. Однако, если вы вывести уравнения (матрица Гессиана и т.д.), Вы можете легко реализовать некоторую процедуру оценки Левенберга-Марквардта с матричным типом cv::Mat
.