Как я могу проверить сходство между двумя объектами, отсканированными Kinect? - PullRequest
0 голосов
/ 09 июня 2019

У меня есть школьный проект, в котором мне нужно идентифицировать объект в облаке точек XYZRGB, созданном kinect, сравнивая набор характеристик этого объекта с обучающим набором.

Характеристики объектов включают в себя:

  • длина (в метрах);
  • Высота (в метрах);
  • Количество баллов.
  • Красный (Среднее по всем пунктам, от 0 до 255);
  • Зеленый (среднее по всем пунктам, от 0 до 255);
  • Синий (среднее по всем пунктам, от 0 до 255);

В тренировочном наборе у нас есть что-то вроде (в том же порядке, что и выше):

blue_box 0.115771 0.0787957 205 52.4049 161.946 161.946
white_box 0.120375 0.0913906 274 212.974 206.255 206.255
red_box 0.223208 0.118088 470 183.574 37.2574 37.2574
black_tape 0.194007 0.103328 303 74.3234 71.8647 71.8647
blue_book 0.223942 0.232253 758 54.7559 74.1214 74.1214
gray_book 0.193717 0.225758 671 180.365 183.131 183.131
...

Чтобы идентифицировать объект, нам нужно проверить, какой объект в обучающем наборе имеет наиболее похожие значения, нормализуя разницу (делая так, чтобы сходство представлялось значением между [0..1]).

Проблема в том, что евклидово расстояние не работает в этом случае, так как:

Наличие объекта с:

  • 10 см Высота и 200 Красный

Учебный комплект с:

  • Object_X: 20 см в высоту и 200 красных
  • Object_Y: 10 см в высоту и 211 красный

Object_X будет выбран неправильно, даже если Object_Y похож.

У меня вопрос, есть ли способ нормализовать эти значения, чтобы все они имели одинаковый вес при проверке сходства?

...