БСВойтиСохранить прогресс
← Все статьи
Задание 7Кодирование растра и аудио

Кодирование растра и аудио

Кодирование изображений

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

При работе с изображениями, звуком и другими непрерывными объектами для этого используется дискретизация.

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

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

Именно на этом принципе строится рассматриваемое далее равномерное кодирование: объект разбивается на отдельные элементы, после чего каждый элемент кодируется одинаковым количеством бит.

Однако изображения могут храниться не только таким способом.

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

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

ChatGPT Image 22 сент. 2026 г., 13_08_14.png

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

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

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

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

Пиксель — это минимальный элемент растрового изображения, для которого можно независимо задать цвет.

image.png

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

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

Размер растрового изображения часто записывается, например, так:

1920×1080.1920 \times 1080.

Это означает, что изображение содержит 19201920 пикселей по горизонтали и 10801080 пикселей по вертикали.

Общее количество пикселей будет равно:

K=1920⋅1080.K = 1920 \cdot 1080.

В общем случае, если ширина изображения равна MM пикселей, а высота — NN пикселей, количество пикселей равно:

K=M⋅N.K = M \cdot N.

Запись 1920×10801920 \times 1080, 2560×14402560 \times 1440, 3840×21603840 \times 2160 и подобные ей часто называют размером изображения в пикселях или его пиксельным разрешением.

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

Для этого используются величины ppi и dpi.

PPI — pixels per inch, то есть количество пикселей на один дюйм.

Например, значение

300 ppi300\text{ ppi}

означает, что на один дюйм изображения приходится 300300 пикселей.

DPI — dots per inch, то есть количество точек на один дюйм.

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

image.png

Предположим, что ширина сканируемого изображения составляет aa дюймов, а разрешение сканирования равно dd dpi.

Тогда количество пикселей по ширине будет равно:

M=a⋅d.M = a \cdot d.

Если высота изображения составляет bb дюймов:

N=b⋅d.N = b \cdot d.

Общее количество пикселей:

K=M⋅N.K = M \cdot N.

Подставим полученные выражения:

K=(a⋅d)(b⋅d).K = (a \cdot d)(b \cdot d).

Получим:

K=a⋅b⋅d2.K = a \cdot b \cdot d^2.

Поэтому при неизменном физическом размере изображения количество пикселей пропорционально квадрату разрешения:

K∼d2.K \sim d^2.

Например, если разрешение сканирования увеличить в 22 раза, количество точек по ширине увеличится в 22 раза и количество точек по высоте также увеличится в 22 раза.

Значит, общее количество пикселей увеличится в:

2⋅2=42 \cdot 2 = 4

раза.

После того как изображение разбито на пиксели, необходимо сохранить цвет каждого из них.

Компьютер хранит цвет не в виде слов «красный», «зелёный» или «синий», а в виде двоичного кода.

Например, если изображение содержит только два возможных цвета, достаточно одного бита:

00

и

1.1.

Одним битом можно записать два различных состояния.

Двумя битами можно получить уже четыре различных комбинации:

00,01,10,11.00,\quad 01,\quad 10,\quad 11.

Тремя битами можно получить восемь комбинаций:

000,001,010,011,100,101,110,111.000,\quad 001,\quad 010,\quad 011,\quad 100,\quad 101,\quad 110,\quad 111.
image.png

Каждый дополнительный бит увеличивает количество возможных двоичных комбинаций в 22 раза.

Поэтому если для кодирования цвета используется ii бит, можно получить:

L=2iL = 2^i

различных кодов.

Здесь LL — количество возможных цветов, а ii — количество бит, используемых для кодирования цвета одного пикселя.

Величина ii называется глубиной цвета.

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

Например:

i=1⇒L=21=2,i=1 \Rightarrow L=2^1=2,
i=8⇒L=28=256,i=8 \Rightarrow L=2^8=256,
i=16⇒L=216=65536,i=16 \Rightarrow L=2^{16}=65536,
i=24⇒L=224=16777216.i=24 \Rightarrow L=2^{24}=16777216.

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

Например, требуется закодировать 200200 цветов:

27=128,2^7=128,
28=256.2^8=256.

Семи бит недостаточно, поэтому на каждый пиксель необходимо использовать:

