Мультимедийная графика. Компьютерная графика и мультимедиа. «Барановичский государственный университет»

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

История
Первые вычислительные машины не имели отдельных средств для работы с графикой, однако уже использовались для получения и обработки изображений. Программируя память первых электронных машин, построенную на основе матрицы ламп, можно было получать узоры.
В 1961 году программист С. Рассел возглавил проект по созданию первой компьютерной игры с графикой. Создание игры («Космические войны») заняло около 200 человеко-часов. Игра была создана на машине PDP-1.
В 1963 году американский учёный Айвен Сазерленд создал программно-аппаратный комплекс Sketchpad, который позволял рисовать точки, линии и окружности на трубке цифровым пером. Поддерживались базовые действия с примитивами: перемещение, копирование и др. По сути, это был первый векторный редактор, реализованный на компьютере. Также программу можно назвать первым графическим интерфейсом, причём она являлась таковой ещё до появления самого термина.
В середине 1960-х гг. появились разработки в промышленных приложениях компьютерной графики. Так, под руководством Т. Мофетта и Н. Тейлора фирма Itek разработала цифровую электронную чертёжную машину. В 1964 году General Motors представила систему автоматизированного проектирования DAC-1, разработанную совместно с IBM.
В 1968 году группой под руководством Н. Н. Константинова была создана компьютерная математическая модель движения кошки. Машина БЭСМ-4, выполняя написанную программу решения дифференциальных уравнений, рисовала мультфильм «Кошечка», который для своего времени являлся прорывом. Для визуализации использовался алфавитно-цифровой принтер.
Существенный прогресс компьютерная графика испытала с появлением возможности запоминать изображения и выводить их на компьютерном дисплее, электронно-лучевой трубке.

Двумерная графика (2D)

Двумерная (2D - от англ. two dimensions - «два измерения») компьютерная графика классифицируется по типу представления графической информации, и следующими из него алгоритмами обработки изображений. Обычно компьютерную графику разделяют на векторную и растровую, хотя обособляют ещё и фрактальный тип представления изображений.

Векторная графика

Векторная графика представляет изображение как набор геометрических примитивов. Обычно в качестве них выбираются точки, прямые, окружности, прямоугольники, а также как общий случай, сплайны некоторого порядка. Объектам присваиваются некоторые атрибуты, например, толщина линий, цвет заполнения. Рисунок хранится как набор координат, векторов и других чисел, характеризующих набор примитивов. При воспроизведении перекрывающихся объектов имеет значение их порядок.
Изображение в векторном формате даёт простор для редактирования. Изображение может без потерь масштабироваться, поворачиваться, деформироваться, также имитация трёхмерности в векторной графике проще, чем в растровой. Дело в том, что каждое такое преобразование фактически выполняется так: старое изображение (или фрагмент) стирается, и вместо него строится новое. Математическое описание векторного рисунка остаётся прежним, изменяются только значения некоторых переменных, например, коэффициентов. При преобразовании растровой картинки исходными данными является только описание набора пикселей, поэтому возникает проблема замены меньшего числа пикселей на большее (при увеличении), или большего на меньшее (при уменьшении). Простейшим способом является замена одного пикселя несколькими того же цвета (метод копирования ближайшего пикселя: Nearest Neighbour). Более совершенные методы используют алгоритмы интерполяции, при которых новые пиксели получают некоторый цвет, код которого вычисляется на основе кодов цветов соседних пикселей. Подобным образом выполняется масштабирование в программе Adobe Photoshop (билинейная и бикубическая интерполяция).
Вместе с тем, не всякое изображение можно представить как набор из примитивов. Такой способ представления хорош для схем, используется для масштабируемых шрифтов, деловой графики, очень широко используется для создания мультфильмов и просто роликов разного содержания.

Растровая графика

Растровая графика всегда оперирует двумерным массивом (матрицей) пикселей. Каждому пикселю сопоставляется значение - яркости, цвета, прозрачности - или комбинация этих значений. Растровый образ имеет некоторое число строк и столбцов.
Без особых потерь растровые изображения можно только лишь уменьшать, хотя некоторые детали изображения тогда исчезнут навсегда, что иначе в векторном представлении. Увеличение же растровых изображений оборачивается «красивым» видом на увеличенные квадраты того или иного цвета, которые раньше были пикселями.
В растровом виде представимо любое изображение, однако этот способ хранения имеет свои недостатки: больший объём памяти, необходимый для работы с изображениями, потери при редактировании.

