Вниз
Скачать: CL | DM;

Подскажите алгоритм или возможно название алгоритма   Найти похожие ветки 

← →
DVM ©   (2009-11-10 20:40) [0]

Итак, есть клетчатое поле n x m клеток. Некоторые клетки этого поля - особые (ну, например, черные, а поле само белое, неважно). Особые клетки разбросаны хаотично по полю.

Требуется разбить все такие особые клетки на группы. Клетки входят в одну группу, если касаются друг друга углами или сторонами. Т.е., например, если клетка A касается углом клетки B, которая в свою очередь касается клетки С, то все они принадлежат одной группе.

Результат работы алгоритма - один или несколько прямоугольников (групп), описывающих все клетки каждой группы.

Желательно группировать клетки за один проход, от первой клетки к последней.

Не сталкивался ли кто с таким алгоритмом? Может у методики группировки есть и название?


← →
@!!ex ©   (2009-11-10 20:57) [1]

за один проход не выйдет.

алгоритм простой:
находим первую клетку. пускаем волну от нее. все клетки, которые захватывает волна помечаем как принадлежащим группе.
Как только волне идти некуда продолжаем поиск.


← →
@!!ex ©   (2009-11-10 20:59) [2]

за один проход не вйдет - имеется ввиду, что как ни крути просто поэлементной проверкой не обойтись. Все равно будут элементы которые будут проверятся несколько раз.


← →
Pavia ©   (2009-11-10 21:13) [3]

Алгоритм называется выделение связанных областей.

Делается обычно за два прохода можно за один.

Берем точку тьфу клетку,если черная.
Если ни слева, ни сверху ни слева сверху нет черной то присваиваем клетке счетчик групп. Счетчик увеличиваем на один.

То смотрим если слева или сверху или слева сверху черная то присваиваем номер той клетки. Если к примеру имеем сверху один номер, а слева другой то выбираем любой.

Второй проход нужен что бы объединить вот эти не стыковки.


← →
DVM ©   (2009-11-10 21:27) [4]


> @!!ex ©   (10.11.09 20:57) [1]


> пускаем волну от нее. все клетки, которые захватывает волна
> помечаем как принадлежащим группе.

О волновом алгоритме я немного слышал. Но мне кажется он слишком ресурсоемкий выходит. Мне как раз важна скорость. Но все равно, спасибо.


> Pavia ©   (10.11.09 21:13) [3]

В общих чертах понятно. Спасибо.


← →
Sapersky   (2009-11-10 21:27) [5]

http://homepages.inf.ed.ac.uk/rbf/HIPR2/label.htm
Т.е. если мы обнаружили, что закрасили одну фигуру разными цветами, предлагается просто запомнить где-нибудь, что эти цвета эквивалентны, и на втором проходе объединить.


← →
DVM ©   (2009-11-10 21:54) [6]

Нашел. http://cgm.computergraphics.ru/content/view/53

Как раз моя задача.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.007 c
15-1254334797
Kerk
2009-09-30 22:19
2010.01.10
MySQL разность дат в днях


15-1257541254
Игорь Шевченко
2009-11-07 00:00
2010.01.10
Дмитрий Заварзин aka Думкин, с днем рождения!


11-1210345865
Valera
2008-05-09 19:11
2010.01.10
Проблема С PaintBox (Соие программы типа Paint) на чистом kolздан


15-1256567711
savva
2009-10-26 17:35
2010.01.10
К обладателям клиента форумного..


2-1258407251
котэ
2009-11-17 00:34
2010.01.10
Рисование на окне полноэкранного приложения




   Наверх