gpt4 book ai didi

Matlab 检测棋盘点缺陷

转载 作者:太空宇宙 更新时间:2023-11-03 21:56:57 25 4
gpt4 key购买 nike

我最近在使用 Matlab Single Camera Calibration App 算法来校准相机的内部参数和外部参数。在寻找棋盘的角点时,Matlab 的 detectCheckerboardPoints 函数多次执行(准确度)opencv api cv::findChessboardCorners,但在某些图片上,Matlab 表现得很奇怪。

例如,在下图中,棋盘方格之间的角可以清楚地看到,而matlab在奇怪的地方发现了多余的:

  1. original image://应该有5*8=40个内角点 enter image description here

  2. 在无失真图像上找到角点://6*9=54 found enter image description here

  3. 在原始图像上找到的点://6*10=60... enter image description here

matlab代码片段如下:

img=imread(fn);
[imUndist, newOrig]=undistortImage(img, cameraParams);
[pxs, bdsize]=detectCheckerboardPoints(imUndist); %or detect on 'img' directly
imMarked=insertMarker(imUndist, pxs);
imshow(imMarked);
  1. 使用 opencv(下面的代码)在此图像上检测到的角非常精确:

//opencv代码:

Mat img = imread(fpath);
int ww = 8, hh = 15;
cv::Size bsz(ww, hh);
vector<Point2f> ptvec;
bool found = cv::findChessboardCorners(img, bsz, ptvec, CALIB_CB_ADAPTIVE_THRESH + CALIB_CB_NORMALIZE_IMAGE);
cv::drawChessboardCorners(img, bsz, ptvec, found);
imshow("img", img);
waitKey();

enter image description here

最佳答案

让棋盘变大!这可能发生,而且确实发生了。通常,您希望棋盘成为大部分屏幕的一部分。你用这个解决了两个问题:

  1. 每个棋盘格有更多的像素,因此角点检测算法可以更好地找到它
  2. 你更好地纠正了失真。相机失真在图像的角落更严重,因此如果棋盘在图像周围都有点,它会比图像中间的小东西更好地检测到失真。

关于Matlab 检测棋盘点缺陷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41064292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com