Фрактальная графика

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

Трёхмерная графика (3D) Трёхмерная графика (3D - от англ. three dimensions - «три измерения») оперирует с объектами в трёхмерном пространстве.Обычно результаты представляют собой плоскую картинку, проекцию. Трёхмерная компьютерная графика широко используется в кино, компьютерных играх.

Всеми визуальными преобразованиями в 3D-графике управляют матрицы (см. также: аффинное преобразование в линейной алгебре). В компьютерной графике используется три вида матриц:

матрица поворота

матрица сдвига

матрица масштабирования.

Любой полигон можно представить в виде набора из координат его вершин. Так, у треугольника будет 3 вершины. Координаты каждой вершины представляют собой вектор (x, y, z). Умножив вектор на соответствующую матрицу, мы получим новый вектор. Сделав такое преобразование со всеми вершинами полигона, получим новый полигон, а преобразовав все полигоны, получим новый объект, повёрнутый/сдвинутый/масштабированный относительно исходного. Ежегодно проходят конкурсы трехмерной графики, такие как Magick next-gen или Dominance War. В трёхмерной компьютерной графике все объекты обычно представляются как набор поверхностей или частиц. Минимальную поверхность называют полигоном. В качестве полигона обычно выбирают треугольники.

Представление цветов в компьютере

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

Реальная сторона графики

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

Использование канвы (Canvas). Графические объекты. Мультимедийные объекты. Использование Shape, PaintBox. Режим стиль и цвет пера в графике. Режим стиль и цвет кисти в графике. Анимация в C++ Builder. Построения графических изображений. Режимы рисования. Мультимедиа и анимация. Звук. Универсальный проигрыватель MediaPlayer.

Операционная система Windows предоставляет разработчикам приложении мощные средства Интерфейса Графических Устройств GDI (Graphics Device Interface) для построения графических изображений независимо от типа используемого устройства вывода. К сожалению, GDI обременяет программистов множеством дополнительных действий (в частности, по управлению системными ресурсами), которые отвлекают разработчика от его основной задачи - создания графики.

C++Builder берет на себя всю вспомогательную работу GDI, освобождая разработчиков от непродуктивного программирования с поиском утерянных дескрипторов изображений и не освобожденных ресурсов памяти. Это вовсе не означает, что прямое обращение приложений к отдельным функциям Windows GDI запрещается - вы всегда сможете при необходимости вызывать их. Однако, инкапсуляция графических функций Windows визуальными компонентами представляет собой более перспективную методику создания графики в вашем приложении.

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

1. Поддержка графики в C++Builder

C++Builder инкапсулирует функции Windows GDI на разных уровнях. Наиболее важным здесь является способ, посредством которого графические компоненты представляют свои изображения на экране монитора. При прямом вызове функции GDI необходимо передавать им дескриптор контекста устройства (device context handle), который задает выбранные вами орудия рисования - перья, кисти ц шрифты. После завершения работы с графическими изображениями, вы обязаны восстановить контекст устройства в исходное состояние и только потом освободиться от него.

Вместо того, чтобы вынуждать вас работать с графикой на таком уровне детализации, C++Builder предоставляет вам простой и завершенный интерфейс посредством свойства Canvas (Канва) графических компонент. Это свойство про-инициализирует правильный контекст устройства и освободит его в нужное время, когда вы прекратите рисование. По аналогии с функциями Windows GDI канва имеет вложенные свойства, представляющие характеристики пера, кисти и шрифта.

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



Одно из достоинств, которые проявляет C++Builder при работе с графикой, -это использование кэшированной памяти для графических ресурсов системы. Если ваша программа повторно создает, использует и освобождает, скажем, перо некоторого конкретного вида, вам приходится повторять эти шаги каждый раз, когда вы используете такое перо. Поскольку C++Builder использует кэш-память для хранения графических ресурсов, увеличивается вероятность, что часто употребляемое орудие рисования будет повторно выбираться из кэш-памяти, а не воссоздаваться каждый раз заново. Очевидно, что вследствие этого заметно возрастет эффективность повторяющихся операций вашего графического приложения.

