Я бы предположил, что вы можете использовать уравнение объектива, чтобы сделать это.
1 / f = 1 / object_distance + 1 / image_distance
Где f - фокусное расстояние (пользовательский ввод). Соотношение расстояния изображения и расстояния до объекта может быть использовано для соответствующего изменения размера изображения с использованием уравнения увеличения. Чтобы получить то, что вы действительно хотите, вам нужно изменить структуру уравнения:
1 / object_distance = 1 / f - 1 / image_distance
А затем используйте уравнение увеличения, чтобы изменить высоту объекта:
-image_distance / object_distance = image_height / object_height
Выгода, как вы могли заметить, в том, что вам нужно знать расстояние, на которое каждый пиксель находится от камеры. В противном случае это просто не работает. Вы можете запросить у пользователя эту информацию, но это кажется маловероятным и болезненным. Я не знаю другого способа сделать это - искажение линзы - это трехмерный эффект, а вам предоставляется двумерная информация. В лучшем случае вы можете попытаться исправить его в двух измерениях, но это будет сложно и не будет работать должным образом.