Я пишу приложение для Windows, которое запускает ускоренный алгоритм CUDA HDR. Я настроил внешнее устройство обработки сигналов изображения, которое представляет собой устройство UV C и передает 60 кадров в секунду на машину Windows через USB 3.0.
Каждый «четный» кадр является больше недоэкспонированный кадр, и каждый «нечетный» кадр является более переэкспонированным кадром, что позволяет моему коду CUDA выполнять модифицированный Mertens алгоритм слияния экспозиции для генерации высокого качество изображения с высоким динамическим диапазоном c.
Очень абстрактный пример алгоритма слияния экспозиции Мертенса здесь
Моя единственная проблема в том, что я не знаю как узнать, когда я пропускаю кадры , поскольку единственный API камеры, с которым я взаимодействовал на Windows (Media Foundation), не дает понять, что кадр, который я беру с IMFSourceReader::ReadSample
, не является кадром, который был получен после последнего, который я захватил.
Можно ли как-нибудь гарантировать, что я не пропущу кадры, или, по крайней мере, легко и надежно определить, когда у меня есть, используя Windows доступный API, такой как Media Foundation или DirectShow ?
Было бы не так сложно пропустить кадр, а затем целенаправленно «пропустить» следующий кадр, чтобы захватить следующий кадр с избыточной или недостаточной выборкой для сопряжения с ним. последний кадр, который мы захватили, но мне нужно знать, сколько кадров было фактически пропущено с момента последнего захвата кадра.
Спасибо!