Листинг 1 содержит два фрагмента кода, которые наглядно иллюстрируют, насколько C++Builder упрощает программирование графики. Первый фрагмент применяет стандартные функции GDI для того, чтобы нарисовать в окне OWL приложения для Windows желтый эллипс, обведенный синим контуром. Во втором фрагменте та же задача решается посредством канвы рисования.

void TMyWindow::Paint(TDC& PaintDC,bool erase, TRect& rect) {

HPEN PenHandle, OldPenHandle;

HBRUSH BrushHandle, OldBrushHandle;

PenHandle = CreatePen(PS_SOLID, 1, RGB(0, 0, 255));

OldPenHandle = SelectObject(PaintDC, PenHandle);

BrushHandle = CreateSolidBrush(RGB(255, 255, 0));

OldBrushHandle = SelectObject(PaintDC, BrushHandle);

Ellipse(10, 10, 50, 50);

SelectObject(OldBrushHandle) ;

DeleteObject(BrushHandle) ;

SelectObject(OldPenHandle);

DeleteObject(PenHandle) ;

void_fastcall TFormI::FormPaint(TObject *Sender) {

Canvas->Pen->Color = clBlue; // выбрать цвет контура Canvas->Brush->Color = clYellow; // выбрать цвет заливки Canvas->Ellipse(10, 20, 50, 50); // нарисовать эллипс }

Графика и мультимедиа

CorelDRAW Graphics Suite X4 Corel Corp, www.corel.ru

Русская версия знаменитого графического пакета. В полном соответствии с современными веяниями, одна из главных особенностей CorelDRAW GS X4 – тесная интеграция с онлайновой службой ConseptShare, пользователи CorelDRAW GS X4 могут загрузить макеты непосредственно в информационную систему сайта, пригласить участников проекта и др. Ну, и безусловно, появилась масса новых инструментов и возможностей. В состав пакета CorelDRAW X4 входят редактор векторной (CorelDRAW X4) и растровой графики (Photo-Paint X4), система для преобразования растровых изображений в векторные Corel PowerTRACE X4, программа для создания скриншотов Corel CAPTURE X4, а также вспомогательные утилиты.

AIMP2 AIMP Team, www.aimp.ru

«WinAmp XXI века». Эта утилита пользуется заслуженной славой удобного плеера, свободного от «синдрома универсальности», когда разработчики небольшой утилиты пытаются превратить ее в аналог ОС, «запихивая» в программу все новые и новые функции (что и сгубило некогда плеер WinAmp). AIMP2 компактен и отлично решает свою главную задачу – воспроизведение звука. Неважно, будь то музыкальные файлы, компакт-диски или онлайновое радио. От многих других плееров этот выгодно отличается множеством удобных мелочей. Например, можно одновременно работать с несколькими списками воспроизведения, есть масса «горячих» клавиш, закладки, возможность группового переименования файлов в коллекции и др.

AKVIS Noise Buster V.6.0 AKVIS, www.akvis.com/ru

Программа для подавления «цифрового шума». Собственно, проблема известна любому, кто сталкивался с цифровой фотографией. Причин «зашумления» картинки много, от недостаточной освещенности до использования цифрового увеличения. И при борьбе с ним сложнее всего убрать посторонние пятна так, чтобы не пострадали детали. В новой версии этой разработки используется оригинальный алгоритм с повышенной точностью расчета, появился параметр «Микродетали», определяющий степень «проявления» мелких деталей, возможность настройки параметров повышения четкости границ («Контурная резкость»). Утилита выпускается как автономная программа и в виде подключаемого модуля для графических редакторов (совместим с Adobe Photoshop, Photoshop Elements, Corel Photo-Paint, Ulead PhotoImpact и др.).

All My Movies BolideSoft, www.bolidesoft.com/rus

Удивительно, сколь много функций можно «накрутить» на простую, в сущности, утилиту. All My Movies – мощный каталогизатор фильмов. Мы уже отмечали эту программу, однако список функций этого пакета основательно расширился. Основная особенность системы – тесная связь с Интернетом. В большинстве случаев работа по каталогизации фильмотеки сводится к импорту информации о фильме из Интернет-базы IMDb.com, а также из русских онлайновых БД videoguide.ru, film.ru, KinoPoisk.ru и RMDb.ru. Создатель All My Movies проявил заботу о детях, предусмотрев защиту паролем базы фильмов, поэтому за базу недетских фильмов можно не бояться. Реализована даже возможность взаимодействия с устройством Dacal DC-300 (роботизированная библиотека CD/DVD).

BetterJPEG BetterJPEG Team, www.betterjpeg.com Обработка JPEG-файлов без потери качества Быстрый просмотр файлов в текущем каталоге

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

Light Alloy Softella, www.light-alloy.ru

Знаменитый видеоплеер. Один из самых любимых российскими пользователями, компактный и функциональный. Он совместим практически со всеми распространенными форматами мультимедийных файлов, прост в управлении, содержит массу дополнительных настроек. Эта небольшая утилита уверенно побеждает таких мультимедийных монстров, как Windows Media Player или Cyberlink PowerDVD.

Movavi VideoSuite Movavi, www.movavi.com

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

RiDoc «Риман», www.riman.ru

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

TVTons TVTons, www.tvtons.com/ru/

Система управления ТВ-каналами и каналами потокового видео в Интернете. Число сайтов, предлагающих онлайновое видео сегодня, превосходит всякие разумные пределы, видео загружается в Сеть петабайтами, и вполне закономерно возникает необходимость как-то организовать учет этого мультимедийного богатства. В оболочке TVTons реализована возможность ведения БД каналов, они рассортированы по странам и жанрам. Понравившийся ролик можно сохранить, занести в закладки и т. д. Пакет тесно интегрирован с онлайновой службой, обеспечивающей поиск новых каналов в сети.

Графика и мультимедийные данные имеют принципиально другую природу, нежели текст. Из-за этого объединить их в одном файле невозможно.

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

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

НА ЗАМЕТКУ

Ранее говорилось, что Web-страница может храниться в нескольких файлах. Web-страница с внедренными элементами - тому пример.

Графика

Графика на Web-страницах появилась достаточно давно. Предназначенный для этого тег появился еще в версии 3.2 языка HTML, которая вышла в 1997 году. С тех пор Всемирную паутину захлестнула волна интернет-графики (к настоящему времени, надо сказать, поутихшая).

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

Форматы интернет-графики

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

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

Формат GIF (Graphics Interchange Format, формат обмена графикой ) - старожил среди "сетевых" форматов графики. Он был разработан еще в 1987 году и модернизирован в 1989 году. На данный момент он считается устаревшим, но все еще широко распространен.

Достоинств у него довольно много. Во-первых, GIF позволяет задать для изображения "прозрачный" цвет; закрашенные этим цветом области изображения станут своего рода "дырками", сквозь которые будет "просвечивать" фон родительского элемента. Во-вторых, в одном GIF-файле можно хранить сразу несколько изображений, фактически - настоящий фильм (анимированный GIF). В-третьих, из-за особенностей применяемого в нем сжатия он отлично подходит для хранения штриховых изображений (карт, схем, рисунков карандашом и пр.).

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

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

Формат JPEG (Joint Photographic Experts Group, Объединенная группа экспертов по фотографии) был разработан в 1993 году специально для хранения полутоновых изображений. Для чего активно применяется до сих пор.

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

Формат PNG (Portable Network Graphics, перемещаемая сетевая графика ) появился на свет в 1996 году. Он разрабатывался как замена устаревшему и не очень удобному GIF, а также, в некоторой степени, JPEG. В настоящее время он последовательно отвоевывает "жизненное пространство" у GIF.

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

Осталось назвать расширения, под которыми сохраняются файлы того или иного формата. Файлы GIF и PNG имеют "говорящие" расширения gif и png, а файлы JPEG - jpg, jpe или jpeg.