1.項目介紹
利用三維點雲對線激光采集的數據進行分析,並對其中凹陷部分進行測量。如下爲單線分析。主要目標是測量凹槽到下端平面的距離。
2.運用到的知識點
2.1.最小二乘三維平面擬合
數據點雲是通過雙目相機對打在目標上的線激光匹配得到的結果,也就是說激光的切面不在XOZ或XOY平面內,爲了方便數據分析,將三維點雲投影到線激光平面。
通過最小二乘擬合,可以通過採樣數據點得到平面方程:
公式推導參考:最小二乘解
//m爲採樣數據數,大於等於3
Matrix<double> A = new DenseMatrix(m, 3);
Matrix<double> b = new DenseMatrix(m, 1);
int row = 0;
for (int i = 0; i < points.Count; i++)
{
List<float3> line = points[i];
//將每個點錄入矩陣
for (int j = 0; j < line.Count; j++)
{
float3 value = line[j];
A[row, 0] = value.x;
A[row, 1] = value.y;
A[row, 2] = 1;
b[row, 0] = value.z;
row++;
}
}
Matrix<double> AT = A.Transpose();
m_planeMatrix = (AT * A).Inverse() * AT * b;
2.2.直線方程
已知直線上兩點求直線的一般式方程(一般式支持所有情況,計算機圖形處理最常用)。
兩點:,則直線方程式爲:
其中:
點到直線的距離爲:
垂足爲:
最終結果