Рус Eng Cn Translate this page:
Please select your language to translate the article


You can just close the window to don't translate
Library
Your profile

Back to contents

NB: Debug Journal
Reference:

Common audit


Smorkalov1 rtesrt try aert ery r5t Yura2 Dmitrievich

ORCID: 0000-0001-7063-8067

Doctor of Biology

teacher; faculty of FIVT; if you teach in several; if you teach in several

109240, Russia, Republic of Medvedevo, Barnaul, Gogolevsky blvd., 12, building 1, 55 sq. m.

andrey.smorkalov@gmail.com
Other publications by this author
 

 
Vasil'ev-Gimalaitsev Petr

Doctor of Cultural Studies



DOI:

10.7256/3123.2016.1.3

Received:

29-11-2014


Published:



Abstract: In this paper author briefly describes main aspects of common audit...


This article written in Russian. You can find original text of the article here .
Введение1

123афические потоковые процессоры УРА характеризуются большой степенью параллелизма, обладая сотнями и даже тысячами вычислительных ядер, но накладывают на выполняемые алгоритмы большое число ограничений (в основном, из-за изначальной ориентированности на задачи 3D-графики), которые делают невозможным прямой перенос алгоритмов обработки изображений для выполнения на потоковых процессорах. Среди этих ограничений отсутствие рекурсии, прямого доступа к памяти на запись, неопределенный результат чтения из результирующего изображения и др.

`Gamma`

Между тем, превосходство потоковых над обычными процессорами в десятки раз по вычислительной мощности делает перспективным обработку двумерных изображений именно на потоковых процессорах.

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

Обзор существующих методов

Долгое время обработку изображений в браузерных приложениях можно было реализовать с помощью двух основных подходов: с использованием Java-апплета и с использованием Flash-компонента. Так, например, для обработки изображений в java-апплетах широко используется библиотека ImageJ [1].

При использовании обоих подходов требуется установка специальных плагинов, что является во многих случаях нежелательным или невозможным (по соображениям безопасности, ввиду отсутствия плагина для нужной платформы или браузера, ввиду недостаточной квалификации пользователя для установки, а также по другим соображениям). Кроме того, в обоих случаях обработка изображений производится байт-кодом, выполняемым на виртуальной машине Flash или Java. Таким образом, скорость обработки изображений будет значительно уступать скорости программ на компилируемых языках, таких как С/С++ и тем более скорости обработки изображений на графических потоковых процессорах.

С появлением стандарта HTML5 стала возможна обработка изображений непосредственно на языке javascript c использованием элемента canvas [3]. Преимущество метода заключается в отсутствии необходимости установки каких-либо плагинов, однако

1. Программа обработки изображений выполняется на виртуальной машине javascript.

2. Использование возможностей многоядерных процессоров затруднено.

Эти два фактора негативно отражаются на производительности подхода. По приводимому в [3] графику видно, что скорость описываемого подхода в несколько раз уступает скорости обработки изображений с помощью ImageJ (рис. 1).

В настоящее время все большее распространение получает технология PixelBender [2], реализованная в Adobe Flash начиная с версии 10.0. Эта технология позволяет в ограниченном объеме использовать возможности потоковых процессоров, разрабатывая программы для них на специальном языке, специфичном для Flash.

Существенные минусы PixelBender:

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

2. Специальный язык ограничивает доступ к вычислительным возможностям потоковых процессоров, ограничивает простор для оптимизации и т.д.

10 февраля 2011 года была опубликована спецификация открытого стандарта WebGL [5] – реализации OpenGL ES 2.0 для использования в браузерных приложениях. WebGL дает возможность разрабатывать OpenGL-программы непосредственно на javascript, включая использование вершинных и пиксельных шейдеров. Таким образом, становится доступной вся функциональность потоковых процессоров.

Для использования WebGL не требуется установки дополнительных модулей, поддержка технологии реализуется непосредственно в браузере. Перечисленные качества делают технологию перспективной для организации обработки изображений в браузерных приложениях.

Математическая модель

Составим математическую модель обработки изображений, опираясь на особенности и возможности WebGL. Будем рассматривать изображение в цветовой модели RGBA:

U(x, y) = {fR(x, y), fG(x, y), fB(x, y), fA(x, y)}, (1)

где fR(x, y), fG(x, y), fB(x, y), fA(x, y) — это дискретные функции, заданные табличным методом. fR(x, y) представляет красный канал изображения, fG(x, y) - зеленый, fB(x, y) - синий, fA(x, y) - альфа-канал. Значения этих функций лежат в диапазоне [0, 1].

Результатом преобразования G изображения А на основе изображения B будем называть R = G(A, B, x, y) (2), где А — это исходное изображение, B – растеризуемая фигура, G — преобразующая функция.

Цветовой маской будем называть множество M = {MR, MG, MB, MA} (3), где MR, MG, MB, MA могут принимать значения из множества {0, 1}. Результатом преобразования G изображения А на основе изображения B с учетом цветовой маски M будем называть Rq = Gq(A, B, M, x, y) = Gq(A, B, x, y) * Mq + A * (1 – Mq) (4), где q – любой из цветовых каналов.

Геометрическая фигура S = {V, F, {r, g, b, a}} (5) задается множеством двумерных векторов вершин V и множеством индексов вершин F, а также цветом фигуры {r, g, b, a}. Растеризация представляет собой преобразование, результатом которого является изображение:

U(x, y) = GR(GP(S, MP)) (6), где GR – растеризующее преобразование, MP – матрица проецирования, GP — проецирующее преобразование.

В результате проецирующего преобразования GP получается спроецированная фигура SP = GP(S, MP) = {P, F, {r, g, b, a}} (7).

Спроецированная фигура SP задается множеством двумерных векторов спроецированных вершин P = {P1,…, PN}, множеством индексов вершин F = {F1, ..F3 * M}, а также цветом фигуры {r, g, b, a}. Отметим, что Pi = Vi * MP (8) для всех i Î {1..N}.

GR(x, y) = {{r, g, b, a}, если существует тройка (F3 * k + 1, F3 * k + 2, F3 * k + 3), где k – целое число от 1 до M / 3, такая, что (x, y) принадлежит треугольнику, образованному вершинами Pi1, Pi2, Pi3, где i1 = F3 * k + 1, i2 = F3 * k + 2, i3 = F3 * k + 3, {0.0, 0.0, 0.0, 0.0} в противном случае} (9).

Заключение

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

Метод показывает высокую производительность. Так box-фильтр и фрактал Мандельброта рассчитываются предлагаемым методом в ~15-110 раз быстрее, чем при использовании подхода [3], в зависимости от выбранного сочетания центрального и графического потокового процессоров.

рей Сморкалов <andrey.smorkalov@gmail.com>
Кому: vacademia <vacademia@googlegroups.com>

References
1. Abramoff, M.D., Magelhaes, P.J., Ram, S.J. "Image Processing with ImageJ". Biophotonics International, volume 11, issue 7, pp. 36-42, 2004.
2. Adobe Pixel Bender Guide. http://www.adobe.com/pixelbender_guide.pdf
3. Kai Uwe Barthel, Karsten Schulz, ImageJ in the web? - Image processing in the browser using HTML5. In proceedings of ImageJ Conference 2010.
4. Kayvon Fatahalian, Mike Houston. A closer look at GPUs. Communications of the ACM, October 2008, Vol. 51, NO. 10.
5. The Khronos Group. WebGL 1.0 Specification. https://www.khronos.org/registry/webgl/specs/1.0/