У меня есть большой набор точек данных (все 2D, которые представляют ребра фигуры), где существует множество, которые выстраиваются в линию по прямой линии, состоящей из множества точек (пикселей). Я хотел бы оптимизировать данные, удалив точки, которые образуют прямые линии (один и тот же вектор) и оставляют только две последние конечные точки ряда для определения линии и игнорируют все промежуточные точки (децимация).
Ряды линий, расположенные строго по осям X и Y сетки, представляют один уровень сложности. Второй уровень представляет собой диагональные линии, которые при применении к сетке (то есть в пикселях) могут нуждаться в определении некоторых линий посредством интерполяции шаблона. (то есть 1 на 3 больше, 1 на 4 больше, 1 на 5 и т. д. представляет собой прямую линию)
Я хотел бы использовать любые существующие библиотеки или примеры фрагментов кода, которые могут уже существовать, вместо того, чтобы заново изобретать колесо с нуля.
Будем благодарны за любые указатели, советы, предложения по коду, алгоритмы, частичные решения и т. Д.
Это будет проект .NET, но я хорошо разбираюсь и в других языках (ruby, perl, python), поэтому, если такой пример существует в похожих языках, он будет мне полезен.
Спасибо
- Добавление ссылки на образец набора данных:
http://pastie.org/1015421
- Добавление
Образец изображения, чтобы показать цель
оптимизация / прореживание
альтернативный текст http://www.streamline -ss.com / tmp / point_optimization.png
Обновлен:
- Нам удалось изменить входящий набор данных, чтобы он был оптимизирован таким образом, чтобы он представлял собой набор данных на основе сетки / пикселя без единиц измерения из исходного источника вместо интерполированных местоположений на основе единиц (во избежание отклонений рассчитанной сетки)
- Пример этого набора входных данных (неоптимизированный) здесь http://pastie.org/1017486
- До сих пор я был в состоянии написать подпрограмму, которая удалит дубликаты и удалит все точки, которые имеют такой же x или y, что и предыдущая точка
- Необходимо найти способ определения повторяющихся шаблонов и исключить все, кроме конечных точек начального и конечного шаблонов - для прореживания прямой линии.
- Я до сих пор не нашел библиотеки, класса или фрагмента кода, где кто-то уже сделал это, но мне кажется, что это не новая проблема, и кто-то наверняка изобрел это колесо