временные ряды для двоичных фигур - PullRequest
2 голосов
/ 01 декабря 2011

Я работал над извлечением временного ряда из фигур на основе расстояний до центра масс по часовой стрелке, начиная с угла от 0 до 360.

Моя реализация, в которой точки контура располагаются на основе их угла к [1,0], вектор может быть полезен для некоторых фигур, но бесполезен для фигур, которые имеют большую артикуляцию. Рассмотрим следующий код:

im = Image.open (os.path.join (путь, имя файла))

im = im.filter (ifilter.MedianFilter)

contim = im.filter (ifilter.CONTOUR)

contim = contim [1: -1,1: -1] # это потому, что границы извлекаются здесь как контуры

contpts = np.where (contim == 0)

contpts = np.vstack ((contpts [0], contpts [1])) # Просто нужно расположить эти точки по часовой стрелке относительно центра масс фигуры

Может кто-нибудь направить меня к тому, как я могу извлечь эту особенность из любой фигуры, где я могу начать с точки и продолжать идти по контуру, чтобы извлечь все расстояния до центра масс фигуры.

Для получения дополнительной информации об этой функции, пожалуйста, просмотрите эту статью: «LB_Keogh поддерживает точное индексирование фигур при неизменности вращения с произвольными представлениями и мерами расстояния»

1 Ответ

0 голосов
/ 24 декабря 2011

Если я понял, в дискретизированной плоскости есть геометрическая фигура, представленная в виде матрицы. Если запись 1, вы внутри фигуры. Если это 0, вы снаружи. Он хочет определить расстояние между краем фигуры и центром фигуры для всех точек на краю. Он параметризовал его с помощью полярной системы координат. Центр фигуры является источником, и теперь он хочет получить расстояние до границы как функцию угла. Это то, что он называет своим «временным рядом».

Это правильно?

Если да, не могли бы вы просто:

1. determine the center of mass,
2. reposition the origin to match the center of mass. 
3. start angle at 0
4. r = 0
5. for each angle in [0,1,...,360] 
      1. If you're in inside the figure, increase r until you reach the border. 
      2. If you're outside the figure, decrease r until you reach the border.
      3. When you reach the border, d(angle) = r

Если фигура имеет более или менее непрерывную границу, она будет следовать контуру.

Будет ли это работать?

...