Веду на сто
Учебная статья

Объём изображения, звукозаписи и передаваемых данных

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

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

Бит, код и число возможных значений

Бит принимает одно из двух значений: 0 или 1. Два бита дают четыре цепочки: 00,01,10,11. При добавлении ещё одного бита каждая цепочка получает два продолжения, поэтому число вариантов удваивается. Из b бит получается 2^b различных кодов.

Для C возможных значений при одинаковой длине кодов нужна наименьшая целая глубина b, для которой 2^b\geq C. Например, пяти цветам двух бит не хватает: кодов всего четыре. Трёх бит достаточно, хотя три из восьми возможных кодов останутся неиспользованными. Объём всё равно рассчитывается по трём битам на пиксель.

Байт содержит 8 бит. В рассматриваемых учебных задачах Кбайт содержит 1024 байта, а Мбайт — 1024 Кбайт. Единицы частоты устроены иначе: 1\ \text{кГц}=1000\ \text{Гц}. Перевод приставки нельзя механически переносить с объёма памяти на частоту.

Почему объём изображения равен произведению

Растр — прямоугольная сетка пикселей. При ширине W и высоте H она содержит WH точек. Если код цвета каждой точки занимает b бит, суммарный объём кодов равен V=WHb бит.

Собственный учебный пример: сетка 4\times3 из пяти допустимых цветов требует 4\cdot3\cdot3=36 бит. Если весь результат хранится в целом числе байтов, нужны 5 байт: четыре байта вмещают только 32 бита. При плотной записи кодов округляется общий объём; выделять целый байт каждому трёхбитному пикселю оснований нет.

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

Почему в формуле звука четыре множителя

При дискретизации звук заменяется последовательностью измерений сигнала через равные интервалы времени. Частота f показывает число измерений за секунду в одном канале. За t секунд получается ft измерений.

Каждое значение записывается кодом из b бит. Поэтому один канал занимает ftb бит, а c каналов — V=fbtc бит. Моно содержит один канал, стерео — два, квадро — четыре. Формула предполагает отсутствие сжатия и не включает служебную часть файла.

Частота и глубина кодирования отвечают за разные стороны записи: первая задаёт число измерений во времени, вторая — число доступных кодов одного измерения. Удвоение любой из них удваивает объём при остальных неизменных параметрах. В задачах слово «разрешение» звукозаписи может обозначать именно глубину кодирования.

Сжатие и повторное кодирование

Сжатие уменьшает объём представления данных. Из одних размеров растра или частоты звука степень сжатия не определяется: в задаче должна быть дана дополнительная связь. При уменьшении исходного объёма V_0 на p процентов остаётся:

V_s=V_0\left(1-\frac p{100}\right).

Фраза «оригинал на p процентов больше сжатого файла» имеет другую базу: V_0=V_s(1+p/100). Например, 100 Кбайт после уменьшения на 20% превращаются в 80 Кбайт. Разница 20 Кбайт составляет уже 25% от 80 Кбайт: исходный файл больше сжатого на 25%, а не на 20%.

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

\frac{V_2}{V_1}=\frac{f_2}{f_1}\cdot\frac{b_2}{b_1}\cdot\frac{c_2}{c_1}.

Индексы 1 и 2 обозначают первую и вторую записи. Неизменные множители сокращаются; если длительности различаются, необходимо дополнительно учесть t_2/t_1. Служебные данные и сжатие могут нарушить простую пропорцию и требуют отдельного учёта.

Передача и целые ответы

Скорость v в бит/с показывает количество бит за секунду. За T секунд передаётся V=vT бит, откуда T=V/v. Здесь T — время передачи, а t в формуле звука — время звучания. Их равенство не предполагается.

Для целочисленного ответа сначала записывается ограничение. Если q одинаковых файлов объёма V должны поместиться в лимит L, то qV\leq L. Отсюда берётся наибольшее целое, не превышающее L/V. Если же требуется выделить достаточно целых единиц памяти, выбирается наименьшее целое, не меньшее точного объёма. Запрос «целая часть» или «ближайшее целое» — самостоятельное указание о форме ответа.

Почему допустимая глубина цвета округляется вниз, а память для записи — вверх? Как одновременно учесть изменение параметров звука и скорости канала? Эти вопросы применяются к условиям банка в статье «Объём изображений и звука, хранение и передача».