Главная arrow Вычислительная наука arrow Кодирование графической информации
Как начинался компьютер
Компьютерная революция
Двоичный код
Разработки военных лет
Интегральные микросхемы
Микрокомпьютер
Персоны
Сеть
Язык компьютера
Развитие ПО
Гибкие системы
Средства разработки
Информатика
Вычислительная наука
Операционные системы
Искусственный интеллект
Предыстория
Поиск
Знания и рассуждения
Логика
Робототехника
 

 
Кодирование графической информации Печать

Под графической информацией можно понимать рисунок, чертеж, фотографию, картинку в книге, изображения на экране телевизора или в кинозале и т. д. Для обсуждения общих принципов кодирования графической информации в качестве конкретного, достаточно общего случая графического объекта выберем изображение на экране телевизора. Это изображение состоит из некоторого количества горизонтальных линий – строк. А каждая строка в свою очередь состоит из элементарных мельчайших единиц изображения – точек, которые принято называть пикселами (picsel – PICture'S ELement – элемент картинки). Весь массив элементарных единиц изображения называют растром (лат. rastrum – грабли). Степень четкости изображения зависит от количества строк на весь экран и количества точек в строке, которые представляют разрешающую способность экрана или просто разрешение. Чем больше строк и точек, тем четче и лучше изображение. Достаточно хорошим считается разрешение 640x480, то есть 640 точек на строку и 480 строчек на экран.

Строки, из которых состоит изображение, можно просматривать сверху вниз друг за другом, как бы составив из них одну сплошную линию. После полного просмотра первой строки просматривается вторая, за ней третья, потом четвертая и т. д. до последней строки экрана. Так как каждая из строк представляет собой последовательность пикселов, то все изображение, вытянутое в линию, также можно считать линейной последовательностью элементарных точек. В рассматриваемом случае эта последовательность состоит из 640x480=307200 пикселов. Вначале рассмотрим принципы кодирования монохромного изображения, то есть изображения, состоящего из любых двух контрастных цветов – черного и белого, зеленого и белого, коричневого и белого и т. д. Для простоты обсуждения будем считать, что один из цветов – черный, а второй – белый. Тогда каждый пиксел изображения может иметь либо черный, либо белый цвет. Поставив в соответствие черному цвету двоичный код “0”, а белому – код “1” (либо наоборот), мы сможем закодировать в одном бите состояние одного пикселя монохромного изображения. А так как байт состоит из 8 бит, то на строчку, состоящую из 640 точек, потребуется 80 байтов памяти, а на все изображение – 38 400 байтов.

Однако полученное таким образом изображение будет чрезмерно контрастным. Реальное черно-белое изображение состоит не только из белого и черного цветов. В него входят множество различных промежуточных оттенков – серый, светло-серый, темно-серый и т. д. Если кроме белого и черного цветов использовать только две дополнительные градации, скажем светло-серый и темно-серый, то для того чтобы закодировать цветовое состояние одного пикселя, потребуется уже два бита. При этом кодировка может быть, например, такой: черный цвет – 002, темно-серый – 012, светло-серый – 102, белый – 112.

Общепринятым на сегодняшний день, дающим достаточно реалистичные монохромные изображения, считается кодирование состояния одного пикселя с помощью одного байта, которое позволяет передавать 256 различных оттенков серого цвета от полностью белого до полностью черного. В этом случае для передачи всего растра из 640x480 пикселов потребуется уже не 38 400, а все 307 200 байтов.

Цветное изображение может формироваться различными способами. Один из них – метод RGB (от слов Red, Green, Blue – красный, зеленый, синий), который опирается на то, что глаз человека воспринимает все цвета как сумму трех основных цветов – красного, зеленого и синего. Например, сиреневый цвет – это сумма красного и синего, желтый цвет – сумма красного и зеленого и т. д. Для получения цветного пикселя в одно и то же место экрана направляется не один, а сразу три цветных луча. Опять упрощая ситуацию, будем считать, что для кодирования каждого из цветов достаточно одного бита. Нуль в бите будет означать, что в суммарном цвете данный основной отсутствует, а единица – присутствует. Следовательно, для кодирования одного цветного пиксела потребуется 3 бита – по одному на каждый цвет. Пусть первый бит соответствует красному цвету, второй – зеленому и третий – синему. Тогда код 101(2) обозначает сиреневый цвет – красный есть, зеленого нет, синий есть, а код 110(2) – желтый цвет – красный есть, зеленый есть, синего нет. При такой схеме кодирования каждый пиксел может иметь один из восьми возможных цветов. Если же каждый из цветов кодировать с помощью одного байта, как это принято для реалистического монохромного изображения, то появится возможность передавать по 256 оттенков каждого из основных цветов. А всего в этом случае обеспечивается передача 256x256x256=16 777 216 различных цветов, что достаточно близко к реальной чувствительности человеческого глаза. Таким образом, при данной схеме кодирования цвета на изображение одного пикселя требуется 3 байта, или 24 бита, памяти. Этот способ представления цветной графики принято называть режимом True Color (true color – истинный цвет) или полноцветным режимом.

Следует упомянуть еще один часто используемый метод представления цвета, в котором вместо основного цвета используется его дополнение до белого. Если три цвета: красный, зеленый и синий вместе дают белый, то дополнением для красного, очевидно, является сочетание зеленого и синего, то есть голубой цвет. Аналогичным образом дополнением для зеленого является сочетание красного и синего, то есть пурпурный, а для синего – сочетание красного и зеленого, то есть желтый цвет. Эти три цвета – голубой, пурпурный и желтый с добавлением черного образуют основные цвета в системе кодирования, которая называется CMYK (от Cyan – голубой, Magenta – пурпурный, Yellow – желтый и blacK – черный). Этот режим также относится к полноцветным, но для передачи состояния одного пикселя в этом случае требуется 32 бита, или четыре байта, памяти, и может быть передано 4 294 967 295 различных цветов.

Полноцветные режимы требуют очень много памяти. Так, для обсуждавшегося выше растра 640x480 при использовании метода RGB требуется 921 600, а для режима CMYK – 1 228 800 байтов памяти. В целях экономии памяти разрабатываются различные режимы и графические форматы, которые немного хуже передают цвет, но требуют гораздо меньше памяти. В частности, можно упомянуть режим High Color (high color – богатый цвет), в котором для передачи цвета одного пикселя используется 16 битов и, следовательно, можно передать 65 535 цветовых оттенков, а также индексный режим, который базируется на заранее созданной таблице цветовых оттенков. Нужный цвет выбирается из этой таблицы с помощью номера – индекса, который занимает всего один байт памяти.

При записи изображения в память компьютера кроме цвета отдельных точек необходимо фиксировать много дополнительной информации – размеры рисунка, яркость точек и т. д. Конкретный способ кодирования всей требуемой при записи изображения информации образует графический формат. Форматы кодирования графической информации, основанные на передаче цвета каждого отдельного пикселя, из которого состоит изображение, относят к группе растровых или BitMap форматов (bit map – битовая карта).

Кодирование растровых изображений

Растровое изображение представляет собой совокупность точек (пикселей) разных цветов.

Наиболее известными растровыми форматами являются BMP, GIF и JPEG форматы. В формате BMP (от BitMaP) задается цветность всех пикселов изображения. При этом можно выбрать монохромный режим с 256 градациями или цветной с 16 256 или 16 777 216 цветами. Этот формат требует много памяти. В формате GIF (Graphics Interchange Format – графический формат обмена) используются специальные методы сжатия кода, причем поддерживается только 256 цветов. Качество изображения немного хуже, чем в формате BMP, зато код занимает в десятки раз меньше памяти. Формат JPEG (Goint Photographic Experts Group -Уединенная группа экспертов по фотографии) использует методы сжатия, приводящие к потерям некоторых деталей. Однако поддержка 16 777 216 цветов все-таки обеспечивает высокое качество изображения. По требованиям к памяти формат JPEG занимает промежуточное положение между форматами BMP и GIF.

Кодирование векторных изображений

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

Растровая графика обладает существенным недостатком – изображение, закодированное в одном из растровых форматов, очень плохо “переносит” увеличение или уменьшение его размеров – масштабирование. Для решения задач, в которых приходится часто выполнять эту операцию, были разработаны методы так называемой векторной графики. В векторной графике, в отличие от основанной на точке – пикселе – растровой графики, базовым объектом является линия. При этом изображение формируется из описываемых математическим, векторным способом отдельных отрезков прямых или кривых линий, а также геометрических фигур – прямоугольников, окружностей и т. д., которые могут быть из них получены. Фирма Adobe разработала специальный язык PostScript (от poster script – сценарий плакатов, объявлений, афиш), служащий для описания изображений на базе указанных методов. Этот язык является основой для нескольких векторных графических форматов. В частности, можно указать форматы PS (PostScript) и EPS, которые используются для описания как векторных, так и растровых изображений, а также разнообразных текстовых шрифтов. Изображения и тексты, записанные в этих форматах, большинством популярных программ не воспринимаются, они могут просматриваться и печататься только с помощью специализированных аппаратных и программных средств.

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