Я тоже не уверен. Меня очень интересует дополнительная информация о переходе от калибровки Matlab к CV2, если вы узнали что-то еще.

у преобразовать структуру стереопараметров MATLAB в матрицы встроенных и внешних элементов, чтобы использовать их в StereoRectify OpenCV.

Если бы я понялhttp://docs.opencv.org/2.4/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html а такжеhttp://mathworks.com/help/vision/ref/stereoparameters-class.html , стереоПараметры.КамераПараметры1 и стереоПараметры.КамераПараметры2 хранят внутренние матрицы, а другие члены стереопараметров - внешние.

Я думаю, что я получил это отображение

Intrinsics:

cameraMatrix1 = stereoParameters.CameraParameters1.IntrinsicMatrix 'cameraMatrix2 = stereoParameters.CameraParameters2.IntrinsicMatrix 'distCoeffs1 = [stereoParameters.CameraParameters1.RadialDistortion (1: 2), стереоПараметры.CameraParameters1.TangentialDistortion, stereoParameters.CameraParameters1.RadialDistortion (3)]distCoeffs2 = [стереоПараметры.CameraParameters2.RadialDistortion (1: 2), стереоПараметры.CameraParameters2.TangentialDistortion, стереоПараметры.CameraParameters2.RadialDistortion (3)]

Extrinsics:

R = стереопараметры. RotationOfCamera2 'T = стереопараметры. TranslationOfCamera2 '

Это правильно, пока?

Тем не менее, я не вижу, как получить

R1 (3x3)R2 (3х3)P1 (3x4)P2 (3x4)Q (4x4)

матрицы от остальных стереопараметров.

Могу ли я использовать существующий конвертер, и если нет, каковы формулы?

 god_kane13 сент. 2018 г., 18:14
Я хочу сделать наоборот и конвертировать из OpenCV в Matlab yml файлы. Вы нашли конверсию? На этом этапе может быть что угодно.
 Gnubie10 окт. 2017 г., 13:18
Я нашел формулу для Q вstackoverflow.com/a/28317841 .

Ответы на вопрос(2)

матрицы камеры должны бытьтранспонировать из-за другого обозначения в MATLAB

и OpenCV

То же самое относится к матрице вращения и вектору трансляции между камерами:stereoParams.RotationOfCamera2 а такжеstereoParams.TranslationOfCamera2 должны бытьтранспонировать для того, чтобы получить OpenCVR матрица иT вектор.

(Быстрая проверка: R должен быть близок к матрице идентичности, если камеры почти параллельны, а первый элемент T должен соответствовать вашей базовой линии между камерами в миллиметрах.)

OpenCV-хвектор коэффициента искажения состоит из двух коэффициентов тангенциального искажения MATLAB, за которыми следуют два коэффициента радиального искажения.

Тем не менее, я смогвычислить правильные R1, R2, P1, P2 и Q с помощью(R1, R2, P1, P2, Q, leftROI, rightROI) = cv2.stereoRectify(leftCamMatrix, leftDistCoeffs, rightCamMatrix, rightDistCoeffs, imageSize, R, T, None, None, None, None, None, cv2.CALIB_ZERO_DISPARITY, 0)

Обратите внимание, что по причинам типа данных значения диспаратности, полученные с использованием OpenCV Stereo Matcher, должны бытьделится на 16 и координаты в трехмерном облаке точек, возвращенныеcv2.reprojectImageTo3D должны бытьделится на 64 для получения значений метрики.

(Быстрая проверка: при получении координат одного и того же объекта на выпрямленном левом и правом изображении координаты y должны быть почти равными, и вы должны быть в состоянии вычислить расстояние до объекта в метрах с помощью f * B / (x_right-x_left) / 1000, где f представляет собой комбинированное фокусное расстояние виртуальной камеры в Q и B, базовая линия в миллиметрах.)

 kevinkayaks03 авг. 2018 г., 05:36
Спасибо за это, но не могли бы вы рассказать о делении на 16 и делении на 64 элемента этого комментария? Это единственная часть, которую я не понимаю. Спасибо!
 Rakshit Kothari15 мар. 2019 г., 20:46
Вектор коэффициента искажения в OpenCV состоит из двух коэффициентов тангенциального искажения в MATLAB, за которыми следуют два коэффициента радиального искажения. Я думаю, что вам нужно обратить это утверждение к двум радиальным коэффициентам, за которыми следуют два тангенциальных коэффициента.
 Rakshit Kothari15 мар. 2019 г., 11:28
Я думаю, что порядок Tangential и Radial следует поменять местами в вашем ответе. Проверьтеэто
 F1iX15 мар. 2019 г., 16:06
@RakshitKothari что ты имеешь в виду? Порядок в параметрах функции R, T, как и выше?

https://stackoverflow.com/a/28317841 дает формулу для матрицы Q:

Tx от матрицы T. cx, cy и cx 'от матриц камеры. f - некоторая разумная комбинация их x и y фокусных расстояний.

Все еще не знаю, как получить P1, P2, R1 и R2, хотя. Кто-нибудь?

 kevinkayaks10 авг. 2018 г., 05:31
Я тоже не уверен. Меня очень интересует дополнительная информация о переходе от калибровки Matlab к CV2, если вы узнали что-то еще.
 kevinkayaks07 авг. 2018 г., 22:47
что вы подразумеваете под разумной комбинацией?
 Gnubie09 авг. 2018 г., 12:01
@kevinkayaks: Например, (fx + fy) / 2. Можете ли вы предложить лучший способ получить f?

Ваш ответ на вопрос