Список основных исполнителей по Государственному контракту 14. 740. 11. 1258 от 17 июня 2011





НазваниеСписок основных исполнителей по Государственному контракту 14. 740. 11. 1258 от 17 июня 2011
страница4/8
Дата публикации29.12.2014
Размер0.6 Mb.
ТипОтчет
100-bal.ru > Право > Отчет
1   2   3   4   5   6   7   8

2Анализ программных и аппаратных средств обработки графической информации

2.1Аналитический обзор программных средств обработки графической информации


Обзор программных средств обработки графической информации необходим для нахождения множества инструментальных средств, которые можно использовать для эффективной реализации методов, указанных в пункте 1.2.10 данного отчёта о НИР.

Так как рассматриваемые в данной НИР методы уже достаточно давно известны науке, то логично ожидать, что существует немалое число их реализаций. Возможно, эти реализации достаточно эффективны и пригодны для эффективной обработки полутоновых изображений большого размера. Для ознакомления с этими реализациями, необходимо изучить существующие специализированные библиотеки обработки графической информации.

Если для какого-либо из рассматриваемых методов обработки изображений ни в одной библиотеке не будет найдена его реализация, обладающая достаточно высоким быстродействием, необходимо будет разработать новую, более эффективную реализацию. В качестве инструментальных средств создания новой реализации будут выступать низкоуровневые библиотеки создания двухмерной и трёхмерной графики. Анализ этих библиотек поможет выявить их возможности и степень пригодности для реализации рассматриваемых методов обработки изображений.

2.1.1Аналитический обзор специализированных библиотек обработки изображений

ImageMagick


ImageMagick – это свободно распространяемый программный пакет, предназначенный для создания, композиции и преобразования цифровых изображений. Он поддерживание чтение и запись более 100 различных форматов [7].

Особенностью ImageMagick является ориентированность на обработку больших наборов изображений. Поэтому он является инструментом командной строки и не имеет графического интерфейса пользователя. Кроме того, он предоставляет программные интерфейсы (API – application programming interface) для большого числа современных языков программирования, в том числе C, C++, C#, Java, Python, Ruby, PHP. Таким образом, программист может использовать богатую функциональность этого пакета в своей программе, не требуя от конечного пользователя его установки.

Набор функций, предоставляемых пакетом, очень разнообразен. В частности, он поддерживает следующие методы обработки изображений из числа рассматриваемых в данной НИР:

  • трансформация изображения (изменение размера, поворот, отражение, кадрирование);

  • размытие, повышение резкости, пороговая обработка;

  • определение параметров изображения (размеры, количество бит на пиксель, пространственное разрешение и т.д.);

  • построение гистограммы и её статистическая обработка;

  • морфологическая обработка;

  • выполнение прямого и обратного дискретного преобразования Фурье;

  • изменение динамического диапазона;

  • поддержка изображений большого размера;

  • выделение границ и контуров объектов на изображении.

Как видно из приведённого выше списка, ImageMagick поддерживает большинство рассматриваемых в данной НИР методов обработки изображений. Однако, как сказано в [8], разработчиками этого программного пакета никогда не ставилось целью достижение максимальной скорости обработки изображений. Это не значит, что некоторые операции не могут быть выполнены за разумное время, однако говорит о том, что использование ImageMagick не всегда обеспечивает оперативность обработки изображения.

FreeImage


