Перейти к содержимому
Compvision.ru
Штепсель

Как отмаштабировать матрицу внутренних параметров камеры при смене рзрешения?

Recommended Posts

Здравствуйте.

Допустим, откалибровал камеру при разрешении 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  ?   Подставлять в неё уже отмаштабированную матрицу?  Или оригинальную, а потом маштабировать обе? 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну, оптика тут остается та же, меняется только плотность пикселей, поэтому думается достаточно будет поменять fx, fy, cx, cy. 

Дальше все как с исходной матрицей.

  • Thanks 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 22.03.2021 at 22:34, Smorodov сказал:

Ну, оптика тут остается та же

А вот ничего подобного. Там два случая. Изменени плотности и изменение размера матрицы.  Как правило задействуется последний что вносит геометрические искажения.  В зависимости от формы линзы(рыбий глаз) мы ещё и зум можем поиметь(полу цифровой зум)

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Интересно, я имел ввиду чисто цифровое масштабирование драйвером камеры. Ведь мы используем одну и ту же камеру. Как меняется размер сенсора? Ну я могу представить, что можно извратиться, и сфокусировать его на меньший участок сенсора, тогда да, но не думал что так делают ... 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

7

8 часов назад, Smorodov сказал:

Интересно, я имел ввиду чисто цифровое масштабирование драйвером камеры. Ведь мы используем одну и ту же камеру. Как меняется размер сенсора? Ну я могу представить, что можно извратиться, и сфокусировать его на меньший участок сенсора, тогда да, но не думал что так делают ... 

Изменить размер гораздопроще чем Вы думаете. Чип сенсора как стоял в плоскости  физического фокуса так и стоит. Просто отключаются не используются пиксели с края сенсора. Это сделать просто изменив приделы счётчика который перебирает пиксели камеры во время чтения. Когда как масштабирование требует заблюрить соседние пиксели и произвести децимацию оставив к примеру через один каждый второй пиксель. Вот только обычно масштабирование идёт не кратно 2 а через дробные значения к  3/2. Что требует уже усложнения чипов камеры.

 

Так вот при изменении используемой области камеры меняется угол обзора. В математической модели это приводит к изменению математического фокуса. 

Известно что бочкообразые и подушкообразные искажения определяются параметрами линзы  k1, k3 (внутренние параметры камеры) а они в свою очередь зависят от математического фокуса камеры, то они тоже уплывут. 

  • Like 1
  • Thanks 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Проверил несколько камер, и действительно оказалось, что поведение при изменении разрешения достаточно сильно отличается. 
Особо не углублялся как именно обрабатывают зум каждая, но получилось, что матрицы при разных разрешениях сильнее отличаются, нежели просто пропорцией.

  • Thanks 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×