【问题标题】:How to arrange input as an object for Extrinsics() function of matlab?如何将输入安排为 matlab 的 Extrinsics() 函数的对象?
【发布时间】:2015-11-03 00:34:21
【问题描述】:

我正在尝试使用 matlab 的外部函数来计算平移向量。作为要求,我想提供输入相机参数。即相机矩阵,失真矩阵。但是当我给输入,即 camParam 一个 3x3 cameraMatrix 时,它给了我错误。

camParam = [994.735326361544, 0, 624.663440953582;
            0, 998.166467837258, 364.087425569226;
            0, 0, 1]; 

    [rotationMatrix,translationVector] = extrinsics(left_right_eye_points,(face.model)',camParam);

我收到以下错误:

Error using extrinsics
Expected cameraParams to be one of these types:
cameraParameters
Instead its type was double.
Error in extrinsics>checkInputs (line 140)
validateattributes(cameraParams, {'cameraParameters'}, {}, ...
Error in extrinsics (line 91)
checkInputs(imagePoints, worldPoints, cameraParams);
Error in Simple_conversion_from_World_to_Camera_to_image (line 37)
[rotationMatrix,translationVector] = extrinsics(left_right_eye_points,(face.model)',camParam)

我的问题是:

1)我应该如何安排我的camParam,以便函数extrinsics可以接受它。

2) 另外它还需要失真系数吗?如果是,那么如何安排也是如此。

【问题讨论】:

    标签: matlab computer-vision camera-calibration matlab-cvst perspectivecamera


    【解决方案1】:

    你必须按照错误信息告诉你的去做。创建一个cameraParameters 对象并使用它。可能你想要cp=cameraParameters('IntrinsicMatrix',camParam)

    cameraParams 对象还允许您设置失真,文档解释了详细信息。

    【讨论】:

    • 你的意思是“cp = cameraParameters('IntrinsicMatrix',camParam)”谢谢它的工作。
    • 是的,修正了我的答案。
    • 是的。你给了我一个提示/建议,我进一步完善它:)
    • @khan,当您创建cameraParameters 对象时,请记住它假定基于 1 的像素坐标,这意味着左上角像素的坐标为 [1,1]。根据您从哪里获得内在函数,您可能必须将 1 添加到光学中心。另外,尝试使用相机校准器应用程序:mathworks.com/help/vision/ug/single-camera-calibrator-app.html
    • @Dima 内在参数随数据集一起提供。你觉得上面的 camParam 不正确吗。
    猜你喜欢
    • 2014-07-20
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多