Пускаем сканлайн. В состоянии 0 до конца сканлайна просматриваем чёрные пиксели, складываем и делим под конец на количество (можно проще), если y-координата найдена, переходим в состояние 1. В состоянии 1 считаем оставшиеся строки, где есть чёрные пиксели/скипаем их, пока не находим пустую. Вот и x.
Выход за границы изображения учитывать? При учёте будет сложнее, но, думаю, выполнимо, зная паттерн правильных окружностей по построчным длинам.