Arhn - архитектура программирования

стабилизированное различие кадров с использованием OpenCV abs(), за исключением неперекрывающихся областей

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

diff = abs(frame1 - frame2);

Фреймы — это матовые объекты. Однако у двух кадров будут области, которые не перекрываются (т. е. одно из двух значений пикселей двух кадров будет равно 0), которые я не хочу включать. Если два значения пикселей равны a (= 0) и b (!= 0), то abs() будет |b|, но вместо этого я хотел бы иметь значение 0, если один из двух пикселей равен 0.

РЕДАКТИРОВАТЬ: я хотел бы сделать это, не зацикливаясь на пикселях


  • Создать diff, одновременно перебирая каждый пиксель в frame1 и frame2, применяя правила, которые вы упомянули? Вы не указали типы frame1 или frame2, которые очень полезны для тех, кто пытается дать вам что-то большее, чем общий совет. 05.01.2017
  • Я хотел бы сделать это, не зацикливаясь на пикселях. И добавил тип рамы (Мат). Спасибо. 05.01.2017

Ответы:


1

Итак, я понял это. По сути, мы определяем два кадра, A и B, чтобы преобразовать их в двоичное изображение (значение threshold = 0, режим THRESH_BINARY), затем два двоичных изображения объединяются по И, и этот результат объединяется по И с разностным кадром, чтобы получить окончательный результат. результат.

cv::Mat frameDifference(cv::Mat A, cv::Mat B)
{
  cv::Mat diff = cv::abs(A - B),
          binaryA,
          binaryB,
          binaryAND;

  cv::threshold(A, binaryA, 0, 256, cv::ThresholdTypes::THRESH_BINARY);
  cv::threshold(B, binaryB, 0, 256, cv::ThresholdTypes::THRESH_BINARY);
  cv::bitwise_and(binaryA, binaryB, binaryAND);
  cv::bitwise_and(diff, binaryAND, diff);

  return diff;
}
12.01.2017
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..