Полагаю, эту задачу проще всего решить "в лоб" перебором:
var bestCircleness = 0;
var bestX, bestY, bestRadius;
for (var x = 0; x < width; x++) {
for (var y = 0; y < height; y++) {
for (var radius = minRadius; radius <= maxRadius; radius++) {
var circleness = getCircleness(x, y, radius);
if (circleness > bestCircleness) {
bestCircleness = circleness;
bestX = x;
bestY = y;
bestRadius = radius;
}
}
}
}
Где функция
getCircleness(x, y, radius) возвращает количество черных пикселей внутри кольца c внутренним\внешним радиусом radius±1.