Цитата(qxov @ Nov 17 2007, 00:53)

Вот плохо понятно, как, всё-таки, производится разбиение на области

Для примера представьте себе изображение, где на черном фоне имеются три белых геометрических фигуры: прямоугольник, треугольник и круг. Тогда на выходе алгоритма в массиве AreasNumbBuf будет следующий результат:
00000000000000000000000000000000000000000000
00011111111111111111000000000000000000200000
00011111111111111111000000000000000002200000
00011111111111111111000000000000000022200000
00011111111111111111000000000000000222200000
00011111111111111111000000000000002222200000
00011111111111111111000000000000022222200000
00000000000000000000000000000000222222200000
00000000000333333000000000000002222222200000
00000003333333333333300000000022222222200000
00003333333333333333333300000222222222200000
00333333333333333333333333002222222222200000
03333333333333333333333333300000000000000000
00333333333333333333333333000000000000000000
00003333333333333333333300000000000000000000
00000003333333333333300000000000000000000000
00000000000333333000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
Т. е. исходный массив значений пикселов был преобразован в массив, где вместо значений пикселов находятся номера областей, к которым относятся данные пикселы. Всего здесь 4 области.
При обработке алгоритм последовательно проходит по всем строкам изображения и каждый пиксел относит к одной из трёх возможных групп (мод):
1. группа (мода) фоновых пикселов: Pixel_Value<Threshold1
2. группа (мода) пикселов объектов: Pixel_Value>=Threshold2
3. группа (мода) переходных пикселов: Threshold1<=Pixel_Value<Threshold2, которые при работе алгоритма могут быть в итоге отнесены как к первой, так и ко второй группе (моде).
На основе принадлежности текущего пиксела к той или иной группе (моде) делается вывод о том принадлежит ли текущий пиксел к уже размеченной ранее области или этот пиксел принадлежит к новой области. Для этого у текущего пиксела просматриваются четыре точки его окрестности (левая; верхняя левая; верхняя; верхняя правая точки) и если среди них найдена точка с такой же модой как у него, то номер области текущего пиксела будет такой же как у того пиксела, с которым у него совпала мода. Если таких нет, то добавляется новая область. Если пиксел относится к переходной моде, то из четырех точек его окрестности выбирается наиболее близкий по абсолютному значению яркости пиксел и берётся его номер области.
Вкраце примерно так работает алгоритм. За основным циклом происходит ещё перенос областей с номерами большими, чем общее кол-во областей. Также производится окончательная перенумерация областей.