Jump to content
Compvision.ru
Crazy Sage

Проблема с поиском эталонов для калибровки камеры

Recommended Posts

Пытаюсь калибровать камеру на предмет дисторсии по вот этому мануалу
https://docs.opencv.org/4.3.0/d4/d94/tutorial_camera_calibration.html

Когда использовал шахматный эталон - всё было ок, пока он был целиком в кадре, но висло намертво, когда часть эталона оказывалась вне кадра, пытаюсь сделать с кругами, пишут вроде что алгоритм более устойчивый, но он просто не находит цель, если не уменьшать размер изображения (примерно до 1024*768). Шаблон генерил с помощью скриптов OpenCV, пытался и симметричный и асимметричный использовать. Можно ли что-то сделать, чтобы нормально находить эталон на большом кадре? Или надо сильно уменьшать изображение, находить цель, потом брать базовое изображение, умножать все найденные координаты на коэффициент, с которым уменьшали изображение и запускать findCornersSubPix?

Асимметричный эталон использовал вот этот acircles_pattern.png

Код вот такой:

cv::Size boardSize( 4, 11  );
cv::Mat image = cv::imdecode( cv::Mat( 1, data->size(), CV_8UC1, data->data() ), cv::IMREAD_COLOR );
std::vector< cv::Point2f > pointBuf;
bool found;
// int chessBoardFlags = cv::CALIB_CB_ADAPTIVE_THRESH | cv::CALIB_CB_NORMALIZE_IMAGE | cv::CALIB_CB_FAST_CHECK;
qDebug()«"Looking for corners";
// found = findChessboardCorners( image, boardSize, pointBuf, chessBoardFlags);

//found = findCirclesGrid( image, boardSize, pointBuf );
found = findCirclesGrid( image, boardSize, pointBuf, cv::CALIB_CB_ASYMMETRIC_GRID);

 

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


  • Recently Browsing   0 members

    No registered users viewing this page.

×