Я использую Emgu с C#.Какое лучшее цветовое пространство для обнаружения движения
У меня есть поток jepgs, поступающий с подачи камеры. В настоящий момент я использую абспид между двумя изображениями, чтобы получить изменения движения.
Image<Bgr, byte> _diffBetweenCurrentAndPrevious = _currentFrame.Convert<Bgr, Byte>().AbsDiff(PreviousFrame.Convert<Bgr, Byte>());
Затем я перечисляю данные массива изображения, сохраняя все изменения, и искал движение над определенным порогом.
float diffCouner = 0;
for (int y = 0; y < 576; y++)
{
for (int x = 0; x < 720; x++)
{
if (_diffBetweenCurrentAndPrevious.Data[y, x, 0] >= 10
|| _diffBetweenCurrentAndPrevious.Data[y, x, 1] >= 10 ||
_diffBetweenCurrentAndPrevious.Data[y, x, 2] >= 10)
{
BaseImage.Data[y, x, 0] = _currentFrame.Data[y, x, 0];
BaseImage.Data[y, x, 1] = _currentFrame.Data[y, x, 1];
BaseImage.Data[y, x, 2] = _currentFrame.Data[y, x, 2];
diffCouner++;
}
}
}
В настоящее время я использую BGR.
Лучше ли использовать HSV или YCC или ..?
Я заметил, что при использовании YCC мне приходилось использовать нижний порог, потому что движение не показалось ясным для автомобиля, проходящего ночью.
Меня интересует лучший подход.
Или использовать формат <Gray,Byte>
?
Причина, по которой я прошу, состоит в том, что я пробовал их всех, и все они, похоже, работают. Но это может быть не очень хорошо в разное время дня, для мгновенного скучного или яркого дня. Или низкий контраст.
Я мог и буду проходить тесты в течение нескольких дней, но я буду как красно-индийский, молящийся о том, чтобы времена года менялись.
Любые советы приветствуются.
Благодаря
Только в случае, если любой из них следующие мой вопрос с интересом обнаружили, что использование <Gray,Byte>
не дает достаточно хорошие результаты для легких изменений.
Я теперь работает тесты с <HSV,Byte>
ах родственный дух! :) спасибо –
Я счастлив, что смогу помочь. – Apostolos