Оцените распределение цвета с моделью смеси Гаусса

Я пытаюсь использовать две гауссовские смеси с алгоритмом EM для оценки цветового распределения видеокадра. Для этого я хочу использовать два отдельных пика в цветовом распределении в качестве двух гауссовых средних для облегчения расчета EM. У меня есть несколько трудностей с их реализацией в OpenCV.

Мой первый вопрос: как определить два пика? Я искал оценку пика в OpenCV, но все еще не мог найти какую-либо отдельную функцию. Итак, я собираюсь определить две области, а затем найти их максимальные значения в виде пиков. Этот способ правильный?

Мой второй вопрос: как выполнить смешанную модель Гаусса с EM в OpenCV? Насколько я знаю, функция "cv::EM::predict" может дать мне индекс наиболее вероятного компонента смеси. Но у меня есть трудности с обучением ЭМ. Я искал и нашел некоторые другие коды, но найти правильные параметры слишком сложно. Может ли кто-нибудь предоставить мне пример кода для этого? Заранее спасибо.


person E_learner    schedule 13.10.2012    source источник
comment
1. Когда вы сказали «два пика», вы имели в виду пики распределения Гаусса? Если это так, вы можете легко получить это значение, вычислив центр пика с помощью PDF-файла, если он доступен. 2. Что касается вашего второго вопроса, на самом деле Opencv задокументировал образец, который может делать то же самое, что вы пытаетесь сделать. Кластеризация случайных выборок мультигауссовского распределения с использованием EM Он поставляется с документом opencv!!! opencv.willowgarage.com/documentation/cpp/   -  person james    schedule 13.10.2012
comment
@james: спасибо за ответ.   -  person E_learner    schedule 14.10.2012
comment
@james: я использую openCV 2.4.2, и после использования этого примера кода из документа opencv CvEMParams не распознается. Я искал и вместо этого использовал cv:: EMparamType, но все же это неверно. Можешь объяснить?   -  person E_learner    schedule 14.10.2012


Ответы (2)


@ederman, попробуйте {расположение библиотеки OpenCV}\opencv\samples\cpp\em.cpp вместо веб-ссылки. Я думаю, что пример кода в ссылке устарел. Я успешно скомпилировал пример кода в OpenCV 2.3.1. Это не должно быть проблемой для 2.4.2.

Удачи:)

person james    schedule 15.10.2012

Мой первый вопрос: как определить два пика?

Я бы перебирал диапазон возможных значений выборки и проверял, когда EM.predict(sample)[0] достигает пика.

person koshy george    schedule 27.11.2015