Вы можете использовать аккумулятор.Представьте пустое пространство в виде матрицы m размером 0, поэтому каждая ячейка матрицы представляет одну точку с наименьшей зернистостью (например, пиксель).Теперь отметьте положение вашей маркировки в аккумуляторе с 1. Если вы берете сумму матрицы, в этой точке должно быть 1. Теперь для всех точек, которые будут включены в ваш круг, отметьте 1 на том же аккумуляторе.Теперь проверьте сумму накопителя, если она равна количеству точек в круге + 1, круг не покрывает точку, а если равен только количеству точек, круг находится внутри маркера.
Редактировать: Если вы хотите искать перекрытия: вместо того, чтобы просто устанавливать точки в 1, увеличивайте точки на 1 для каждого объекта, включающего его.Таким образом, число кругов перекрытия будет равно 2, а тройное перекрытие будет равно 3 и т. Д. Затем вы можете найти их, выполнив поиск локального или глобального максимума или минимумов.