Как вычислять объём цифрового звука и растрового изображения?
Дискретизация заменяет непрерывный сигнал конечным набором отсчётов и уровней. Для звука измеряют амплитуду через равные интервалы времени, для растра разбивают изображение на…
Дискретизация заменяет непрерывный сигнал конечным набором отсчётов и уровней. Для звука измеряют амплитуду через равные интервалы времени, для растра разбивают изображение на пиксели. Точность растёт вместе с частотой измерений и разрядностью, но одновременно увеличивается объём данных.
Звуковая запись
Несжатый объём звука находят как произведение частоты дискретизации, разрядности одного отсчёта, длительности и числа каналов. Частота измеряется в отсчётах за секунду, разрядность — в битах. Стереозапись содержит два канала, поэтому при остальных равных занимает вдвое больше монофонической.
Растровая графика
Для изображения без сжатия перемножают ширину, высоту и глубину цвета одного пикселя. Если палитра содержит N цветов, минимальное целое число бит на индекс равно потолку двоичного логарифма N. Служебные заголовки и выравнивание строк учитывают только тогда, когда это оговорено форматом или условием.
Цветовые модели
RGB описывает излучаемый цвет тремя компонентами и типичен для экранов. CMYK связан с печатными красками, а HSB разделяет тон, насыщенность и яркость. Одинаковое число каналов не гарантирует одинаковый смысл компоненты, поэтому модель нельзя подменять простой арифметикой байтов.
Где появляется сжатие
Форматы без потерь сохраняют точные значения отсчётов или пикселей, а методы с потерями отбрасывают детали, менее заметные человеку. Коэффициент сжатия применяют к исходному объёму в указанном направлении: если файл уменьшился в четыре раза, итог составляет четверть первоначального размера, а не минус четыре процента.
Техника проверки
Запишите формулу с единицами до подстановки чисел. После вычисления битов отдельно переведите их в байты и более крупные единицы. Оцените порядок величины: минута многоканального звука не должна случайно оказаться меньше короткой текстовой строки. Такая оценка быстро обнаруживает забытые каналы и множитель восемь.
Расчёт как проверяемая функция
Формула становится надёжнее, если единицы входят в имена переменных. Для несжатого звука число отсчётов равно частоте дискретизации, умноженной на длительность и число каналов; каждый отсчёт занимает заданную разрядность. Для растра перемножают ширину, высоту и глубину цвета. Деление на восемь выполняют только после получения числа бит.
def pcm_bytes(seconds: float, hz: int, bits: int, channels: int) -> int:
total_bits = seconds * hz * bits * channels
return int(total_bits / 8)
def raster_bytes(width: int, height: int, bits_per_pixel: int) -> int:
return width * height * bits_per_pixel // 8
print(pcm_bytes(90, 48_000, 24, 2))
print(raster_bytes(1920, 1080, 24))Результат описывает сырой поток без заголовка, выравнивания и сжатия. Это не недостаток формулы, если допущение записано. Ошибка возникает, когда рассчитанный сырой объём молча называют размером конкретного WAV, PNG или другого контейнера.
Практика: медиапакет для эксперимента
Рассчитайте объём пяти минут монофонической записи 44,1 кГц и 16 бит, затем стереозаписи с теми же параметрами. Для изображения 3840×2160 сравните 24 и 32 бита на пиксель. Представьте ответы в байтах, МиБ и битах, сохраняя промежуточные единицы. После этого предположите коэффициент сжатия 3:1 и отдельно подпишите, что это модельный коэффициент, а не гарантированное свойство формата.
Источники
- МФТИ: Программа вступительного испытания по информатике и информационно-коммуникационным технологиям.
- Семакин И.Г., Хеннер Е.К., Шеина Т.Ю. Информатика. 11 класс. Базовый уровень.
- Угринович Н.Д. Информатика. 11 класс. Профильный уровень.