Registration using CV Toolbox

1 view (last 30 days)
gujax
gujax on 6 Dec 2016
Hi, I have two 3D point clouds. The two are partially overlapped i.e., ~<50% of the data has an overlap and the rest does not. By itself the data is nearly well registered. For whatever reasons - I am not getting good registration using pcregrigid. It makes it worse. I have tried all permutations of pcdenoise, pcdownsample and inlier ratio settings. The only condition where I get good registration is by either making tolerance values large [10, 10] or using inlier ratio ~0.3 or less, both of which does not make sense because it means I am asking registration algorithm not to do anything. I have also tried using initial values of tform but to no avail. Does it mean pcregrigid is not robust i.e., needs priori information about how well the data looks registered? Any suggestions are appreciated.
Just as an example of one particular settings:
ptCloudmov = pcdenoise(pointCloud(Data),'Threshold',.2,'NumNeighbors',6);
ptCloudfix = pcdenoise(pointCloud(D_r),'Threshold',.2,'NumNeighbors',6);
ptCloudmov = pcdownsample(ptCloudmov,'random',.5);
ptCloudfix = pcdownsample(ptCloudfix,'nonuniformgridSample',9);
Tf=affine3d([1 0 0 0;0 1 0 0;0 0 1 0;0 0 0 1]);
[tform]=pcregrigid(ptCloudmov,ptCloudfix,'Metric','pointtoPoint','MaxIterations',10000,'ExtraPolate',true,'InlierRatio',0.6,'Tolerance',[.001 .001],'InitialTransform',Tf);
I compare ptCloudfix to
moving_reg = pctransform(ptCloudmov,tform);

Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!