Задать вопрос
@egorkozelskij

Как найти все границы объектов, описанных попиксельно?

Здравствуйте!

Есть двумерный массив с пикселями двух цветов .
Белый - незанятое пространство
Черный - препятствия

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

Пока делаю так:
Бегу по всем черным пикселям и проверяю есть ли у него хоть один сосед черного цвета. Если есть, то это граничный пиксель.
  • Вопрос задан
  • 224 просмотра
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillbox
    Архитектор ПО
    4 месяца
    Далее
  • Stepik
    Алгоритмы: теория и практика. Структуры данных
    1 неделя
    Далее
Пригласить эксперта
Ответы на вопрос 1
@kttotto
пофиг на чем писать
Если это двумерный массив, где каждый пиксель имеет координаты, то почему бы не взять из каждой строки индексы первого черного и последнего черного.

На C# это выглядело бы так
var arr = new bool[100][];
var contour = new List<List<int>>();

for (var y = 0; y < 100; y++)
{
	var firstX = Array.IndexOf(arr[y], true);
	var lastX = Array.LastIndexOf(arr[y], true);

	if(firstX != -1)
		 contour.Add(new List<int> { firstX, y });

	if (lastX != -1)
		 contour.Add(new List<int> { lastX, y });
 }
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы