Russian Qt Forum
Ноябрь 22, 2024, 14:19 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Разбить картинку на регионы  (Прочитано 4287 раз)
uriel
Гость
« : Март 31, 2009, 11:58 »

Возникла следующая задачка: есть двухцветная картинка, разделённая линиями на замкнутые регионы (например, карта). Так вот нужно получить массив этих самых регионов.
Может кто-нибудь подсказать, как это можно сделать наиболее быстрым образом? Заранее спасибо.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #1 : Апрель 04, 2009, 23:23 »

есть кривоватый алгоритм поиска связных областей... перебирая пиксели картинки возможно 4 случая:
Код:
	        if (image -> pixel(x - 1, y - 1) == qRgb(0, 0, 0)) //граница, условно черного цвета
continue;//areas[x][y] = 0;
else if (areas[x][y - 1] == 0 && areas[x - 1][y] == 0)
areas[x][y] = ++curarea;
else if (areas[x][y - 1] != 0 && areas[x - 1][y] == 0)
areas[x][y] = areas[x][y - 1];
else if (areas[x][y - 1] == 0 && areas[x - 1][y] != 0)
areas[x][y] = areas[x - 1][y];
else if (areas[x][y - 1] != 0 && areas[x - 1][y] != 0)
в последнем случае - коллизия 2х уже заполненных областей и их нужно склеить в одну. Алгоритм простой, но медленный.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.183 секунд. Запросов: 22.