Вот как я это вижу (я немного работал с оптическим потоком):
Вы хотите вычислить отдельные частные производные поля оптического потока; один для направления x
и один для y
.
Я бы попытался решить проблему следующим образом:
- Разделите ваш массив / матрицу потока на две матрицы:
x
и y
flow.
- Для каждого из них вы можете пойти по наивному пути и просто сделать простую разницу:
derivative = current_state - last_state
. Но этот подход очень грязный, так как производная будет чувствительна к малейшей ошибке.
- Чтобы противостоять этому, вы можете аппроксимировать один кусок ваших точек данных (может быть, целую строку?) С помощью кривой регрессии, которая легко дифференцируется, как полином.
Просто дифференцируйте эту приблизительную кривую, и все готово.
Вы также можете просто сгладить отдельные матрицы и сделать наивное различие, которое должно быть намного быстрее, чем аппроксимирующие точки данных, но должно быть более терпимым к ошибкам.