Jump to content
Compvision.ru
Sign in to follow this  
Штепсель

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

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

 

Share this post


Link to post
Share on other sites

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

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

  • Thanks 1

Share this post


Link to post
Share on other sites
В 22.03.2021 at 22:34, Smorodov сказал:

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

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

  • Like 1

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

7

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

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

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

 

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

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

  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites

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

  • Thanks 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×