Если фото достаточно контрастное, я бы сначала попробовал его оконтурить, т.е. нашел бы линии, на которых происходит скачок яркости (если фото монохромное) или цвета.
Преобразовав растр в набор векторных линий, следующим этапом отбросил бы контуры, имеющие явные изломы - такие никак не могут оказаться окружностями.
Ну а дальше остается:
- проверить оставшиеся контуры, годятся ли они на роль кандидатов в эллипсы; (1)
- построить прямоугольник, описанный около контура (его центр - это предполагаемый центр эллипса); (2)
- найти прямые, соответствующие осям эллипса; (3)
- если они не параллельны координатным осям, выполнить поворот; (4)
- заново описать прямоугольник около преобразованного контура; (5)
- преобразовать координаты таким образом, чтобы прямоугольник превратился в квадрат, при этом если наш контур был эллипсом, он должен превратиться в окружность; (6)
- оценить отклонение нашей фигуры от окружности (например, подсчитать среднее расстояние от точек контура до центра и, взяв его в качестве радиуса, рассчитать среднеквадратическое отклонение расстояния каждой точки контура до центра от радиуса).
Вроде бы все, должно сработать.