Сделайте два снимка экрана один за другим, получив последовательность из двух изображений (1,2)
.Разделите каждый снимок экрана на два поля (нечетное и четное) и обработайте каждое поле как отдельное изображение.Если вы предполагаете, что изображения чередуются последовательно (довольно безопасное предположение, в противном случае они будут выглядеть ужасно), тогда есть две возможности: (1e, 1o, 2e, 2o)
или (1o, 1e, 2o, 2e)
.Итак, на данный момент это 50-50.
То, что вы могли бы сделать, это использовать оптический поток , чтобы повысить ваши шансы.Скажем, вы идете с первым вариантом: (1e, 1o, 2e, 2o)
.Рассчитайте оптический поток f1
между (1e, 2e)
.Затем вычислите поток f2
между (1e, 1o)
и f3
между (1o,2e)
.Если f1
приблизительно совпадает с f2 + f3
, то все движется в правильном направлении, и вы выбрали правильное расположение.В противном случае попробуйте другое расположение.
Оптический поток является довольно общим подходом и может быть сложным для вычисления для всего изображения.Если вы хотите сделать что-то в спешке, замените оптический поток на отслеживание видео .
EDIT
Я играл с некоторымикод, который может сделать это дешево.Я заметил, что если 3 поля являются последовательными и в правильном порядке, абсолютная ошибка из-за плавного, постоянного движения будет минимизирована.Наоборот, если они вышли из строя (или не последовательны), эта ошибка будет больше.Таким образом, один из способов сделать это - взять две группы по 3 поля и проверить ошибку для каждого из двух описанных выше порядков, и перейти к порядку, который дал меньшую ошибку.
У меня есть только несколькочересстрочных видео здесь для тестирования, но, похоже, работает.Единственным недостатком является то, что он не очень эффективен, если нет существенного плавного движения или количество используемых кадров мало (менее 20-30).
Вот чересстрочный кадр:
![enter image description here](https://i.stack.imgur.com/nglAR.png)
Вот пример выходных данных моего метода (тот же кадр):
![enter image description here](https://i.stack.imgur.com/SZMC3.png)
Верхнее изображение - строки с нечетными номерами.Нижнее изображение - строки с четными номерами.Число в скобках - это число раз, когда изображение было выбрано как последнее.Число справа от этого является ошибкой.Нечетные строки в этом случае помечаются как самые последние, поскольку ошибка ниже, чем для строк с четными номерами.Вы можете видеть, что из 100 кадров он (правильно) определил строки с нечетными номерами как самые последние 80 раз.