(cc)
http://dx.doi.org/10.35596/1729-7648-2020-18-2-45-52
Оригинальная статья Original paper
УДК 004.932+004.258
ОПРЕДЕЛЕНИЕ РАЗМЕРА LIFO-СТЕКА ДЛЯ ВЫРАЩИВАНИЯ ОБЛАСТЕЙ ИЗОБРАЖЕНИЙ
ЦВЕТКОВ В.Ю.
Белорусский государственный университет информатики и радиоэлектроники (г. Минск, Республика Беларусь)
Поступила в редакцию 26 января 2020
© Белорусский государственный университет информатики и радиоэлектроники, 2020
Аннотация. Рассматривается задача выделения памяти для организации LIFO-стека в алгоритме сегментации изображений на основе выращивания областей. Сегментация разделяет изображение на области с одинаковыми или схожими свойствами и является наиболее требовательным к емкости оперативной памяти процессом. Выращивание областей начинается с окрестностей предварительно выделенных начальных пикселей роста и использует стеки для хранения координат смежных пикселей, присоединяемых к выращиваемой области. Загрузка стеков максимальна, когда размер сегмента совпадает с размером YX изображения. При отсутствии выражения для точного определения размера стека гарантировать устойчивую работу алгоритма выращивания областей, исключающую переполнение выделенной для обработки памяти, можно, только если размер стека принять равным YX. Однако этот подход не учитывает то, что заполнение стеков координат сопровождается также выборкой из них, вследствие чего размер стека всегда меньше YX. В статье предлагается выражение, позволяющее повысить точность определения необходимого размера LIFO-стека для хранения координат смежных пикселей в зависимости от размера изображения. Выражение учитывает условия максимальной загрузки LIFO-стека, когда: а) осуществляется сегментация квадратной области с начальным пикселем роста в углу этой области; б) в окне сканирования смежные пиксели всегда выбираются по порядку с расположением первого выбираемого пикселя в углу окна сканирования. Использование предложенного выражения для расчета необходимой емкости LIFO-стека в условиях его максимальной загрузки в алгоритме сегментации изображений на основе выращивания областей обеспечивает уменьшение числа ячеек памяти LIFO-стека в 2 раза.
Ключевые слова: LIFO-стек, сегментация изображений, выращивание областей, размер стека, выделение памяти.
Конфликт интересов. Автор заявляет об отсутствии конфликта интересов.
Для цитирования. Цветков В.Ю. Определение размера LIFO-стека для выращивания областей изображений. Доклады БГУИР. 2020; 18(2): 45-52.
LIFO-STACK SIZE DETERMINATION FOR GROWING
OF THE IMAGE REGIONS
VIKTAR YU. TSVIATKOU
Belarusian State University of Informatics and Radioelectronics (Minsk, Republic of Belarus)
Submitted 26 Januar 2020
© Belarusian State University of Informatics and Radioelectronics, 2020
Abstract. This paper considers the problem of memory allocation for the organization of the LIFO-stack in the algorithm for image segmentation based on growing regions is considered. Segmentation divides the image into regions with identical or similar properties and is the most demanding process for the capacity of RAM. The cultivation of areas begins with the neighborhoods of pre-selected initial growth pixels and uses stacks to store the coordinates of adjacent pixels attached to the cultivated region. Stack loading is maximized when the segment size matches the size of the YX image. In the absence of an expression for the exact determination of the size of the stack, it is possible to guarantee the stable operation of the algorithm for growing regions, eliminating the overflow of the memory allocated for processing if the stack size is assumed equal to YX. However, this approach does not take into account the fact that filling the coordinate stacks is also accompanied by a selection of them, which makesthe stack size always smaller than YX. The article proposes an expression that allows one to increase the accuracy of determining the required size of the LIFO-stack for storing the coordinates of adjacent pixels depending on the image size. The expression takes into account the conditions of the maximum load of the LIFO-stack when: a) the segmentation of the square region with the initial growth pixel in the corner of this region is carried out; b) in the scan window, adjacent pixels are always selected in order with the first selectable pixel located in the corner of the scan window. Using the proposed expression to calculate the required capacity of the LIFO-stack under conditions of its maximum load in the image segmentation algorithm based on growing regions provides a 2-fold reduction in the number of LIFO-stack memory cells.
Keywords: LIFO-stack, image segmentation, region growing, stack size, memory allocation. Conflict of interests. The author declares no conflict of interests.
For citation. Tsviatkou V.Yu. LIFO-stack size determination for growing of the image regions. Doklady BGUIR. 2020; 18(2): 45-52.
Введение
Одна из важных задач, решаемых в процессе разработки программного обеспечения системы обработки изображений, связана с планированием расхода оперативной памяти. Особенно требовательны к емкости оперативной памяти алгоритмы сегментации. Сегментация разделяет изображение на области с одинаковыми или схожими свойствами [1-4]. Ее результатом является матрица сегментации, совпадающая по размеру с исходным изображением, значение каждого элемента которой указывает на номер сегмента, которому принадлежит соответствующий пиксель исходного изображения. Простейшие алгоритмы сегментации основаны на выращивании областей в окрестности предварительно выделенных начальных пикселей роста и используют стеки для хранения координат смежных пикселей, присоединяемых к выращиваемой области [2, 5-7]. Стеки могут быть организованы по принципу FIFO (первым зашел - первым вышел) или LIFO (последним зашел - первым вышел) [8-10]. Они отличаются порядком выборки данных и, соответственно, емкостью, необходимой для хранения координат пикселей при максимальной загрузке. Несмотря на отсутствие универсального подхода к определению необходимой емкости стека для различных алгоритмов, достаточно точные ее значения могут быть получены для конкретного алгоритма в предельных условиях.
Целью работы является определение размера LIFO-стека координат смежных пикселей в зависимости от размера изображения для алгоритма сегментации на основе выращивания областей.
Особенности сегментации изображений на основе выращивания областей
В результате сегментации изображения I = \г{у,-олП) размером
У х X пикселей формируется матрица £ = |(у, х)|| ^^ сегментации такого же
размера, значения элементов которой указывают на номера щ е[0, N ] сегментов, которым
они принадлежат, где N - число сегментов и номер последнего сегмента. На рис. 1
приведены фрагмент полутонового изображения, соответствующие ему матрица значений пикселей и матрица сегментации, содержащая 6 сегментов.
100 100 50 50 50 100 100
100 50 50 50 50 50 100
so 50 50 100 50 50 50
50 50 100 100 100 50 50
50 50 50 100 50 50 50
100 50 50 50 50 50 100
100 100 50 50 50 100 100
1 1 2 2 2 3 3
1 2 2 2 2 2 3
2 2 2 4 2 2 2
2 2 4 4 4 2 2
2 2 2 4 2 2 2
5 2 2 2 2 2 б
5 5 2 2 2 б 6
b
Рис. 1. Фрагменты: a - полутоновое изображение; b - матрица пикселей; с - матрица сегментации Fig. 1. Fragments: a - grayscale image; b - matrix of pixels; с - segmentation matrix
Алгоритм выращивания областей описывает следующую последовательность операций по сегментации изображения (предполагается, что начальные пиксели роста на изображении уже выделены) [1-4]:
1) координаты очередного начального пикселя роста помещаются в стеки Yf hiУр (Pf =0р-1) и Xf Hlxf (Pf н0р-1) ко°рдинат смежных пикселей, где Pf -указатель стеков; Pp - максимально возможное число координат в стеках Yp и Хр ;
2) определяется текущее значение ns номера сегмента;
3) реализуется цикл обработки стеков Yp и XF, в котором из них извлекаются координаты (y, x) очередного обрабатываемого пикселя; соответствующему элементу матрицы сегментации s (y, x) присваивается значение ns номера сегмента; проверяется выполнение условия присоединения к текущему пикселю (y, x) смежных пикселей с координатами (y + y', x + x') при (y' = - 1,i)a (x' = - 1,i)a ((y' Ф 0)v (x' Ф О)); если для какого-либо смежного пикселя условие выполняется, то его координаты (y + y' , x + x')
заносятся в стеки Y и Х ;
4) шаги 1 - 3 повторяются до тех пор, пока все начальные пиксели роста не будут обработаны.
Постановка задачи
Предположим, что стеки Yp и XF координат смежных пикселей в алгоритме выращивания областей относятся к типу LIFO. Их загрузка максимальна, когда размер
a
c
DoKLADY BGUIR
т. 18 (2) (2020)
сегмента совпадает с размером изображения. В этом случае N = 1, УуУх(5 (у, х) = N), размер (п5) п8 -го сегмента, определяемый с помощью выражения
2 У-1 X-1
(п) = — (у,х), составляет УХ ((1) = УХ) при исключении повторного
пя у=0 х= 0
попадания координат в стеки (за счет проверки значений в матрице сегментации). При отсутствии выражения для точного определения размера стека (значения Рр числа ячеек сетка) гарантировать устойчивую работу алгоритма выращивания областей, исключающую переполнение стеков Ур и Х^ координат, можно, только если
Рр = УХ. (1)
Это выражение не учитывает то, что заполнение стеков координат сопровождается выборкой из них данных, вследствие чего всегда выполняется неравенство р < УХ . Таким образом, для повышения эффективности использования оперативной памяти необходимо точно определить размер р ЫБО-стеков Ур и Х^ координат смежных пикселей при максимальной загрузке - при размере изображения У х Х пикселей, наличии на нем одного сегмента (N = 1), размер которого Я5 (1) совпадает с размером изображения ((1) = УХ).
Вывод выражений для уточнения размера LIFO-стека координат смежных пикселей
при максимальной загрузке
Пусть квадратное изображение размером У2 пикселей содержит единственный сегмент такого же размера. Число координат, загружаемых в ЫБО-стек при обработке окрестности ткущего пикселя, зависит от порядка выборки смежных пикселей и положения текущего обрабатываемого пикселя относительно границ сегмента.
Текущий и смежные с ним пиксели покрываются квадратным окном сканирования размером 3*3 пикселя. Возможны два базовых варианта выборки 8 смежных пикселей в окне сканирования, когда координаты последнего загружаемого в стек пикселя указывают на сторону (например, верхнюю, рис. 2, a) или угол (например, верхний правый, рис. 2, e) квадрата, определяющего окно сканирования. Всего существуют 16 вариантов последовательной выборки смежных пикселей с учетом движения по и против часовой стрелки. Если окно сканирования не находится на границах сегмента, выборка смежных пикселей при расположении в углу окна сканирования первого выбираемого пикселя приводит к вертикальному или горизонтальному перемещению окна сканирования (например, вверх для окна сканирования с расположением первого выбираемого пикселя в правом верхнем углу, рис. 2, Ь), а при расположении в углу окна сканирования последнего выбираемого пикселя -диагональному перемещению окна сканирования (например, вверх и вправо для окна сканирования с расположением последнего выбираемого пикселя в правом верхнем углу, рис. 2, /).
Для каждого из 16 вариантов последовательной выборки смежных пикселей существуют У2 вариантов траекторий перемещения окна сканирования в пределах границ квадратного сегмента размером У2 пикселей в зависимости от положения начального пикселя роста сегмента (начального положения окна сканирования). На рис. 2 приведены примеры траекторий перемещения окна сканирования в пределах границ квадратного сегмента для двух вариантов выборки смежных пикселей в окне сканирования, приведенных на рис. 2, a, e, когда положение начального пикселя роста соответствует нижнему левому углу (рис. 2, c, g) и центру (рис. 2, d, И) сегмента.
e f g h
Рис. 2. Фрагменты: a - окно сканирования с расположением первого выбираемого пикселя в правом
верхнем углу; b - перемещение окна сканирования вверх; с - перемещение окна сканирования в пределах сегмента при расположении первого выбираемого пикселя в правом верхнем углу окна сканирования и начального пикселя роста в нижнем левом углу сегмента; d - перемещение окна сканирования в пределах сегмента при расположении первого выбираемого пикселя в правом верхнем углу окна сканирования и начального пикселя роста в центре сегмента; e - окно сканирования с расположением последнего выбираемого пикселя в правом верхнем углу; f - перемещение окна сканирования вверх и вправо; g - перемещение окна сканирования в пределах сегмента при расположении последнего выбираемого пикселя в правом верхнем углу окна сканирования и начального пикселя роста в нижнем левом углу сегмента; h - перемещение окна сканирования в пределах сегмента при расположении последнего выбираемого пикселя в правом верхнем углу окна сканирования и начального пикселя роста в центре сегмента Fig. 2. Fragments: a - scanning window with the location of the first selectable pixel in the upper right corner; b - move the scan window up; с - moving the scan window within the segment when the first selectable pixel is located in the upper right corner of the scan window and the initial growth pixel in the lower left corner of the segment; d - moving the scan window within the segment when the first selectable pixel is located in the upper right corner of the scan window and the initial growth pixel in the center of the segment; e - scanning window with the location of the last selectable pixel in the upper right corner; f - move the scan window up and right; g - moving the scanning window within the segment when the last selected pixel is located in the upper right corner of the scanning window and the initial growth pixel in the lower left corner of the segment; h - moving the scan window within the segment when the last selectable pixel is located in the upper right corner of the scan window and the initial growth pixel in the center of the segment
Для траектории перемещения окна сканирования, приведенной на рис. 2, c, необходимо |_Y/4J циклов, в каждом из которых обрабатываются 4 (Y — 4к) пикселей, где | J - операция
округления с недостатком; к = 1, |Y/4j - номер цикла. При каждом перемещении окна
сканирования из стека извлекаются координаты текущего пикселя и помещаются в стек координаты двух смежных пикселей, в результате чего число координат в стеке увеличивается на единицу. При обработке первого пикселя в левом нижнем углу сегмента в стек помещаются координаты еще одного пикселя. Таким образом, размер PF LIFO-стека координат смежных
пикселей для варианта траектории окна сканирования, приведенной на рис. 2, c, определяется с помощью выражения
Y 4J
PF = 1 + 4 £(Y — 4k). (2)
к=1
DoKLADY BGUIR
т. 18 (2) (2020)
Для траектории перемещения окна сканирования, приведенной на рис. 2, d, необходимо |У/8] циклов, в каждом из которых обрабатываются 5(У — 8к) пикселей
(4 {У — 8к ) по периметру сегмента и (У — 8к) в центральной части сегмента), где к = 1,|У/8].
При каждом перемещении окна сканирования из стека извлекаются координаты текущего пикселя и помещаются в стек координаты двух смежных пикселей, в результате чего число координат в стеке увеличивается на единицу. При обработке первого пикселя в центре сегмента в стек помещаются координаты семи пикселей, а затем, при каждом перемещении окна сканирования вверх, в стек добавляются координаты двух пикселей (всего Y пикселей). При обработке пикселей в центральной части сегмента в каждом цикле в стек помещаются координаты еще 10 пикселей. Таким образом, размер Рр ЫБО-стека координат смежных
пикселей для варианта траектории окна сканирования, приведенной на рис. 2, d, определяется с помощью выражения
У8]
р = 7 + У + 5 £(У — 8к) +10 у . (3)
к=1
Траектория перемещения окна сканирования, приведенная на рис. 2, g, состоит из двух фрагментов. При переходе от обработки первого фрагмента ко второму большая часть координат смежных пикселей из стека выгружается.
Для первого фрагмента необходимо |У/5] циклов. При каждом перемещении окна
сканирования вверх из стека извлекаются координаты текущего пикселя и помещаются в стек координаты 5 смежных пикселей в первом цикле (число координат в стеке увеличивается на 4) и 3-х пикселей в последующих циклах (число координат в стеке увеличивается на 2). При каждом перемещении окна сканирования влево и вниз из стека извлекаются координаты текущего пикселя и помещаются в стек координаты двух смежных пикселей, в результате чего число координат в стеке увеличивается на единицу. При этом число координат смежных пикселей в ЫБО-стеке определяется выражением
У 5 У 5
РР = 4У + 2 £(У — 5к) + 2 £(У — 4к). (4)
к=1 к=1
Для второго фрагмента необходимо |У/3] циклов. При каждом перемещении окна
сканирования из стека извлекаются координаты текущего пикселя и помещаются в стек координаты 3-х смежных пикселей, в результате чего число координат в стеке увеличивается на 2. С учетом того, что после обработки первого фрагмента в ЫБО-стеке остаются координаты 4Y смежных пикселей размер ЫБО-стека для второго фрагмента определяется выражением
У3]
РР = 4У + 2 ^ (У — 3к). (5)
к=1
Траектория перемещения окна сканирования, приведенная на рис. 2, h, состоит из двух фрагментов. При переходе от обработки первого фрагмента ко второму большая часть координат смежных пикселей из стека выгружается.
Первый фрагмент включает перемещение окна сканирования относительно центра сегмента вверх (при каждом перемещении число координат в стеке увеличивается на 4), влево (число координат в стеке увеличивается на единицу), вниз (число координат в стеке увеличивается на единицу) и еще |У/3] циклов перемещения вверх и вниз (число координат
в стеке увеличивается на 2). Размер ЫБО-стека для первого фрагмента определяется выражением
17/ з]
РР = 6У + 2 £(У — зк). (6)
к=1
Для второго фрагмента необходимо |У/5J циклов. При каждом перемещении окна
сканирования вверх из стека извлекаются координаты текущего пикселя и помещаются в стек координаты 3-х пикселей (число координат в стеке увеличивается на 2). При каждом перемещении окна сканирования влево и вниз из стека извлекаются координаты текущего пикселя и помещаются в стек координаты двух смежных пикселей, в результате чего число координат в стеке увеличивается на единицу. С учетом того, что после обработки первого фрагмента в LIFO-стеке остаются координаты 6У смежных пикселей, размер LIFO-стека для второго фрагмента определяется выражением
U/5J
Y 5J
PF = 6Y + 2 £(Y - 5к) + 2 £(Y - 4k).
(7)
к=1
к=1
Оценка экономии памяти при уточненном расчете размера LIFO-стека
На рис. 3 приведены зависимости размера РрЕ^ (число ячеек памяти) LIFO-стека,
определяемого с помощью выражений (1) - (7), от размера У2 (число пикселей) квадратного изображения, где Е - номер выражения. Уточненный размер р LIFO-стека координат
смежных пикселей определяется одним из выражений (2) - (7), обеспечивающим наибольшие значения, что соответствует максимальной загрузке стека. Из рис. 1 следует, что наибольшие значения дает выражение (2), что соответствует перемещению окна сканирования в пределах сегмента по траектории, приведенной на рис. 2, с. Таким образом, максимальная загрузка стека обеспечивается при расположении первого выбираемого пикселя в углу окна сканирования и начального пикселя роста в углу области сканирования. Траектория перемещения окна сканирования по сегментируемой области в этом случае представляет собой спираль.
Рис. 3. Зависимости размера LIFO-стека от размера изображения Fig. 3. Dependencies of the size of the LIFO stack on the size of the image
Экономия ME памяти при уточненном расчете необходимой емкости LIFO-стека по выражению (2) в сравнении с приблизительным расчетом по выражению (1) для квадратного изображения размером Y2 пикселей определяется с помощью выражения
Y2
M = -ш.
(8)
Из рис. 3 и выражения (8) следует, что экономия памяти при уточненном расчете необходимой емкости LIFO-стека составляет 2 раза.
В случае сегментации прямоугольного изображения размером У х X пикселей для определения необходимой емкости ЫБО-стека по выражению (2) и экономии памяти по выражению (8) предлагается использовать эквивалентный размер квадратного изображения У2 пикселей такой, что У2 > У х X.
Заключение
Получено выражение, позволяющее повысить точность определения необходимого размера ЫБО-стека для хранения координат смежных пикселей в зависимости от размера изображения для алгоритма сегментации на основе выращивания областей. При получении данного выражения приняты условия максимальной загрузки ЫБО-стека, когда: а) осуществляется сегментация квадратной области с начальным пикселем роста в углу этой области; б) в окне сканирования смежные пиксели всегда выбираются по порядку с расположением первого выбираемого пикселя в углу окна сканирования. Траектория перемещения окна сканирования по сегментируемой области в этом случае представляет собой спираль. Использование предложенного выражения для расчета необходимой емкости ЬШО-стека в условиях его максимальной загрузки в алгоритме сегментации изображений на основе выращивания областей обеспечивает уменьшение числа ячеек памяти в 2 раза.
Список литературы / References
1. Otsu N. A threshold selection method from gray-level histograms. IEEE transactions on systems, man, and cybernetics. 1979;9:62-66. D01:10.1109/TSMC.1979.4310076.
2. Haralick R.M., Shapiro L.G. Image segmentation techniques. Computer Vision, Graphics, and Image Processing. 1985;29(1):100-132. D0I:10.1016/S0734-189X(85)90153-7.
3. Horowitz S.L., Pavilidis T. Picture segmentation by a tree traversal algorithm. Journal of the ACM. 1976;23(2):368-388. DOI: 10.1145/321941.321956.
4. Meyer F. Topographic distance and watershed lines. Signal Processing. 1994;38(1): 113—125. D0I:10.1016/0165-1684(94)90060-4.
5. Moigne J.Le., Tilton J.C. Refining image segmentation by integration of edge and region data. IEEE transactions on geoscience and remote sensing. 1995;33(3):605-614. DOI: 10.1109/36.387576.
6. Hojjatoleslami S.A., Kittler J. Region Growing: A New Approach. IEEE Transactions on Image Processing. 1998;7(7):1079-1084. D0I:10.1109/83.701170.
7. Cui W., Guan Z., Zhang Z. An Improved Region Growing Algorithm for Image Segmentation. International Conference on Computer Science and Software Engineering. 2008;6:93-96. DOI: 10.1109/CSSE.2008.891.
8. Wirth N. Algorithms and Data Structures. Upper Saddle River: Prentice Hall. 1985.
9. Lipschutz S. Schaum 's Outline of Theory and Problems of Data Structures. New York City: McGraw-Hill Book Company; 1986.
10. Kruse R.L., Ryba A.J. Data Structures and Program Design in C++. Upper Saddle River: Prentice Hall; 2000.
Сведения об авторах
Цветков В.Ю., д.т.н., доцент, заведующий кафедрой инфокоммуникационных технологий Белорусского государственного университета информатики и радиоэлектроники.
Information about the authors
Tsviatkou V.Yu., PhD, Associate Professor, Head of Infocommunication Departmen of Belarusian State University of Informatics and Radioelectronics.
Адрес для корреспонденции
220013, Республика Беларусь,
г. Минск, ул. П. Бровки, д. 6,
Белорусский государственный университет
информатики и радиоэлектроники
+375-017-293-84-08;
e-mail: vtsvet@bsuir.by
Цветков Виктор Юрьевич
Address for correspondence
220013, Republic of Belarus, Minsk, P. Brovki str., 6, Belarusian State University of Informatics and Radioelectronics +375-017-293-84-08; e-mail: vtsvet@bsuir.by Tsviatkou Viktar Yur'evich