2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему
 
 Алгоритм поиска параметров 2х окружностей
Сообщение13.04.2021, 14:35 


29/12/09
366
Привет, всем!
Помогите найти хороший алгоритм.
Даны зашумленные данные дуг 2х окружностей одинакового радиуса R в виде координат ${x_i,y_i}$ (параметры окружностей: координаты центров и радиуса неизвестны). Также, можно считать, что известно какие точки принадлежат какой из окружностей. Но, если будут идеи как разделить эти множества точек, то я буду очень рад выслушать. Пример представлен на рисунке

Изображение

Нужен алгоритм, с помощью которого можно будет найти центры этих окружностей и R.
Есть очень много скриптов на матлабе, которые помогают найти параметры окружности для зашумленных данных. Я пытался их использовать. Но, очень часто они дают сильное отличие в радиусах, если я использую их последовательно для каждой из дуг окружностей. А в моей задаче заранее известно, что радиусы одинаковые.
У меня есть идея, реализовать такой алгоритм:
Пусть $\{xb_i,yb_i\}$ - точки, которые принадлежат одной окружности(черные точки) и $\{xr_j,yr_j\}$ - точки, которые принадлежат другой окружности (красные точки) (см. рис)
Центры окружностей с одинаковыми радиусами найти из минимума функции $F(a_1,b_1,a_2,b_2)=\sum{(xb_i-a_1)^2+(yb_i-b_1)^2}-\sum{(xr_j-a_2)^2+(yr_j-b_2)^2} $
А потом, после того как найдутся центры $(a_1,b_1)$ и $(a_2,b_2)$ уже искать радиус как среднее расстояние от всех точек, т.е.
$R=\frac{\sum{\sqrt{(xb_i-a_1)^2+(yb_i-b_1)^2}}+\sum{\sqrt{(xr_j-a_2)^2+(yr_j-b_2)^2}}}{N+M}$, где $N$ и $M$ количество черных и красных точек соответственно

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

 Профиль  
                  
 
 Re: Алгоритм поиска параметров 2х окружностей
Сообщение13.04.2021, 15:09 


14/01/11
3040
Раз радиус один, мне кажется, было бы естественно сразу ввести его в качестве одного из искомых параметров.

-- Вт апр 13, 2021 16:00:47 --

И да, минимизируемый функционал у вас очень странно выглядит, если не сказать больше...

 Профиль  
                  
 
 Re: Алгоритм поиска параметров 2х окружностей
Сообщение13.04.2021, 16:37 


27/06/20
337
Согласен, что нужно сразу минимизировать функцию пяти неизвестных.
И вначале неплохо предположить распределение шума на этой плоскости (может быть он только вдоль радиуса или только вдоль оси ординат).
В первом случае минимизируем:
$f(r, x_{n}, y_{n}, x_{m}, y_{m}) = \sum\limits_{i=1}^{n} \left( r - \sqrt{\left( y_{i} - y_n \right)^{2} + \left( x_{i} - x_n \right)^{2} }  \right)^{2}  + \sum\limits_{j=1}^{m} \left( r - \sqrt{\left( y_{j} - y_m \right)^{2} + \left( x_{j} - x_m \right)^{2} }  \right)^{2}$

Во втором:
$f(r, x_{n}, y_{n}, x_{m}, y_{m}) = \sum\limits_{i=1}^{n} \left( y_{i} - y_n - \sqrt{ r^{2} - \left( x_{i} - x_n \right)^{2} }  \right)^{2}  + \sum\limits_{j=1}^{m} \left( y_{j} - y_m - \sqrt{ r^{2} - \left( x_{j} - x_m \right)^{2} }  \right)^{2}$

 Профиль  
                  
 
 Re: Алгоритм поиска параметров 2х окружностей
Сообщение13.04.2021, 16:40 
Заслуженный участник


10/01/16
2318
alexey007
1. Ваш функционал состоит из двух слагаемых, каждое из которых содержит лишь одну пару параметров, и минимизация суммы будет равносильна минимизации каждого по отдельности. Задача упростится.
2. Непонятно, зачем минимизировать именно сумму расстояний: лучше - сумму квадратов; это позволит найти минимум явно.
3. Минимизация суммы квадратов (да и просто суммы) даст не центр окружности; она даст центр масс системы точек. Например, если все точки - на небольшой по размеру дуге, то получим примерно середину этой дуги.

Итого: не годится Ваш функционал.
И, конечно, следует учесть рекомендациюSender про параметр - "радиус окружностей".
Т.е., что-то типа $\sum\limits_{}^{}((xb_i-f_1)^2+(yb_i-b_1)^2-\rho)^2+...$, где $\rho=R^2$. Беда будет в том, что функционал не будет квадратичным - единственность минимума не гарантируется, решать придется градиентными методами (ну хоть градиент легко считать -если нет корней), и результат не гарантируем...

-- 13.04.2021, 18:43 --

ipgmvq
Второй - нехорош: под корнем вполне может получиться отрицательность...

 Профиль  
                  
 
 Re: Алгоритм поиска параметров 2х окружностей
Сообщение14.04.2021, 08:46 
Заслуженный участник
Аватара пользователя


11/03/08
9904
Москва
А геометрически? Найти две далеко отстоящие точки, и ещё одну примерно между ними, провести линию через середины отрезков, найти точки пересечения. По крайней мере будет хорошее приближение для оптимизационного алгоритма. Поскольку единственность экстремума не гарантирована - это полезно.

 Профиль  
                  
 
 Re: Алгоритм поиска параметров 2х окружностей
Сообщение14.04.2021, 16:10 


29/12/09
366
Спасибо всем за советы! Классный форум и тут крутые ребята. Использовал функционал
ipgmvq в сообщении #1514137 писал(а):
В первом случае минимизируем:
$f(r, x_{n}, y_{n}, x_{m}, y_{m}) = \sum\limits_{i=1}^{n} \left( r - \sqrt{\left( y_{i} - y_n \right)^{2} + \left( x_{i} - x_n \right)^{2} }  \right)^{2}  + \sum\limits_{j=1}^{m} \left( r - \sqrt{\left( y_{j} - y_m \right)^{2} + \left( x_{j} - x_m \right)^{2} }  \right)^{2}$


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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group