Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные. Дагаев / Проект_Кларк_Блинов_Яковлев.docx
Скачиваний:
1
Добавлен:
02.01.2026
Размер:
2.13 Mб
Скачать

1.7 Описание алгоритмов и форматов данных

1.7.1. Цветовые модели и форматы данных

В проекте используются четыре основных формата данных для хранения и передачи графической информации: JPEG, PNG, PDF и JSON. Каждый из них имеет свои особенности, область применения и алгоритмы сжатия, что позволяет оптимально обрабатывать различные типы изображений.

JPEG (Joint Photographic Experts Group) — формат сжатия с потерями, основанный на дискретном косинусном преобразовании (ДКП). В контексте проекта JPEG применяется для сжатия фотографий и изображений с непрерывными цветовыми переходами. Основные характеристики:

· Поддержка 24-битного цвета (16,7 млн оттенков)

· Регулируемый уровень сжатия через параметр качества (1–95)

· Прогрессивная развертка для постепенной загрузки

· Субдискретизация цветности 4:2:0 для уменьшения объема данных

· Удаление высокочастотных компонентов, незаметных для человеческого глаза.

PNG (Portable Network Graphics) — формат сжатия без потерь, основанный на алгоритме Deflate. В проекте используется в варианте PNG-P (палитровый) — индексированное изображение с ограниченной палитрой (до 256 цветов)

Для графических элементов (скриншотов, схем, текста) применяется палитровая версия PNG с адаптивной палитрой и дизерингом, что позволяет значительно уменьшить размер файла при сохранении визуального качества.

PDF (Portable Document Format) — используется для сборки многостраничных документов из отдельных изображений. В проекте реализовано преобразование последовательности изображений в единый PDF-файл с сохранением исходного порядка и разрешения.

JSON (JavaScript Object Notation) представляет собой легковесный текстовый формат для хранения и передачи структурированных данных, основанный на синтаксисе объектов JavaScript. Он широко используется в веб-API, конфигурационных файлах и для сериализации данных благодаря простоте и читаемости. Формат поддерживает базовые типы данных и вложенные структуры.Основная структураДанные в JSON организуются в объекты (в фигурных скобках {}) или массивы (в квадратных скобках []). Объекты состоят из пар "ключ-значение", где ключи — это строки в двойных кавычках, а значения разделены двоеточием. Пары разделяются запятыми, без завершающей запятой в конце. Пример простого объекта:

RGB (Red, Green, Blue) представляет собой аддитивную цветовую модель, где каждый видимый цвет формируется путем сложения различных интенсивностей трех первичных цветов: красного, зеленого и синего. Эта модель основана на принципах человеческого цветового восприятия, поскольку сетчатка глаза содержит три типа колбочек, максимально чувствительных к длинам волн, соответствующих именно этим трем цветам.

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

· Каждый из трех каналов (R, G, B) занимает 8 бит

· Диапазон значений для каждого канала: от 0 до 255 (2⁸ = 256 возможных значений)

· Общее количество уникальных цветов: 256 × 256 × 256 = 16 777 216 оттенков

Такое представление основано на психофизических исследованиях, показавших, что человеческий глаз способен различать примерно 10 миллионов цветов, что делает 24-битное кодирование вполне достаточным для большинства практических применений. В проекте RGB используется как основное цветовое пространство для работы с полноцветными изображениями перед их конвертацией в конечные форматы.

PNG-P (PNG Paletted) представляет собой специализированную разновидность формата PNG, разработанную для эффективного хранения графических изображений с ограниченным цветовым разнообразием. В отличие от полноцветного PNG-RGB, который кодирует каждый пиксель как тройку 8-битных значений (24 бита на пиксель), PNG-P использует принципиально иной подход, основанный на индексированных цветах.

Фундаментальный принцип: вместо хранения фактических значений RGB для каждого пикселя, PNG-P хранит:

1. Палитру (color table) — массив цветов (обычно от 2 до 256), представленных в формате RGB

2. Индексную карту (index map) — матрицу, где каждый элемент указывает на позицию цвета в палитре

Математическое представление: если представить изображение размером M×N пикселей с палитрой из K цветов, то:

  1. Палитра: P = {C₁, C₂, ..., Cₖ}, где Cᵢ = (Rᵢ, Gᵢ, Bᵢ)

  2. Индексная карта: I = [iₘₙ], где iₘₙ ∈ {1, 2, ..., K}

  3. Результирующий пиксель: Pixel(m,n) = P[iₘₙ]

Техническая архитектура PNG-P. PNG-P сохраняет все стандартные блоки формата PNG, но с критическими отличиями в блоке IHDR (Image Header):

  1. Цветовой тип (Color Type): 3 (индексированный цвет)

  2. Глубина цвета (Bit Depth): 1, 2, 4, или 8 бит на индекс

  3. Блок PLTE (Palette): содержит саму палитру в виде последовательности троек RGB:

  4. PLTE = [R₁G₁B₁ R₂G₂B₂ ... RₖGₖBₖ]

  5. Максимальный размер: 256 записей × 3 байта = 768 байт

  6. Блок tRNS (Transparency): Опциональный блок для определения прозрачности цветов палитры. Для каждого цвета может быть задано значение альфа-канала от 0 (полностью прозрачный) до 255 (полностью непрозрачный).