"Информатика", Поляков К.Ю., Еремин Е.А.
Рисунок в компьютере можно хранить не только как набор цветных пикселей. Векторное кодирование описывает его геометрическими объектами, а фрактальное — правилами, по которым изображение можно построить. Поэтому схемы и логотипы часто удобно задавать примитивами, а повторяющиеся структуры — правилами. Выбор способа зависит от того, как устроено изображение: его деталей, цветов и контуров. Понимание этих методов помогает выбирать подходящий формат и объясняет, почему одни картинки сохраняют чёткость при увеличении, а другие нет.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Векторное кодирование — представление рисунка как набора геометрических объектов. Вместо цвета каждого пикселя сохраняются описания объектов и их свойства. Такой способ нужен, когда изображение можно собрать из отдельных фигур и контуров: например, при создании схемы или логотипа.
Графический примитив — простейший объект рисунка, например отрезок, окружность или прямоугольник. Чтобы построить примитив, задают его тип и параметры: координаты, размеры, а иногда цвет и толщину линии. Примитивы нужны как строительные элементы, из которых составляют более сложное изображение.
Фрактал — объект, части которого в некоторой степени повторяют форму целого. Это сходство может сохраняться на разных масштабах, хотя части не всегда совершенно одинаковы. Понятие помогает описывать рисунки, где похожие структуры повторяются снова и снова.
Фрактальное кодирование — представление изображения с помощью правил и параметров, описывающих его структуру. Вместо перечисления каждого элемента задают способ построения рисунка. При восстановлении компьютер применяет это описание и получает изображение.
Растровое кодирование сохраняет значения пикселей: положение каждого элемента сетки и его цвет. Другие методы могут хранить не отдельные точки, а описание объектов или правила построения изображения. Это различие важно, потому что способ хранения определяет, какие сведения нужно записать: для растра — цвета пикселей, для вектора — типы фигур и параметры, для фрактального подхода — правила и структуру повторений.
При векторном кодировании рисунок собирают из примитивов. Для отрезка записывают координаты двух концов, а для окружности — координаты центра и радиус; прямоугольнику нужны координаты и размеры. Программа получает тип объекта и его параметры, поэтому может построить каждую фигуру в нужном месте. Сочетая много таких описаний, получают целый рисунок, а его свойства можно задавать для отдельных объектов.
Векторное изображение можно увеличивать без заметных квадратных пикселей, потому что в нём хранятся параметры объектов, а не только готовая пиксельная сетка. При смене масштаба программа заново вычисляет положение и размер фигур и строит их контуры. Поэтому линии остаются чёткими. Однако увеличение меняет размер изображения, а не добавляет ему новые детали, которых не было в описании.
Фрактальный подход полезен, когда в рисунке есть повторяющиеся структуры. Если похожие элементы встречаются на разных масштабах, их можно описать небольшим набором правил вместо отдельного перечисления каждого элемента. Программа применяет правила при построении рисунка, поэтому сложное изображение иногда задаётся кратким описанием. Это не означает, что любой повторяющийся узор автоматически является фракталом: значение имеет описание структуры правилом.
Выбор способа зависит от того, какие особенности нужно сохранить. В схемах и чертежах важны линии и геометрические формы, поэтому их удобно составлять из примитивов. Фотография, напротив, содержит множество деталей, оттенков и плавных переходов; описать всё это небольшим числом геометрических фигур обычно нельзя. Для фотографии практичнее хранить цвета большого количества пикселей.
| Характеристика | Растровый метод | Векторный метод | Фрактальный метод |
|---|---|---|---|
| Что хранится | Значения цветов пикселей | Описания примитивов и их параметры | Правила и параметры структуры изображения |
| Как задаётся изображение | Сеткой пикселей | Набором геометрических объектов | Правилом построения, в том числе повторяющихся частей |
| Как влияет увеличение масштаба | Пиксели могут стать заметными | Объекты строятся заново, контуры обычно остаются чёткими | Изображение строится по заданным правилам |
| Для каких изображений подходит | Фотографии и изображения с множеством оттенков | Схемы, чертежи, логотипы | Изображения с повторяющимися структурами |
| От чего зависит объём данных | От числа пикселей и сведений об их цвете | От числа объектов и сложности их параметров | От количества и сложности правил и параметров |
Сначала определите, какие сведения нужны для изображения: цвета точек, параметры фигур или правила структуры. Затем сопоставьте их с подходящим столбцом таблицы. Это поможет выбрать метод, но не означает, что один способ всегда лучше остальных.
Задача 1. Нужно закодировать рисунок из трёх отрезков. Какие данные следует сохранить при векторном описании? Сначала выясним, какие сведения позволяют программе построить каждый отрезок. Поскольку отрезки могут иметь разное положение, нельзя ограничиться только их количеством.
Ответ: нужно сохранить описание трёх отрезков и координаты концов каждого; при необходимости также записать их цвет и толщину.
Задача 2. Логотип состоит из окружности, прямоугольника и нескольких линий. Почему его удобно хранить в векторном виде? Проверим, из каких частей он составлен и что произойдёт при изменении размера. Логотип построен из геометрических фигур, для которых можно указать точные параметры.
Ответ: логотип удобно хранить векторно, потому что он состоит из геометрических примитивов, которые можно описать параметрами и чётко построить при другом масштабе.
Задача 3. Для фотографии и чертежа требуется выбрать способ кодирования. Обоснуем выбор, сравнив, какие детали важны в каждом изображении. Один и тот же способ не обязан одинаково хорошо подходить обоим объектам.
Ответ: фотографию обычно кодируют растровым способом, а чертёж — векторным, поскольку в нём преобладают геометрические объекты.
Ошибка — считать, что векторное изображение хранит цвет каждого пикселя. Так думают, потому что на экране любое изображение в итоге отображается из пикселей. Проверьте себя: если в описании перечислены объекты и их параметры, это векторный способ; если записаны цвета точек сетки — растровый.
Нельзя считать, что любое изображение удастся без потерь описать небольшим набором примитивов. Геометрические фигуры хорошо подходят для простых контуров, но в реалистичном изображении слишком много мелких деталей и оттенков. Перед выбором метода спросите себя, можно ли действительно собрать картинку из небольшого числа объектов.
Увеличение векторного рисунка не добавляет новых деталей. Чёткость сохраняется потому, что программа заново строит объекты по заданным параметрам, а не потому, что изображение стало подробнее. Чтобы проверить себя, различайте качество контуров и количество сведений об изображённом объекте.
Повторяющийся узор сам по себе ещё не означает фрактальное кодирование. Ошибка возникает, когда сходство элементов принимают за способ их хранения. Проверьте, задан ли узор правилом построения структуры или в описании просто перечислены похожие объекты: именно правило отличает фрактальный подход.
Для понимания растрового способа нужны знания о пикселях, их координатах и кодировании цвета. Описание примитивов связано с геометрическими построениями и координатами: без них нельзя задать положение и размер фигур. Эти способы пригодятся при изучении графических редакторов, форматов файлов и обработки изображений. Понимание принципов кодирования помогает объяснить, почему разные картинки сохраняют и масштабируют по-разному.
Чем векторное кодирование отличается от растрового?
Растровое кодирование хранит цвет каждого пикселя. Векторное хранит описания геометрических объектов и их параметры. Поэтому при векторном изображении программа строит рисунок из объектов, а не считывает готовую сетку пикселей.
Какие данные нужны, чтобы задать графический примитив?
Нужно указать тип объекта и параметры, необходимые для его построения. Например, отрезок задают координатами двух концов, а окружность — координатами центра и радиусом. Для рисунка также могут задаваться цвет и другие свойства объекта.
Почему векторный рисунок не становится размытым при увеличении?
В векторном файле записаны параметры объектов, а не неизменная сетка пикселей. При увеличении программа заново строит объекты в новом масштабе. Контуры остаются чёткими, хотя само изображение не получает дополнительных деталей.
Почему фотографию обычно неудобно описывать набором геометрических фигур?
Фотография содержит множество мелких деталей, оттенков и плавных переходов. Для точного описания пришлось бы перечислить очень много объектов и их свойств. Растровый способ обычно удобнее, потому что непосредственно сохраняет цвет пикселей.
Что означает фрактальное описание изображения?
Это описание рисунка правилами и параметрами, по которым его можно построить. Такой подход может использовать повторяющиеся структуры: части рисунка похожи на целое или друг на друга. При восстановлении программа строит изображение по заданному описанию.
§ 13. Кодирование рисунков: другие методы