У меня есть две матрицы, одна из которых содержит 3D-координаты, которые являются номинальными позициями для модели САПР, а другая содержит 3D-координаты фактических измеренных позиций с использованием КИМ. Каждая номинальная точка имеет соответствующее измерение, или, другими словами, две матрицы имеют одинаковую длину и ширину. Я не уверен, как лучше всего подогнать измеренные точки к номинальным точкам. Мне нужен способ вычисления смещения и поворота для применения ко всем измеренным точкам, которые обеспечивают минимальное расстояние между каждой номинальной/измеренной парой точек, не превышая допустимых допусков на максимальное расстояние в любой другой точке. Это похоже на регистрацию облаков точек, но отличается тем, что каждая пара номинальных/измеренных точек имеет уникальный допуск/предел на допустимое расстояние друг от друга. Этот предел выше для одних пар и ниже для других. Я программирую в .Net и изучил библиотеку облаков точек (PCL), OpenCV, Excel и основные матричные операции как возможные подходы. Это образец данных
X Nom Y Nom Z Nom X Meas Y Meas Z Meas Upper Tol Lower Tol
118.81 2.24 -14.14 118.68 2.24 -14.14 1.00 -0.50
118.72 1.71 -17.19 118.52 1.70 -17.16 1.00 -0.50
115.36 1.53 -24.19 115.14 1.52 -23.98 0.50 -0.50
108.73 1.20 -27.75 108.66 1.20 -27.41 0.20 -0.20
Ниже приведен тип матрицы, которую мне нужно рассчитать, чтобы лучше всего подогнать измеренные точки к номинальным точкам. Я умножу его на матрицу измеренных точек, чтобы лучше всего соответствовать матрице номинальных точек.
Transformation
0.999897324 -0.000587540 0.014317661
0.000632725 0.999994834 -0.003151567
-0.014315736 0.003160302 0.999892530
-0.000990993 0.001672040 0.001672040