Изменить значение фокуса камеры в пикселях
В настоящее время я ищу правильное решение следующей проблемы, которая не ориентирована непосредственно на программирование, но я предполагаю, что у пользователей opencv может быть идея: моя стереокамера имеет сенсор с разрешением 1/3,2" 752x480. использование двух стереоизображений этой самой камеры для создания облака точек благодаря библиотеке облаков точек (PCL). Проблема заключается в том, что я хотел бы уменьшить количество точек, содержащихся в облаке точек, путем непосредственного снижения разрешение входных изображений (от 752x480 до 376x240). Как указано в заголовке, я должен адаптировать фокус камеры в пикселях к этой потребности: я рассчитываю этот самый параметр благодаря следующей формуле:
float focal_pixel = (FOCAL_METERS / SENSOR_WIDTH_METERS)*InputImg.cols;
Однако SENSOR_WIDTH_METERS в настоящее время является постоянным и соответствует 1/3,2 "данным, преобразованным в метры, и я хотел бы адаптировать это к разрешению, которое я хотел бы иметь: 376x240.
Я абсолютно не уверен, достаточно ли я ясно изложил свою проблему, чтобы ответить на нее, что означало бы, что я иду в неправильном направлении.
заранее спасибо
edit: функция, используемая для обработки стереоизображения (после вычислений):
getPointCloud(hori_c_pp, vert_c_pp, focal_pixel, BASELINE_METERS, out_stereo_cloud, ref_texture);
где два первых параметра - это только координаты центра изображения, BASELINE_METERS - базовая линия моей камеры out_stereo_cloud my output cloud и, в конечном итоге, ref_texture информация о цвете. Эта функция взята из суббиблиотеки stereo_matching. По какой-то причине, если я просто изменяю размер стереоизображений, кажется, что они вступают в конфликт с параметрами focal_pixel, поскольку размеры больше не совпадают. Я очень потерян в этом вопросе.
1 ответ
Поскольку я не очень слежу за формулами и вызовами методов, которые вы публикуете, я советую вам использовать другой подход.
OpenCV уже дает вам возможность создавать воксели с использованием стереоизображений методом cv::reprojectImageTo3D
, Другой вопрос также уже обсуждает преобразование в соответствующий тип данных PCL.
Если вы хотите только перепроектировать определенный ROI вашего изображения, вы должны выбрать cv::perspectiveTransform
как объяснено в документации я указал в первой ссылке.