Введение

Кодирование блоками с усечением (BTC) — это тип метода сжатия изображений с потерями для изображений в оттенках серого. Он разделяет исходные изображения на блоки, а затем использует квантизатор для уменьшения количества уровней серого в каждом блоке, сохраняя при этом среднее значение и стандартное отклонение неизменными. Это ранний предшественник популярной аппаратной техники DXTC, хотя метод сжатия BTC был впервые адаптирован для цветных изображений задолго до DXTC с использованием очень похожего подхода, называемого сжатием цветовых ячеек. BTC также был адаптирован для сжатия видео. BTC был впервые предложен профессорами Митчеллом и Делпом в Университете Пердью. Другой вариант BTC — кодирование блоками с усечением абсолютных моментов (AMBTC), в котором вместо стандартного отклонения сохраняется первый абсолютный момент вместе со средним значением. AMBTC вычислительно проще, чем BTC, и обычно обеспечивает меньшую среднеквадратичную ошибку (MSE). AMBTC был предложен Максимо Лема и Робертом Митчеллом. Использование подблоков размером 4×4 пикселя обеспечивает степень сжатия 4:1, предполагая использование 8-битных целочисленных значений при передаче или хранении. Более крупные блоки позволяют достичь большей степени сжатия («a» и «b» значения распределяются по большему количеству пикселей), однако качество также снижается с увеличением размера блока из-за особенностей алгоритма. Алгоритм BTC использовался для сжатия изображений, полученных с марсохода Mars Pathfinder.

Декодер

Теперь на стороне декодера нам нужно только переназначить значения "a" и "b" пикселям 1 и 0. Это даст нам следующий блок:

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