Привет, всем!
Помогите найти хороший алгоритм.
Даны зашумленные данные дуг 2х окружностей одинакового радиуса R в виде координат

(параметры окружностей: координаты центров и радиуса неизвестны). Также, можно считать, что известно какие точки принадлежат какой из окружностей. Но, если будут идеи как разделить эти множества точек, то я буду очень рад выслушать. Пример представлен на рисунке

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

- точки, которые принадлежат одной окружности(черные точки) и

- точки, которые принадлежат другой окружности (красные точки) (см. рис)
Центры окружностей с одинаковыми радиусами найти из минимума функции

А потом, после того как найдутся центры

и

уже искать радиус как среднее расстояние от всех точек, т.е.

, где

и

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