FreeImage – это библиотека с открытым исходным кодом, предназначенная для обработки цифровых изображений. Она поддерживает большинство распространённых форматов изображений, таких как PNG, BMP, JPEG, TIFF и т.д. Так же, как и ImageMagick, FreeImage предоставляет программные интерфейсы для многих языков программирования (C, C++, C#, Java, Python, PHP, TCL, Ruby) [9].

Особенности библиотеки:

  • простота использования [9];

  • поддержка различной глубины цвета (1-, 4-, 8-, 16-, 32-бит на пиксель, а также интенсивности, заданной с помощью чисел с плавающей точкой);

  • определение параметров изображения (размеры, количество бит на пиксель, пространственное разрешение и т.д.);

  • трансформация изображения;

  • изменение яркости и контрастности изображения;

  • простая интеграция с OpenGL и DirectX, существенно облегчающая визуализацию изображения с использованием графического ускорителя.

Библиотека FreeImage обладает гораздо более узким функционалом по сравнению с ImageMagick. Не все рассматриваемые в данной НИР задачи обработки изображений могут быть решены с её использованием. Однако простота использования этой библиотеки может существенно облегчить реализацию поддерживаемых ею методов обработки изображений, в частности, улучшение.

GEGL


GEGL (GEneric Graphics Library) – это программная библиотека обработки изображений, активно развивающаяся в настоящее время [10].

GEGL представляет процесс обработки изображений в виде ориентированного ациклического графа, вершинами которого являются операции, а рёбрами – изображения. В общем случае операции могут получать на вход и выдавать в качестве результата несколько изображений. Это соответствует наличию у вершины некоторого числа входящих и некоторого числа исходящих рёбер.

Процесс обработки изображений заключается в перемещении по рёбрам графа и выполнении операций в вершинах. При этом GEGL использует «ленивую» модель выполнения операций – ни одна операция не выполняется раньше, чем это требуется.

GEGL предоставляет программные интерфейсы для vala, C#, Python и Ruby.

Функциональные возможности GEGL:

  • поддержка различной глубины цвета (8-, 16-, 32-бит на пиксель, а также интенсивности, заданной с помощью чисел с плавающей точкой); внутренняя обработка осуществляется в 128-разрядном режиме;

  • возможность обработки изображений, объём которых превышает доступный объём оперативной памяти;

  • трансформация изображения (изменение размера, поворот, отражение, кадрирование);

  • выделение границ и контуров объектов на изображении;

  • улучшение (размытие, повышение резкости, изменение яркости и контрастности);

  • расширяемость через модули.

Важным достоинством библиотеки GEGL является внутреннее представление изображений в 128-битном формате, позволяющее обеспечить высокую точность результатов обработки. Кроме того, расширяемость через подключаемые модули даёт возможность встраивать в её архитектуру реализации отсутствующих в ней методов обработки изображений.

Однако серьёзным недостатком GEGL является то, что на данный момент она всё ещё находится в стадии разработки [10]. Это говорит о возможной нестабильности в реализации некоторых функций. Кроме того, с течением времени не исключено изменение программных интерфейсов этой библиотеки, что пагубно скажется на совместимости будущих версий этой библиотеки с разработанными под неё программами.

2.1.2Аналитический обзор низкоуровневых библиотек обработки графической информации


На этапе анализа специализированных библиотек обработки цифровых изображений была найдена библиотека, в которой реализовано большинство рассматриваемых в данной НИР методов обработки полутоновых растровых изображений (ImageMaick). Это позволяет предположить, что необходимость создания собственных реализаций этих методов может возникнуть только, если эффективность соответствующих реализаций в ImageMagick будет недостаточно высокой. Следовательно, анализ низкоуровневых библиотек обработки графической информации нужно проводить с точки зрения возможности создания высокоэффективных реализаций.

В настоящее время перспективным направлением в области повышения эффективности вычислений является использование графических ускорителей [11-15]. Поэтому анализ низкоуровневых библиотек обработки графической информации проводится с целью выявления возможности использования графического ускорителя для решения задач обработки цифровых изображений.

OpenGL


OpenGL (Open Graphics Library) — спецификация, определяющая независимый от языка программирования кросс-платформенный программный интерфейс для написания приложений, использующих двумерную и трёхмерную компьютерную графику [11].

OpenGL ориентируется на следующие две задачи:

  • скрыть сложности адаптации различных 3D-ускорителей, предоставляя разработчику единый API;

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

OpenGL является низкоуровневым программным интерфейсом, что вынуждает программиста диктовать точную последовательность шагов, чтобы построить результирующую растровую графику. Это является основным отличием от декларативных подходов, когда вся сцена передается в виде структуры данных, которое обрабатывается и строится на экране. С одной стороны, императивный подход требует от программиста глубокого знания законов трёхмерной графики и математических моделей, с другой стороны — даёт свободу внедрения различных инноваций.

Так как OpenGL предназначен для создания компьютерной графики, то, с точки зрения задач обработки изображений, он в первую очередь может быть использован для визуализации изображений. Однако этим его применение не ограничивается – OpenGL обладает двумя особенностями, позволяющими использовать его для решения других задач обработки изображений:

  • его команды выполняются на графическом ускорителе, что обеспечивает значительно более высокую скорость их исполнения по сравнению с центральным процессором;

  • шейдерные программы, управляющие процессом визуализации, позволяют разработчику запрограммировать произвольные вычисления, выполняемые на определённых стадиях графического конвейера [11, 12];

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

Следовательно, выполнение произвольной операции обработки изображения можно запрограммировать с помощью OpenGL API следующим образом [11, 12]:

  1. создаём фрагментный шейдер, реализующий требуемую операцию обработки изображения, и помещаем его в графический конвейер;

  2. выделяем в видеопамяти буфер с линейными размерами, соответствующими линейным размерам обрабатываемого изображения;

  3. осуществляем вывод обрабатываемого изображения в выделенный буфер;

  4. в процессе визуализации созданный шейдер будет выполнен для каждого пикселя обрабатываемого изображения;

  5. в итоге, буфер будет содержать результат выполнения требуемой операции над изображением.

Стоит отметить, что, чтобы перенести вычисления на GPU в рамках такой модели, нужен специальный подход. Ведь даже поэлементное сложение двух векторов потребует отрисовки фигуры во внеэкранный буфер. Фигура растеризуется, цвет каждого пикселя вычисляется по заданной фрагментному шейдеру. Программа считывает входные данные из визуализируемого изображения для каждого пикселя, складывает их и записывает в выходной буфер. Поэтому применение OpenGL для вычислений общего назначения имеет ограничение в виде довольно высокой сложности.

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

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

Также стоит заметить, что с точки зрения обработки изображений, технология DirectX обладает теми же функциональными особенностями, что и OpenGL, и, следовательно, так же может быть использована для реализации методов обработки изображений. Однако, в отличие от OpenGL, являющегося кросс-платформенным средством программирования, DirectX предназначен для работы только под управлением операционной системы Windows [13].

NVidia CUDA


Технология CUDA (Compute Unified Device Architecture) — это программно-аппаратная вычислительная архитектура, разработанная фирмой NVidia и основанная на расширении языка C. Она даёт возможность организации доступа к набору инструкций графического ускорителя и управления его памятью при организации параллельных вычислений. CUDA помогает реализовывать алгоритмы, выполнимые на графических процессорах видеоускорителей GeForce восьмого поколения и старше (серии GeForce 8, GeForce 9, GeForce 200), а также Quadro и Tesla [14].

Перечислим основные характеристики CUDA [15]:

  • унифицированное программно-аппаратное решение для параллельных вычислений на видеочипах NVIDIA;

  • большой набор поддерживаемых графических ускорителей [14];

  • стандартный язык программирования C;

  • стандартные библиотеки численного анализа FFT (быстрое преобразование Фурье) и BLAS (линейная алгебра);

  • оптимизированный обмен данными между центральным процессором и графическим ускорителем;

  • взаимодействие с графическими API OpenGL и DirectX;

  • поддержка 32- и 64-битных операционных систем: Windows, Linux и MacOS X;

  • возможность разработки на низком уровне.

Основные преимущества CUDA по сравнению моделью использования OpenGL, вытекают из того, что эта архитектура спроектирована для эффективного использования неграфических вычислений на видеокарте и использует язык программирования C, не требуя переноса алгоритмов в удобный для концепции графического конвейера вид. CUDA предлагает новый путь вычислений на графическом ускорителе, не использующий графические программные интерфейсы и предлагающий произвольный доступ к памяти.

Кроме того, CUDA открывает некоторые аппаратные возможности, недоступные из OpenGL, такие как разделяемая память. Это память небольшого объёма, к которой имеют доступ блоки потоков. Она позволяет кэшировать наиболее часто используемые данные и может обеспечить более высокую скорость, по сравнению с использованием текстурных выборок для этой задачи. Что, в свою очередь, снижает чувствительность к пропускной способности параллельных алгоритмов во многих приложениях. Например, это полезно для быстрого преобразования Фурье и фильтров обработки изображений.

Также, при использовании OpenGL данные приходится хранить в текстурах, что требует предварительной упаковки больших массивов в текстуры, что усложняет алгоритм и заставляет использовать специальную адресацию. А CUDA позволяет читать данные по любому адресу.

Несмотря на большое количество достоинств, CUDA имеет два существенных недостатка. Во-первых, в ней отсутствует поддержка рекурсии выполняемых функций. Это создаёт трудности, заставляя программиста либо заменять рекурсивный алгоритм на менее удобный нерекурсивный, либо самостоятельно эмулировать стек вызовов, что существенно усложняет реализацию алгоритма. Во-вторых, программы на CUDA поддерживаются только графическими ускорителями, производимыми фирмой NVidia, существенно снижает переносимость программ, использующих эту технологию.

Подводя итог, можно сказать, что CUDA является более удобным и специализированным средством организации произвольных вычислений на графическом ускорителе, чем OpenGL. Поэтому применение этой технологии для реализации методов обработки изображений является более предпочтительным. Единственным преимуществом OpenGL перед CUDA является то, что основанные на нём реализации будут работать не только на графических ускорителях NVidia, но и от других производителей.

OpenCL


OpenCL (Open Computing Language) – это программный интерфейс низкого уровня для гетерогенных вычислений. OpenCL позволяет разработчикам программировать вычислительные ядра при помощи С-подобного языка и использовать преимущества параллельных вычислений для создания вычислительных приложений [14]. OpenCL обеспечивает параллелизм на уровне инструкций и на уровне данных, он является полностью открытым стандартом, его использование не облагается лицензионными отчислениями [16].

Гетерогенные вычисления – это вычисления, выполняющиеся в системе, содержащей вычислительные единицы различных типов. В качестве вычислительной единицы может выступать центральный процессор общего назначения, графический ускоритель, сопроцессор, а также любое другое электронное вычислительное устройство. В общем случае гетерогенная вычислительная система состоит из процессоров с различными наборами инструкций[16].

OpenCL исходит из наиболее общих предпосылок, дающих представление об устройстве с поддержкой OpenCL:

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

  • устройство обладает некоторой памятью, причём не предъявляется никаких требований ни к её объёму, ни к её быстродействию.

Такое широкое понятие об устройстве позволяет не накладывать каких-либо ограничений на программы, разработанные для OpenCL. Эта технология позволяет разрабатывать как приложения, сильно оптимизированные под конкретную архитектуру специфического устройства, поддерживающего OpenCL, так и те, которые будут демонстрировать стабильную производительность на всех типах устройств (при условии эквивалентной производительности этих устройств).

OpenCL предоставляет программисту низкоуровневый программный интерфейс, через который он взаимодействует с ресурсами устройства. OpenCL API может либо напрямую поддерживаться устройством, либо работать через промежуточный API, это зависит от конкретной реализации и не описывается стандартом. Например, в видеокартах NVidia драйвер OpenCL работает поверх CUDA [17].

Итак, с точки зрения обработки изображений, OpenCL лишён главного недостатка, присущего технологии CUDA, – он не привязан к графическим ускорителям NVidia. Ориентированность на гетерогенные вычислительные системы позволяет надеяться, что в рамках одного персонального компьютера программа на OpenCL будет выполняться на графическом ускорителе, так и на ядрах центрального процессора, что обеспечивает максимальное использование доступных вычислительных ресурсов.

С другой стороны, CUDA позволяет повысить производительность за счёт использования специфических особенностей видеокарт NVidia. OpenCL лишён этой возможности, так как выдвигает только базовые требования к вычислительным единицам.

Ещё одним недостатком OpenCL по сравнению с CUDA является его более высокая сложность, связанная с ориентированностью на гетерогенные вычислительные среды. При вызове многих функций разработчику приходится передавать в них большое число значений, описывающих параметры вычислительной среды. Аналогичные функции в CUDA не требуют этих параметров, так как они заданы самой архитектурой.
1   2   3   4   5   6   7   8

Похожие:

Список основных исполнителей по Государственному контракту 14. 740. 11. 1258 от 17 июня 2011 iconСписок основных исполнителей по Государственному контракту 14. 740. 11. 1258 от 17 июня 2011
Государственному контракту 14. 740. 11. 1258 от 17 июня 2011 на выполнение поисковых научно-исследовательских работ для государственных...
Список основных исполнителей по Государственному контракту 14. 740. 11. 1258 от 17 июня 2011 iconСписок основных исполнителей по Государственному контракту 14. 740. 11. 1258 от 17 июня 2011
Государственному контракту 14. 740. 11. 1258 от 17 июня 2011 на выполнение поисковых научно-исследовательских работ для государственных...
Список основных исполнителей по Государственному контракту 14. 740. 11. 1258 от 17 июня 2011 iconОтчет о выполненной работе по Государственному контракту №14. 741....
Государственное образовательное учреждение высшего профессионального образования "Российский экономический университет им. Г. В....
Список основных исполнителей по Государственному контракту 14. 740. 11. 1258 от 17 июня 2011 iconОтчет о научно-исследовательской работе по Государственному контракту...
Этап второй: «Выбор направлений исследований и этап предварительных исследований по мембранным коллоидным системам»
Список основных исполнителей по Государственному контракту 14. 740. 11. 1258 от 17 июня 2011 iconОтчет по Дополнительному соглашению №2 к Государственному контракту...
«Разработка проекта скиово бассейна реки Нарва и рек бассейна Псковско-Чудского озера» (С-10-01)
Список основных исполнителей по Государственному контракту 14. 740. 11. 1258 от 17 июня 2011 iconОтчет о научно-исследовательской работе, выполняемой по государственному...
«Разработка алгоритмов для биоинформационного анализа комплексных метаболических и молекулярно-генетических сетей»
Список основных исполнителей по Государственному контракту 14. 740. 11. 1258 от 17 июня 2011 iconОтчет о научно-исследовательской работе по государственному контракту...
Русский язык и культура речи: учебно-методический комплекс для студентов очной формы обучения / сост. И. А. Крым; Кузбасский институт...
Список основных исполнителей по Государственному контракту 14. 740. 11. 1258 от 17 июня 2011 iconОтчет о выполнении 4 этапа Государственного контракта №14. 740. 11....
О выполнении 4 этапа Государственного контракта №14. 740. 11. 1071 от 24. 05. 2011 г
Список основных исполнителей по Государственному контракту 14. 740. 11. 1258 от 17 июня 2011 iconОтчет по Дополнительному соглашению №4 от 27 февраля 2010 г к Государственному...

Список основных исполнителей по Государственному контракту 14. 740. 11. 1258 от 17 июня 2011 iconОтчетные материалы по гос контракту №02. 740. 11. 0072 в рамках федеральной...
Учебно-методический комплекс по дисциплине «Биохимия молока и мяса» составлен на основе
Список основных исполнителей по Государственному контракту 14. 740. 11. 1258 от 17 июня 2011 iconОтчет по Государственному контракту №
«Разработка концепции создания интеллектуальной транспортной системы на автомобильных дорогах федерального значения»
Список основных исполнителей по Государственному контракту 14. 740. 11. 1258 от 17 июня 2011 iconОтчет по Государственному контракту на выполнение работ для государственных нужд
Организационно-техническое обеспечение работы российской экспозиции на осенней технической ярмарке
Список основных исполнителей по Государственному контракту 14. 740. 11. 1258 от 17 июня 2011 iconОтчет по государственному контракту от 04. 06. 2012 №1102-01-41/06-12...
...
Список основных исполнителей по Государственному контракту 14. 740. 11. 1258 от 17 июня 2011 iconРеферат отчета по государственному контракту от 20. 04. 2007 г. №8-07-Эко...
Фгун екатеринбургский медицинский научный центр профилактики и охраны здоровья рабочих
Список основных исполнителей по Государственному контракту 14. 740. 11. 1258 от 17 июня 2011 iconСписок исполнителей
Содержание деятельности и результаты Мероприятия №10 «Москва – город грамотных людей»
Список основных исполнителей по Государственному контракту 14. 740. 11. 1258 от 17 июня 2011 iconСписок исполнителей
Федеральное государственное бюджетное учреждение науки институт программных систем им. А. К. Айламазяна


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск