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);
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);
我看了一下代码,从代码的角度应该出问题的地方是M=[orientation,location];这个地方也就是对应bundleAdjustment(xyzPoints,pointTracks,cameraPoses,intrinsics)这个函数的cameraPoses,它要求用到视图ID,方向以及位置,而你这里的m只涉及两个,故推断是这里出了问题,希望对你有所帮助
报错提示你的输入参数中,三维点数据和其坐标数目不匹配,
bundleAdjustment函数具体使⽤⽅法:
[xyzRefinedPoints,refinedPoses] = bundleAdjustment(xyzPoints,pointTracks,cameraPoses,intrinsics)