我最近使用Matlab 單相機校準應用程序算法來校準相機內在和外在因素。在找到棋盤的角落時,Matlab的許多功能都會執行(精確度)opencv api cv::findChessboardCorners
,但在某些圖片上,Matlab的表現很奇怪。Matlab detectCheckerboardPoints瑕疵
例如,下面的圖像中,板正方形之間的角是清楚的看到,而MATLAB發現上陌生的地方冗餘的:
的MATLAB代碼段是簡單如下:
img=imread(fn);
[imUndist, newOrig]=undistortImage(img, cameraParams);
[pxs, bdsize]=detectCheckerboardPoints(imUndist); %or detect on 'img' directly
imMarked=insertMarker(imUndist, pxs);
imshow(imMarked);
- 與此
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();
如果我必須使用**圖像**我上面發佈,和** matlab **,有沒有什麼辦法可以做出一些改進? – zhangxaochen