MATLAB: SVD line fitting or ransac line fitting in multidimensionl image

computer visionimage analysisimage processingransac

i have a multidimensional image of size 1024*512*128. For each slice(1024*512), I have single point from the mid slice of an image say from slice 40 to 128. So, i have 89 points in my multidimensional (volumetric) image. how can i fit the straight line using svd/ ransac or any other method and then extrapolate that line to the end of the volumetric image?

Best Answer

This will give you the equations Aeq*x=beq for the line,
Q=[X(:),Y(:),Z(:)];
m=mean(Q,1).';
Q=Q-m.';
[~,~,Z]=svd(Q,0);
Aeq=Z(:,2:3).';
beq=Aeq*m;
Because you know the vertices of the volume's bounding box (put them in the rows of a matrix V), you can then use intersectionHull (download here) to find the intersection points of the line with the box,
I=intersectionHull('vert',V,'lcon',[],[],Aeq,beq);
Related Question