用matlab里的bundleAdjustment函数有错误。
clc,clear;
object_point1=[0, 0, 0;172,0.032780255,0;172.0781265,173.7997724,0;1.702793969,174.9936174,0];
plane_point1=[738.1912551,409.5459538;2046.614139,409.7953168;2047.208456,1731.659904;751.1445958,1740.741614];
object_point2=[0, 0, 0;172,0.032780255,0;172.0781265,173.7997724,0;1.702793969,174.9936174,0];
plane_point2=[731.455441,409.3671522;2040.067034,409.4946591;2040.779325,1731.560572;744.5253902,1740.492964];
%相对方位和位移
orientation=[0.999999693765780,7.88580585341823e-05,-0.000778620415985476;-7.90800597903021e-05,0.999999956233700,-0.000285094618482966;0.000778597899900008,0.000285156104526290,0.999999656235594];
location=[-0.891847856524883,-0.0195992424687006,-0.0356707842611286]';
M=[orientation,location];
intrinsic=[5175.16,0,1102.43;0,5210.63,1139.06;0,0,1];
% 计算pointstrack
viewIDs=[1 2 3 4];
track=pointTrack(viewIDs,plane_point1);
[xyzRefinedPoints,refinedPoses,pointindex]=bundleAdjustment(object_point1,track,M,intrinsic);
错误使用 vision.internal.bundleAdjust.validateAndParseInputs>validatePointTracks (第 136 行)
The number of 3-D points must match the number of point tracks.
出错 vision.internal.bundleAdjust.validateAndParseInputs (第 43 行)
validatePointTracks(pointTracks, xyzPoints, funcName);
出错 vision.internal.bundleAdjust.sparseBA (第 20 行)
vision.internal.bundleAdjust.validateAndParseInputs(xyzPoints, pointTracks, ...
出错 bundleAdjustment (第 124 行)
vision.internal.bundleAdjust.sparseBA(xyzPoints, pointTracks, ...
出错 BAyouhuaPnP (第 14 行)
[xyzRefinedPoints,refinedPoses,pointindex]=bundleAdjustment(object_point1,track,M,intrinsic);