Поиск:

Ответ в темуСоздание новой темы Создание опроса
> аппроксимировать меньшим кол-вом точек 
:(
    Опции темы
mrgloom
Дата 19.9.2012, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 8.6.2011

Репутация: нет
Всего: нет



т.е. есть кривая состоящая из точек, а надо её наилучшим образом сапроксимировать меньшим кол-вом точек. 
http://www.ziegelmann.org/ziegelmann/Mark%...proximation.htm
http://ru.wikipedia.org/wiki/%D0%90%D0%BB%...%B5%D1%80%D0%B0
что то типа такого.

интересуют алгоритмы и библиотеки.

Это сообщение отредактировал(а) mrgloom - 19.9.2012, 13:31
PM MAIL   Вверх
baldina
Дата 19.9.2012, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 4
Всего: 101



правильно поставленный вопрос содержит ответ: используй CNOP.
что касается алгоритма, идея прям на той странице и изложена:
1. задать требуемую точность (если не задавать, замкнутые объекты будут вырождаться в треугольники, а незамкнутые - в прямые)
2. выкинуть/добавить точки таким образом, что бы минимизировать число точек при удовлетворении заданной точности. принцип простой: выкидываются все точки, лежащие на отрезке (в пределах точности), кроме крайних. 
PM MAIL   Вверх
mrgloom
Дата 19.9.2012, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 8.6.2011

Репутация: нет
Всего: нет



дело в том, что тут
http://www.ziegelmann.info/Mark%20Ziegelma...orsica200_s.gif
там где участок кривой прямой на нём нету точек, т.е. он просто заменяется отрезком, у меня могут быть довольно большие такие прямые отрезки, но мне надо что на этих отрезках кол-во точек просто уменьшилось ,а не стало =0. 
PM MAIL   Вверх
baldina
Дата 19.9.2012, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 4
Всего: 101



Цитата(mrgloom @  19.9.2012,  14:21 Найти цитируемый пост)
мне надо что на этих отрезках кол-во точек просто уменьшилось ,а не стало =0

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

Добавлено через 2 минуты и 27 секунд
если прямолинейные участки должны иметь предельную длину, можно наряду с критерием точности ввести критерий максимального расстояния, и при его превышении точки не удалять.
PM MAIL   Вверх
Earnest
Дата 19.9.2012, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 7
Всего: 183



Дуглас-Пекер легко модифицируется на предмет максимального расстояния между точками. Просто добавляешь еще одно условие кроме проверки дистанции. На самом деле, это простой и быстрый алгоритм.  Есть код, надо?
Но! если исходная кривая не гладкая (содержит мусор), то результат будет не очень. Лучше бы сначала отфильтровать (сгладить), а потом редуцировать.


Присоединённый файл ( Кол-во скачиваний: 10 )
Присоединённый файл  PolyApprox.rar 2,09 Kb


--------------------
...
PM   Вверх
mrgloom
Дата 20.9.2012, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 8.6.2011

Репутация: нет
Всего: нет



мне просто надо чтобы плотность точек была примерно одинаковая(ибо я занимаюсь наложением 2-х наборов точек), это конечно не возможно,ибо там где кривизна больше там нужно больше точек для описания.


последний пост вроде похож на правду, попробую.


вот еще похожее
http://www.unseen-academy.de/snippet_timeconst_spline.html

еще непонятно как сами кривые делить.
т.е. у меня например есть от алгоритма канни контуры(алгоритм помоему не обещает однопиксельную толщину?) или просто контуры которые которые там пересекаются и т.д.
так вот скорее всего их надо предобработать, т.е. все точки сочленения где число соседей >2 являются особыми точками сочленения, а всё что между ними это кривые. 
PM MAIL   Вверх
Earnest
Дата 20.9.2012, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 7
Всего: 183



Получить точки через одинаковые промежутки еще проще. Только действительно, на крутых изгибах их может оказаться недостаточно, а на ровных участках - чересчур.
После Канни получается растр, вроде бы однопиксельный, но его все равно еще надо векторизовать.


--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0991 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.