Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Курс лекций Информационные технологии в ИТСС

.pdf
Скачиваний:
121
Добавлен:
13.02.2015
Размер:
4.52 Mб
Скачать

ГОУ СПО «Самарский государственный профессионально-педагогический колледж»

Рис. 5.8

Рис. 5.9

Строго говоря, траектория - это абстрактный математический объект: поскольку точки бесконечно малы, траектория должна быть бесконечно тонкой. И хотя мы много говорили о построении кривых и демонстрировали изображения траекторий, в действительности траекторию увидеть невозможно. Однако с ее помощью описывается то, что действительно можно увидеть. Это можно сделать двумя способами: либо применить к траектории штриховку, делая ее видимой, как бы нарисованной, либо рассматривать траекторию как контуры геометрической фигуры и заполнить ее как бы чернилами или краской. Можно сделать и то, и другое.

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

На рисунке 5.10 показаны два примера градиентного заполнения. Более сложные градиенты, которые использовались на рисунке 5.11, получены с помощью инструмента, именуемого градиентной сеткой в программе Illustrator.

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

Рис. 5.10

Рис. 5.11

Как показано на рисунке 5.12, заполнение узором, как предполагает само название, позволяет использовать для заполнения определенной области повторяющийся узор. Отметим, чтозаполненныеузоромфрагментычастоиспользуютсявкачествефона.

61

ГОУ СПО «Самарский государственный профессионально-педагогический колледж»

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

Рис. 5.12

Рис. 5.13

5.4 Преобразования

Самыми важными преобразованиями являются преобразования, показанные в табли-

це 5.1.

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

Таблица 5.1.

поворот вокруг точки

отражение относительно прямой линии

трансляция (линейное перемещение объекта)

62

ГОУ СПО «Самарский государственный профессионально-педагогический колледж»

сдвиг (изменение углов наклона осей объекта)

Другие преобразования можно выполнять путем перемещения анкерных точек и контрольных точек траектории. Кроме того, можно добавлять или удалять анкерные либо контрольные точки траектории, так что дизайнер или художник может точно регулировать форму объекта.

5.5 Вопросы для самоконтроля

1.Что такое координаты пикселя?

2.Почему прямые наклонные линии при отображении на мониторе имеют зубцы?

3.Что такое антиалиасинг?

4.Какие геометрические фигуры используются в векторной графике?

5.Какие свойства кривых Безье наиболее полезны для использования в векторной графике?

6.Что такое контрольные точки кривой Безье?

7.Что такое «траектория» в векторной графике?

8.Что такое анкерные точки траектории?

9.Как можно визуализировать траекторию?

10.Для чего применяются штриховка и заполнение в векторной графике?

11.Какие преобразования используются в векторной графике?

12.Поясните принцип построения кривой Безье.

63

ГОУ СПО «Самарский государственный профессионально-педагогический колледж»

ЛЕКЦИЯ 6

6 Растровые изображения

В этой главе вы найдете ответы на следующие вопросы:

Что такое разрешение?

Какие существуют способы сжатия изображений?

Как используются маски и альфа-каналы?

Для чего используется график отображающей функции?

Как производится фильтрация изображений?

Какие проблемы связаны с геометрическими преобразованиями растровых изображений?

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

6.1 Разрешение

Концепция разрешения проста; путаницу могут вносить лишь различные способы ис-

пользования этого слова. Разрешение - это мера того, насколько точно устройство,

используя конечные пиксели, представляет (показывает) непрерывные изобра-

жения. Таким образом, данное понятие тесно связано с дискретизацией.

Разрешение можно задать двумя способами. Для принтеров и сканеров обычно оно задается как количество точек на единицу длины. Как правило, в англоязычных странах единицей разрешения является количество точек на дюйм (dots реr inch - dpi). На данный момент настольные принтеры обычно имеют разрешение 600 dpi, а фотопринтеры - 1200 - 3600 dpi; разрешение планшетных сканеров достигает 3600 dpi; диаскопические и барабанные сканеры, используемые для высококачественной работы, дают еще большее разрешение.

В сфере видео разрешение обычно задается по другому, а именно через размер кадра в пикселях. Например, кадр в системе PAL равен 768 х 576 пикселей; кадр NTSC - 640

х480. Очевидно, зная физические размеры монитора, вы можете перевести разрешение, указанное в такой форме, в точки на дюйм.

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

У компьютерных мониторов, как и у видеомониторов, разрешение задается как размер изображения, например - 800 х 600 для 15” мониторов или 1024 х 768 пикселей, для 17”. Так как количество точек на дюйм у мониторов изменяется в небольших пределах, то при типичном разрешении 72 dpi, например, 14-дюймовый монитор даст изображение размером 640 х 480, а 17-дюймовый монитор - 800 х 600 пикселей.

64

ГОУ СПО «Самарский государственный профессионально-педагогический колледж»

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

