Штепсель 1 Report post Posted March 22, 2021 Здравствуйте. Допустим, откалибровал камеру при разрешении 1280х1024, получил матрицу внутренних параметров и коэффициенты. Теперь, вывожу видео в разрешении 800х600. Документацию https://docs.opencv.org/2.4/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html читал. Поэтому несколько вопросов: 1. Насколько я понял, нужно маштабировать только матрицу внутренних параметров, не трогать коэффициенты? 2. Как маштабировать? Достаточно ли просто сделать fx` = fx * (w`/w) и аналогично для fy, где w` - новая ширина кадра, а w - ширина кадра, когда создавалась матрица. 3. Как потом быть с getOptimalNewCameraMatrix ? Подставлять в неё уже отмаштабированную матрицу? Или оригинальную, а потом маштабировать обе? Share this post Link to post Share on other sites
Smorodov 579 Report post Posted March 22, 2021 Ну, оптика тут остается та же, меняется только плотность пикселей, поэтому думается достаточно будет поменять fx, fy, cx, cy. Дальше все как с исходной матрицей. 1 Share this post Link to post Share on other sites
Штепсель 1 Report post Posted March 23, 2021 Спасибо. Да, нужно менять ещё cx и cy, я думал достаточно только fx fy. Share this post Link to post Share on other sites
Pavia00 32 Report post Posted March 29, 2021 В 22.03.2021 at 22:34, Smorodov сказал: Ну, оптика тут остается та же А вот ничего подобного. Там два случая. Изменени плотности и изменение размера матрицы. Как правило задействуется последний что вносит геометрические искажения. В зависимости от формы линзы(рыбий глаз) мы ещё и зум можем поиметь(полу цифровой зум) 1 Share this post Link to post Share on other sites
Smorodov 579 Report post Posted March 29, 2021 Интересно, я имел ввиду чисто цифровое масштабирование драйвером камеры. Ведь мы используем одну и ту же камеру. Как меняется размер сенсора? Ну я могу представить, что можно извратиться, и сфокусировать его на меньший участок сенсора, тогда да, но не думал что так делают ... Share this post Link to post Share on other sites
Pavia00 32 Report post Posted March 29, 2021 7 8 часов назад, Smorodov сказал: Интересно, я имел ввиду чисто цифровое масштабирование драйвером камеры. Ведь мы используем одну и ту же камеру. Как меняется размер сенсора? Ну я могу представить, что можно извратиться, и сфокусировать его на меньший участок сенсора, тогда да, но не думал что так делают ... Изменить размер гораздопроще чем Вы думаете. Чип сенсора как стоял в плоскости физического фокуса так и стоит. Просто отключаются не используются пиксели с края сенсора. Это сделать просто изменив приделы счётчика который перебирает пиксели камеры во время чтения. Когда как масштабирование требует заблюрить соседние пиксели и произвести децимацию оставив к примеру через один каждый второй пиксель. Вот только обычно масштабирование идёт не кратно 2 а через дробные значения к 3/2. Что требует уже усложнения чипов камеры. Так вот при изменении используемой области камеры меняется угол обзора. В математической модели это приводит к изменению математического фокуса. Известно что бочкообразые и подушкообразные искажения определяются параметрами линзы k1, k3 (внутренние параметры камеры) а они в свою очередь зависят от математического фокуса камеры, то они тоже уплывут. 1 1 Share this post Link to post Share on other sites
Штепсель 1 Report post Posted May 29, 2021 Проверил несколько камер, и действительно оказалось, что поведение при изменении разрешения достаточно сильно отличается. Особо не углублялся как именно обрабатывают зум каждая, но получилось, что матрицы при разных разрешениях сильнее отличаются, нежели просто пропорцией. 1 Share this post Link to post Share on other sites