i=8 бит.i=8\text{ бит}.

Одной из наиболее распространённых моделей представления цвета является RGB.

Название происходит от трёх основных цветовых составляющих:

R — Red,R \text{ — Red},
G — Green,G \text{ — Green},
B — Blue.B \text{ — Blue}.

Цвет каждого пикселя получается смешением красной, зелёной и синей составляющих с различной яркостью.

image.png

В классической 2424-битной модели RGB для каждой составляющей используется 88 бит:

8+8+8=24 бита.8+8+8=24\text{ бита}.

Восемью битами можно задать:

28=2562^8=256

различных уровней каждой составляющей.

Поэтому общее количество цветов равно:

256⋅256⋅256=224=16777216.256 \cdot 256 \cdot 256 = 2^{24} = 16777216.

Теперь можно понять, откуда появляется формула информационного объёма растрового изображения.

Пусть изображение имеет размер:

M×N.M \times N.

Тогда оно содержит:

M⋅NM \cdot N

пикселей.

Если цвет каждого пикселя кодируется ii битами, то каждый пиксель занимает:

i бит.i\text{ бит}.

Следовательно, всё изображение занимает:

M⋅N⏟количество пикселей⋅i⏟бит на один пиксель.\underbrace{M \cdot N}_{\text{количество пикселей}} \cdot \underbrace{i}_{\text{бит на один пиксель}}.

Получаем:

V=M⋅N⋅i,V = M \cdot N \cdot i,

где VV — информационный объём изображения в битах, MM — ширина изображения в пикселях, NN — высота изображения в пикселях, ii — глубина цвета.

Таким образом, формула возникает непосредственно из принципа равномерного кодирования:

объём файла=количество элементов⋅объём одного элемента.\text{объём файла} = \text{количество элементов} \cdot \text{объём одного элемента}.

В данном случае элементом является пиксель.

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

Кодирование звука

Звук также является непрерывным объектом.

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

На графике по горизонтальной оси откладывается время, а по вертикальной — амплитуда сигнала.

image.png

Такой сигнал называется аналоговым.

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

Для записи звука выполняется его дискретизация.

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

Каждое такое измерение называется отсчётом.

image.png

Количество отсчётов, выполняемых за одну секунду, называется частотой дискретизации.

Обозначим её буквой:

f.f.

Например, частота дискретизации:

44100 Гц44100\text{ Гц}

означает, что за одну секунду выполняется:

4410044100

измерений сигнала.

А запись:

44,1 кГц44{,}1\text{ кГц}

означает то же самое:

44,1 кГц=44100 Гц.44{,}1\text{ кГц}=44100\text{ Гц}.

Важно не путать частоту самого звука и частоту дискретизации.

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

Если частота дискретизации равна ff, то за одну секунду будет получено:

ff

отсчётов.

За tt секунд:

f⋅tf \cdot t

отсчётов.

Однако одного определения момента измерения недостаточно.

Для каждого отсчёта необходимо сохранить значение амплитуды сигнала.

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

Этот процесс называется квантованием.

image.png

Пусть для записи одного отсчёта используется ii бит.

Тогда можно закодировать:

L=2iL=2^i

различных уровней сигнала.

Например, при 88-битном кодировании:

L=28=256.L=2^8=256.

При 1616-битном:

L=216=65536.L=2^{16}=65536.

При 2424-битном:

L=224=16777216.L=2^{24}=16777216.

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

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

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

Частота дискретизации определяет, насколько часто мы измеряем сигнал во времени, а глубина кодирования — насколько точно мы можем записать значение каждого измерения.

Кроме того, звук может содержать несколько каналов.

При монофонической записи используется один канал:

k=1.k=1.

При стереофонической записи одновременно сохраняются два независимых канала — левый и правый:

k=2.k=2.

При четырёхканальной записи:

k=4.k=4.
image.png

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

Теперь соберём все параметры вместе.

За одну секунду в одном канале выполняется:

ff

отсчётов.

За tt секунд:

f⋅t.f \cdot t.

Каждый отсчёт занимает:

i бит.i\text{ бит}.

Следовательно, один канал займёт:

f⋅t⋅if \cdot t \cdot i

бит.

Если каналов kk, получаем:

