OpenCV: getOptimalNewCameraMatrix () - параметр newImgSize? - PullRequest
0 голосов
/ 18 июня 2020

Для чего нужен этот параметр? Как это влияет на результат и когда его можно использовать?

https://docs.opencv.org/master/d9/d0c/group__calib3d.html#ga7a6c4e032c97f03ba747966e6ad862b1 (Поиск getOptimalNewCameraMatrix())

1 Ответ

1 голос
/ 18 июня 2020

Рассмотрим (типичный) случай, когда нелинейное искажение линзы в основном имеет бочкообразный характер. Это означает, что пиксели около, скажем, верхней левой части изображения соответствуют световым лучам дальше от фокальной оси, чем они были бы, если бы не было искажения: это как если бы у края изображения камера поле зрения больше, и этот эффект тем сильнее, чем дальше пиксель находится от центра изображения (ну, основной точки). Фактически, поле зрения больше в углах изображения и меньше в центре сторон изображения. Когда вы деформируете изображение, чтобы удалить искажение, используя откалиброванные параметры, вам нужно решить, что делать с этой «лишней» областью изображения. Ваш выбор:

  • Вы можете оставить его себе. Это означает, что искаженное изображение должно иметь большую площадь, чем исходное, чтобы у краев было «дополнительное» поле зрения. Но поскольку в углах было больше света, чем ближе к центрам сторон, вам нужно заполнить недостающие пиксели, скажем, черным. В результате получается деформированное изображение в форме «бабочки».
  • Вы можете выбросить его, оставив только прямоугольник внутри деформированного изображения, все пиксели которого действительны (т.е. они соответствуют пикселю в исходном изображении). образ). Фактически, вы обрезаете крылышки бабочки.
  • Некоторые можно оставить и выбросить.

Эта функция в OpenCv позволяет вам сделать выбор (через ее «альфа») аргумент), и возвращает матрицу камеры-обскуры, которая соответствует искаженному изображению, соответствующему вашему выбору.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...