2016-03-16 5 views
1

Я действительно изо всех сил пытаюсь сопоставить средние данные о точках облака в Matlab (наименьший квадрат). Я попробовал множество других подходов, как показано на этой странице, но получаю такой же средний уровень, как и на изображении, что, очевидно, ужасно неправильно. Есть ли у вас какие-либо идеи, что может быть неправильным?Установите среднюю плоскую точку для определения облачных данных в Matlab

load('xyz.mat'); %//load the variable 'a' that is 44005x3 in size 

x = a(:,1); 
y = a(:,2); 
z = a(:,3); 
%//Calculate coeffs for a mean plane for points x,y,z 
%//eq: xh(1) xh(2)*x + xh(3)y + - z = 0 

[X,Y] = meshgrid(min(x):10:max(x),min(y):10:max(y)); 

A = [ones(length(x),1) x y ]; 
xh = A'*A\(A'*z); 
Zp = X.*(xh(2)) + Y.*xh(3) + xh(1); 

%//plot mean plane 
mesh(X,Y,Zp,'EdgeColor','Black'); 
hold on; 
%//plot pointcloud 
pcshow(a) 
hold off; 

Result from the script run

Link to matlab point cloud data

+2

Не является ли уравнение плоскости xh (1) * x + xh (2) * y + xh (3) * z + xh (4) = 0'? –

+0

Этот подход работает только в том случае, если ваша плоскость z = f (x, y). То есть, решение будет деградировать, а затем разрушиться по мере приближения плоскости к вертикали. Мне нравится это решение лучше: http://stackoverflow.com/a/10904220/1401351 – Peter

ответ

0

Попробуйте использовать функцию pcfitplane. Он обеспечивает надежную установку с использованием RANSAC.