Matlab:一个图像中两个棋盘上的外部函数

时间:2017-04-10 10:18:44

标签: matlab matlab-cvst

我正在使用extrinsics函数进行一个项目,该项目旨在确定物体与相机的距离,这些物体上附有棋盘格。这是针对视频中的每个帧完成的。我的工作流程非常简单:

将非对称棋盘附加到每个对象

使用~20张图像

上的图像处理工具箱校准相机

每个框架

while checkerboardsFound < numCheckerboards
 % Undistort the image
 data = undistortImage(data, cameraParams);
 % Get the checkerboard points in the frame
 [imagePoints, boardSize] = detectCheckerboardPoints(data);
 worldPoints = generateCheckerboardPoints(boardSize, squareSize);
 % Get the rotation and translation
 [rot, trans] = extrinsics(imagePoints,worldPoints, cameraParams);

 % <Draw a black rectangle over the area where the checkerboard points are 
 % using the imagePoints matrix. This "hides" the checkerboard so we can
 % run the detectCheckerboardPoints(data) function again and find a different
 % one.>
 data = hideCheckerboard(data,...
        [imagePoints(1,:);...
        imagePoints(end,:)]);

 checkerboardsFound = checkerboardsFound + 1;
end;

我的问题,当我找到两个相距约5厘米的特定棋盘时,查看 extrinsics返回的各自平移向量的Z值< / em>功能,我希望看到大约50个单位(5厘米)的差异。但是,我看到了相当大的差异 - 例如约400个单位(40厘米)。我确定棋盘的方形尺寸是正确定义的(每个5毫米)。这些镜头来自三星智能手机,以视频模式捕捉(应用放大倍率)。

有人可以帮助确定导致这些Z值差异的原因吗?以这种方式使用 extrinsics 功能是否过于雄心勃勃?

0 个答案:

没有答案