2012-05-03 3 views
4

3D 점 세트가 있습니다.2D 평면 피팅, ransac, matlab, 링크

Points_[x,y,z]% n*3 where n is number of points 

나는 평면에 맞추기를 원하고 비행기의 높이를 확인하고 싶다. 2D 문제라고 생각합니다.

z=bo+b1x+b2y; 

나는 피팅 차원 RANSAC 평면에 대한 링크를 찾을 수 없습니다. 누군가이 링크 나 파일을 제공 할 수 있습니까?

둘째, 일부 소프트웨어 (상업용)는 평면의 높이 값을 제공합니다. 그것은 평균값이거나 어떤 복잡한 값입니다.

감사합니다,

+0

당신이 무엇을 요구하고 있는지 분명하지 않습니다. 평면의 폭과 길이는 무한하지만 높이가 없습니다. 그러나 2D RANSAC 구현은 다음과 같습니다. http://www.visual-experiments.com/demo/ransac.js/ –

+0

RANSAC이 과도한 측정을 기대하지 않는다면 RANSAC은 과도한 것처럼 보입니다. 트러시 오래된 선형 최소 제곱 잘 작동합니다. – JonB

답변

1

당신이 (:) 당신에게 열 벡터를 제공하는 것입니다 다음 "A"매트릭스

A = [ones(numel(Points_X),1), Points_X(:), Points_Y(:)]; 

형성하는 경우 (경우를 그들과 함께 시작되지 않은) 그런 다음

당신은 방정식의 고전적인 선형 시스템으로 방정식을 쓸 수 있습니다 :

A*b = Points_Z(:); 

여기서, b = [b0; b1; b2] - 결정하려는 매개 변수의 열 벡터입니다. 이

b=A\Points_Z(:) 

또는

b=pinv(A)*Points_Z(:)이 mldivide 및 pinv에 대한 도움말을 참조 표준 솔루션을 제공합니다.

3 개 이상의 줄이 모두 있어야하는 줄이 있어야합니다. 이와 같이 과다한 시스템의 경우, pinv 및 \는 기본적으로 동일한 결과를 생성합니다. 만약 그들이 거의 동일하다면, 몇 가지 이점이있을 수 있습니다.

b의 3 개 매개 변수는 기본적으로 평면의 원점 위의 평면 높이, x 기울기 및 y 기울기입니다. 당신이 그것에 대해 생각한다면, 비행기의 "높이"는 당신의 z 용어입니다. 어떤 점 (원점과 같은 높이)에 대해서 이야기 할 수 있습니다. 당신은 샘플 점의 질량 중심에 높이를 원하는 경우 지금, 당신은 아마 mean(Points_Z(:)) 단지 동일합니다

z_mean = [1 mean(Points_X(:)) mean(Points_Y(:))] * b 

할 것입니다. 이 정의가 의미를 갖기 위해서는 관심 영역에 균일 한 간격의 격자가 있어야합니다.

응용 프로그램에 따라 다른 정의가있을 수 있습니다. 예를 들어, 방의 중심에서 높이를 찾고 벽과 내부를 따라 샘플링 한 점을 사용하면 평균값을 평균값으로 바꾸는 것이 더 적절할 수 있습니다.