Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];

Вниз

Аппроксимация контура   Найти похожие ветки 

 
Анонимщик ©   (2004-10-15 17:30) [0]

Мне нужно аппроксимировать набор точек, описывающих замкнутый контур, похожий на эллипс (x^2/a^2 + y^2/b^2=1), эллипсом, и найти соответствующие лучшие в каком-то смысле (метода наименьших квадратов, например) a и b. Собственно алгоритм меня не интересует, есть ли библиотеки, позволяющие такое делать?


 
begin...end ©   (2004-10-15 17:47) [1]

Я встречал только про аппроксимацию полиномами. А для эллипса - не знаю, возможно, и есть. Но тут нужно решить два уравнения, это довольно просто.


 
MBo ©   (2004-10-15 17:53) [2]

Оси эллипса параллельны осям координат?


 
MBo ©   (2004-10-15 18:13) [3]

Если нет, то теоретически, насколько мне кажется, можно посчитать моменты распределения плотности точек первого и второго порядка, что даст "центр" эллипса (2 параметра) и еще три параметра, однозначно характеризующие эллипс (для описания эллипса общего вида необходимо 5 величин)


 
TUser ©   (2004-10-15 18:50) [4]

А если да (что следует из формулы) - тогда функция F(a,b), которая дает сумму квадратов отклонений для всех этих точек, имеет единственный минимум, который можно найти оптимизацией. Параметров-то всего два.


 
Ega23 ©   (2004-10-15 18:55) [5]

для описания эллипса общего вида необходимо 5 величин)

А разве трёх недостаточно?


 
Sapersky   (2004-10-15 19:17) [6]

можно посчитать моменты распределения плотности точек первого и второго порядка

А можно хотя бы ссылкой намекнуть, как это?

Вообще, если по скорости не критично, то можно делать многомерную оптимизацию (или как она правильно называется), генетическим алгоритмом, например.
Брать 2 точки (фокусы эллипса), считать сумму расстояний от них до каждой точки контура - для эллипса она должна быть равна. Т.е. чем равнее, тем эллипсоиднее :), точнее, зависит от того, какой эллипс нужен - если "наиболее приближённый", то брать среднее от всех расстояний и считать сумму разностей его и всех точек; если вписанный - минимальное расстояние и ещё учитывать площадь.


 
Ega23 ©   (2004-10-15 19:21) [7]

Sapersky   (15.10.04 19:17) [6]

Ну вот вроде именно так и нужно. По крайней мере, я бы именно так и делал.


 
Cobalt ©   (2004-10-15 23:23) [8]

Гы :)
У меня сегодня по Вычислительной Математике проходили тему Интерполяция и аппроксимация ):


 
MBo ©   (2004-10-16 12:12) [9]

>можно посчитать моменты распределения плотности точек первого и второго порядка
>А можно хотя бы ссылкой намекнуть, как это?
Книги по численным методам, в частности, Numerical Recipes (есть в инете).
Насколько я помню, в Math есть процедура расчета нескольких первых моментов (отдельно по координатам X и Y).
Реально ли это поможет в данном случае - не знаю, не пробовал.


 
MBo ©   (2004-10-16 17:39) [10]

>Реально ли это поможет в данном случае
Увы, поможет лишь при равномерном (или по крайней мере) известном распределении точек по углу, длине дуги, или другому параметру.


 
Анонимщик ©   (2004-10-18 11:24) [11]

Я же сказал: библиотека нужна, поскольку у меня не только эллипсы, но и овалы, треугольники и т.п. Еще не знаю, что может понадобиться, а общие подходы мне известны, другое дело, что хорошие алгоритмы стоят большого затраченного времени.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.048 c
14-1097760466
GavrilaMama
2004-10-14 17:27
2004.10.31
Тип жесткого диска - динамический... Как исправить?


1-1098268236
AntonSh
2004-10-20 14:30
2004.10.31
Работа с файлами


1-1098044705
Closer
2004-10-18 00:25
2004.10.31
Как очистить экран в консольном приложении?


14-1097560485
Holy
2004-10-12 09:54
2004.10.31
NEC 2510a


14-1097680643
peypivo
2004-10-13 19:17
2004.10.31
:-)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский