@egorkozelskij

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

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

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

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

Пока делаю так:
Бегу по всем черным пикселям и проверяю есть ли у него хоть один сосед черного цвета. Если есть, то это граничный пиксель.
  • Вопрос задан
  • 221 просмотр
Пригласить эксперта
Ответы на вопрос 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 });
 }
Ответ написан
Ваш ответ на вопрос

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

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