решением 72 dpi, его ширина будет равна 1,4 дюйма. Отображая тот же рисунок без масштабирования на мониторе с разрешением 115 dpi, получим квадрат со стороной всего 0,9 дюйма. При печати на принтере с разрешением 600 dpi сторона квадрата будет равна 0,17 дюйма.

Рис 6.1

В общем случае имеем следующее соотношение:

Физический_ размер =

размер_ в_ пикселях

разрешение_ устройста

 

В этой формуле разрешение устройства измеряется в пикселях на единицу длины. Тем не менее, изображения имеют естественный размер: это размер оригинала до сканирования. Часто требуется, чтобы изображение отображалось с естественными размерами, а не сжималось или растягивалось согласно разрешению устройства вывода. Чтобы достичь такого отображения, в большинстве форматов графических файлов вместе с данными об изображении записывается его разрешение. Такое разрешение обычно указывается в пикселях на дюйм (pixels реr inch - ppi), чтобы его можно было отличить от разрешения физических устройств. Записанное разрешение обычно равно разрешению устройства, с которого поступило изображение. Например, если изображение сканируется с разрешением 600 dpi, записанное разрешение изображения будет равно 600 ppi. Поскольку пиксели изображения будут генерироваться при этом разрешении, по числу пикселей и разрешению изображения можно вычислить физические размеры иллюстрации. Таким образом, программное обеспечение, которое отвечает за отображение изображения, легко может гарантировать, что рисунок отображается с естественными размерами, масштабировав его скоэффициентом

(разрешение устройства)/(разрешение изображения).

Например, если фотография размером 6 х 4 дюйма (15 х 10 см) была отсканирована с разрешением 600 dpi, ее растровый образ будет иметь размер 3600 х 2400 пикселей. При выводе этого образа на монитор с разрешением 72 dpi получим изображение 127 см х 85 см (пожалуй, для его просмотра придется использовать полосу прокрутки). Чтобы представить его с желаемым размером, необходимо масштабирование с коэффициентом 72/600 = 0,12, что, как легко проверить, действительно уменьшит изображение до исходного размера.

Если разрешение изображений больше разрешения устройства вывода, а изображение нужно масштабировать с уменьшением размера, пиксели придется отбрасывать. Дан-

ный процесс называется дискретизацией с понижением частоты.

Рисунок 6.2 слева получен при сканировании с высоким разрешением; рисунок справа является версией того же рисунка с низким разрешением.

65

ГОУ СПО «Самарский государственный профессионально-педагогический колледж»

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

сжатия данных.

Рис. 6.2 Влияние разрешения на качество изображения

6.2 Сжатие изображений

Рассмотрим еще раз рисунок 6.1 (красный квадрат на синем фоне). Ранее утверждалось, что для растрового представления необходимо почти 30 Кбайт. Данная оценка основана на предположении, что изображение хранится как массив с тремя байтами на пиксель. Чтобы можно было работать с изображением или отображать его на экране, его нужно представить именно в такой форме, но если необходимо всего лишь записать значения его пикселей для хранения или передачи по сети, можно применить более компактное представление данных. Вместо того чтобы явно хранить значение каждого пикселя, мы можем записать значение, а затем указать, сколько раз подряд оно следует, начиная с данного места. Например, если первая строка состоит из 100 пикселей одного цвета, то вместо записи пикселей по отдельности, на что потребуется 300 байт, можно использовать всего лишь 4 байта, в трех записав код цвета, а в одном - количество пикселей.

Данная простая техника замены серии последовательных пикселей одного цвета -

кодом цвета и количеством пикселей в серии, называется групповым кодирова-

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

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

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

66

ГОУ СПО «Самарский государственный профессионально-педагогический колледж»

Групповое кодирование является примером сжатия без потерь, поскольку в ходе цикла сжатия/восстановления не происходит потери информации (Рис. 6.3).

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

ство, можно получить значительную экономию места. Однако, поскольку в ходе каждого цикла сжа-

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

Рис. 6.4

Рис. 6.3

6.3 Сжатие без потерь

Простейшим алгоритмом сжатия без потерь с точки зрения понимания является групповое кодирование. Более сложные алгоритмы сжатия без потерь, которые вам могут встретиться, делятся на два класса. Алгоритмы первого класса построены по принципу такой перекодировки данных, чтобы для хранения наиболее часто встречающихся значений требовалось меньше битов. Например, если на изображении использовано 256 цветов, каждый пиксель будет занимать 8 бит. Если же мы можем так присвоить цветам коды различной длины, чтобы код наиболее распространенного цвета имел длину всего один бит, двухбитовыми кодами представлялась следующая группа часто встречающихся цветов и т.д., большинство изображений можно будет записать с экономией места. Данный подход называется кодированием переменной длины (Variable-Length Coding), и его возникновение связывают с первыми работами по сжатию данных и теории информации, выполненными в конце 1940-х годов.

Алгоритмы кодирования переменной длины - построены по принципу такой перекодировки данных, чтобы для хранения наиболее часто встречающихся зна-

чений требовалось меньше бит. Самым известным алгоритмом этого класса являет-

ся кодирование Хаффмана.

