Я использую webcamera в C# (используя AForge). У меня также есть фон по умолчанию. Мне нужно извлечь разницу между текущим изображением и фоном и создать новое изображение, которое содержит только те объекты, которые отсутствуют на фоне по умолчанию. Например, если я двигаю рукой перед веб-камерой, мне нужно вывести только эту руку (с остальной белой задней частью). Если я просто сравниваю пиксель за пикселем, он становится уродливым, так как есть много шума. Я попытался использовать пороговое значение для разницы, но результат по-прежнему очень плохой. Я думаю, что, возможно, есть какой-то фильтр или известный алгоритм, как это сделать? Любая помощь будет очень высоко ценится.Извлечение разницы между 2 изображениями в C#
3
A
ответ
0
Вы всегда можете попробовать сравнить полутоновые изображения двух. Предполагая, что ваша веб-камера является стационарной (потому что, если нет, то вам придется делать гораздо больше корректировки сдвигов пикселей), тогда вы можете преобразовать изображения в оттенки серого и иметь порог, по которому вы считаете, что изображения отличаются:
int threshold = 30;
PixAvg1[i,j] = (Pix1.R + Pix1.G + Pix1.B)/3
PixAvg2[i,j] = (Pix2.R + Pix2.G + Pix2.B)/3
if (Math.Abs(PixAvg1[i,j] - PixAvg2[i,j+1])>threshold)
difPixel == true;
Порог - это толерантность между пикселями, которые вы хотите получить. Это значение может быть обусловлено различием в яркости изображений.
С этим вы не получите самые хрустящие результаты, потому что некоторые пиксели, которые вы покрываете, будут совпадать, однако вы можете выполнить дополнительное сканирование (если хотите) и выполнить какую-либо область заполнения.
Смежные вопросы
- 1. Определение разницы между 2 изображениями
- 2. Вычисление разницы между изображениями
- 3. Извлечение разницы между каждыми 2 последовательными элементами
- 4. Найти контур разницы между изображениями
- 5. Определение разницы между двумя растровыми изображениями
- 6. Как найти прямоугольник разницы между двумя изображениями
- 7. Разница фильтров между 2 изображениями?
- 8. Получение разницы между 2 датами
- 9. Проблема в получении разницы между 2 списками
- 10. Найти различия между 2 изображениями
- 11. OpenCV: Количественная оценка разницы между двумя изображениями быстро
- 12. Sum квадрат разницы между 2 Numpy массивами
- 13. Измерение разницы между 2 раза в секундах
- 14. scale.js шкала между 2 изображениями
- 15. Заголовок 1 между 2 изображениями
- 16. CV - Извлечение различий между двумя изображениями
- 17. Как я могу получить прямоугольные области разницы между двумя изображениями?
- 18. C# найти различия между изображениями
- 19. Вычисление разницы во времени между 2 датой()
- 20. Изабель: Доказательство разницы между 2 списками
- 21. критерии Hibernate для разницы между 2 колонки
- 22. Обнаружение движения/различий между 2 изображениями
- 23. Извлечение подстроки между 2 подстрок
- 24. Извлечение строки между 2 строками
- 25. Различия между двумя изображениями
- 26. Распознавание изображений между 2 изображениями vb.net Lockbits
- 27. Рассчитать базовое расстояние между 2 камерами (изображениями)
- 28. Сравните 2 изображения и найдите% разницы
- 29. docker: как показать разницу между 2 изображениями
- 30. Преобразование (вращение и перевод) между 2 изображениями
Как раз мысль, вы не можете использовать Kinect SDK? http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/ Или, может быть, это поможет вам понять, как решить вашу проблему. –
Разве это не SDK для устройства Kinect? По крайней мере, об этом говорится в описании SDK. Я использую только одну веб-камеру. На самом деле я нашел фильтр в AForge, называемый CustomFrameDifferenceDetector Class, но документации по его использованию недостаточно. По крайней мере, я не мог найти его. –
Не знаю точно. Просто подумал об этом, когда вы хотели отслеживать движения рук .. :) –