Я не на 100% знаком с захватом видео, поэтому я не уверен, что вы подразумеваете под "значениями пикселей не обязательно должны быть дискретные целые числа".Означает ли это, что информация о цвете на пиксель может не быть целыми числами?
Я предполагаю, что "коэффициент повышения дискретизации не всегда целочисленный", вы имеете в виду, что вы будете повышать частоту с одного разрешения на другое, но вы не можетебыть вдвое или втрое.Например, вместо 640x480 -> 1280x960, вы можете делать, 640x480 -> 800x600.
Простой алгоритм может быть:
Для каждого пикселя в большей сетке
- Масштабировать значения x / y, чтобы они лежали между 0,1 (разделить x по ширине, y по высоте)
- Масштабировать значения x / y по ширине / высоте меньшей сетки -> xSmaller, ySmaller
- Определите четыре пикселя, которые содержат вашу точку, с помощью функций пола / потолка с плавающей запятой
- Получите значения x / y, где точка находится в этом прямоугольнике,между 0,1 (вычесть значения пола / потолка xSmaller, ySmaller) -> xInterp, yInterp
- Начните с черного и добавьте четыре цвета, масштабированные с помощью коэффициентов xInterp / yInterp для каждого
Вы можете сделать это быстрее для нескольких кадров, создав таблицу поиска для отображения пикселей -> значения xInterp / yInterp
Я уверен, что есть намного лучшие алгоритмы, чем линейная интерполяция (билинейная и многиеБольше).Это похоже на то, что вы хотели бы оптимизировать на уровне процессора.