V=f⋅t⋅i⋅k.V=f\cdot t\cdot i\cdot k.

Или:

V=i⋅f⋅k⋅t,V=i\cdot f\cdot k\cdot t,

где VV — информационный объём звукового файла в битах, ff — частота дискретизации в герцах, ii — глубина кодирования в битах, kk — количество каналов, tt — длительность записи в секундах.

Как и в случае с изображением, формулу необязательно запоминать отдельно.

Она получается из того же принципа:

объём=количество элементов⋅объём одного элемента.\text{объём} = \text{количество элементов} \cdot \text{объём одного элемента}.

Только для изображения элементом является пиксель, а для звука — отдельный отсчёт сигнала.

Передача информации

Цифровую информацию можно не только хранить, но и передавать между устройствами.

Для передачи используется канал связи, который за одну секунду способен передать определённое количество информации.

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

Обычно она измеряется в:

бит/с,Кбит/с,Мбит/с,Гбит/с.\text{бит/с},\qquad \text{Кбит/с},\qquad \text{Мбит/с},\qquad \text{Гбит/с}.

Пусть скорость передачи равна:

v бит/с.v\text{ бит/с}.

Это означает, что за одну секунду передаётся vv бит.

Тогда за tt секунд будет передано:

V=v⋅tV=v\cdot t

бит информации.

Получаем основную формулу:

V=v⋅t,V=v\cdot t,

где VV — объём переданной информации, vv — скорость передачи данных, tt — время передачи.

Из этой формулы можно выразить время:

t=Vv,t=\frac{V}{v},

или скорость:

v=Vt.v=\frac{V}{t}.
image.png

При вычислениях необходимо следить за единицами измерения.

Например, если скорость задана в битах в секунду:

v бит/с,v\text{ бит/с},

то объём файла также необходимо перевести в биты.

Если скорость задана в Мбит/с, а объём в Мбайтах, также сначала необходимо привести величины к согласованным единицам.

Биты, байты и единицы измерения информации

Минимальной единицей измерения количества информации является бит.

Бит может принимать одно из двух значений:

00

или

1.1.

Восемь бит образуют один байт:

1 байт=8 бит.1\text{ байт}=8\text{ бит}.

Отсюда следует:

Vбайт=Vбит8.V_{\text{байт}} = \frac{V_{\text{бит}}}{8}.

Для обратного перевода:

Vбит=Vбайт⋅8.V_{\text{бит}} = V_{\text{байт}}\cdot8.

Для измерения больших объёмов информации используются Кбайты, Мбайты и Гбайты.

В задачах по информатике используются следующие соотношения:

1 Кбайт=210 байт=1024 байт,1\text{ Кбайт}=2^{10}\text{ байт}=1024\text{ байт},
1 Мбайт=210 Кбайт=220 байт,1\text{ Мбайт}=2^{10}\text{ Кбайт} =2^{20}\text{ байт},
1 Гбайт=210 Мбайт=230 байт.1\text{ Гбайт}=2^{10}\text{ Мбайт} =2^{30}\text{ байт}.

Таким образом:

байт→Кбайт→Мбайт→Гбайт.\text{байт} \rightarrow \text{Кбайт} \rightarrow \text{Мбайт} \rightarrow \text{Гбайт}.

При переходе к следующей, более крупной единице значение необходимо делить на:

210=1024.2^{10}=1024.

При переходе к меньшей единице — умножать на:

1024.1024.

Отдельно необходимо помнить переход между битами и байтами:

8 бит=1 байт.8\text{ бит}=1\text{ байт}.

Например:

8192 бит=81928=1024 байт=1 Кбайт.8192\text{ бит} = \frac{8192}{8} = 1024\text{ байт} = 1\text{ Кбайт}.
image.png

Важно также различать биты и байты в обозначениях скорости передачи.

Например:

1 Мбайт/с=8 Мбит/с.1\text{ Мбайт/с}=8\text{ Мбит/с}.

Поэтому канал со скоростью:

80 Мбит/с80\text{ Мбит/с}

передаёт теоретически:

808=10 Мбайт/с.\frac{80}{8}=10\text{ Мбайт/с}.

Главное при решении задач — перед вычислениями привести все величины к совместимым единицам измерения.