67

ГОУ СПО «Самарский государственный профессионально-педагогический колледж»

Рассмотрим пример. Обычно для хранения данных и передачи сообщений используются коды фиксированной длины, например, код ASCII. Множество символов представляется некоторым количеством кодовых слов равной длины, которая для кода ASCII равна 7 битам. При этом для всех сообщений с одинаковым количеством символов требуется одинаковое количество битов при хранении и одинаковая ширина полосы пропускания при передаче. Конечно, если сообщение написано, скажем, на английском языке, то вероятность появления в нем букв 'z' намного меньше, чем вероятность появления букв 'e'. Это означает, что если для представления буквы 'e' использовать более короткое кодовое слово, чем для представления буквы 'z', то можно ожидать, что в среднем для хранения сообщения потребуется меньше памяти, а для его передачи – меньшая ширина канала. В коде ASCII сообщение 'easily' (легко) кодируется следующим образом:

1100101

1100001

1110011

1101001

1101100

1111001

e

a

s

i

l

y

для чего требуется 42 бита, в то время как при использовании кода со следующим представлением символов:

a -> 1001 e -> 0

i -> 1010 l -> 11001 s -> 11010 y -> 1011

то же самое сообщение можно закодировать следующим образом

0 1 0 0 1 1 1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 1 1 e a s i l y

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

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

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

Почти все практические словарные кодировщики принадлежат семье алгоритмов, происходящих из работы Зива и Лемпела. Сущность состоит в том, что фразы заменяются указателем на то место, где они в тексте уже ранее появлялись. Этот метод

68

ГОУ СПО «Самарский государственный профессионально-педагогический колледж»

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

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

6.4 Сжатие JРЕG

Сжатию без потерь можно подвергать данные любого типа; также отметим, что это единственный способ сжатия, который можно применить к таким объектам, как двоичные выполняемые программы, данные в формате динамических электронных таблиц или текст, посколькуизменение всего одного битаможет непоправимо исказить такуюинформацию. Однако информация об изображении может допустить потерю определенной части данных, поэтому к ней можно эффективно применить технологии сжатия с потерями (Рис.6.4). Наиболее важной технологией сжатия изображений с потерями является JPEG. JPEG - это аббревиатура от названия организации Joint Photographic Experts Group (Объединеннаягруппаэкспертоввобластифотографии).

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

Таким образом, сжатие в JPEG осуществляется за счет плавности изменения цветов в изображении.

Рис. 6.5 94К

14К

11К

Упрощенно сжатие JPEG состоит из 4-х этапов.

На первом этапе изображение переводится из цветовой модели RGB, с компонентами, отвечающими за красную (Red), зеленую (Green) и синюю (Blue) составляющие цвета точки, в цветовую модель YCrCb (цветоразностную). В нем Y — яркостная составляющая, а Cr, Cb — компоненты, отвечающие за цвет (красный и синий). За счет того, что человеческий глаз менее чувствителен к цвету, чем к яркости, появляется возможность сжимать массивы для Cr и Cb компонент с большими потерями и, соответственно, большими коэффициентами сжатия.

На втором этапе исходное изображение разбивается на матрицы 8х8 пикселей и применяем ДКП к каждой рабочей матрице.

На третьем этапе производим квантование полученных массивов данных, т.е. округляем полученные значения. Получаются массивы данных, в которых очень много по-

69

ГОУ СПО «Самарский государственный профессионально-педагогический колледж»

вторяющихся элементов. На этом шаге осуществляется управление степенью сжатия, и происходят самые большие потери.

На четвертом этапе сжимаем данные с помощью алгоритма группового кодирования.

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

Рис. 6.6

Сжатие JPEG крайне эффективно для: фотографий и сканированных изображений с непрерывными тонами. Такие изображения можно сжать на 95% от их исходного размера при незаметном ухудшении качества. При значительном сжатии на экране обычно становятся видимыми нежелательные элементы на сжатом изображении, которые называются артефактами сжатия (Рис.6.6). Если сжатию с помощью JPEG подвергается изображение, содержащее резкие края, то они могут размываться. Такая проблема редко возникает при применении JPEG к материалам, имеющим фотографическое происхождение, но может возникать, если сжимаются изображения, созданные на компьютере. В частности, если текст, особенно мелкий, является частью изображения, JPEG, вероятнее всего, размоет края, сделав текст нечитабельным. Для изображений, имеющих множество резких границ, JPEG применять не следует. Вместо этого рекомендуется записывать такие изображения в формате PNG, построенном на другом алгоритме сжатия.

Существенными положительными сторонами алгоритма является то, что:

Задается степень сжатия.

Выходное цветное изображение может иметь 24 бита на точку.

Отрицательными сторонами алгоритма является то, что:

При повышении степени сжатия изображение распадается на отдельные квадраты

(8x8).

Проявляется эффект Гиббса — ореолы по границам резких переходов цветов.

6.5 Преобразование изображений

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

Зачем нужны преобразования изображений? Существует две причины:

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

70

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]