Теория:
Когда мы смотрим на экран, то видим плавные линии и миллионы цветов. Но для компьютера любая картинка — это просто строгая таблица (сетка) и набор чисел.
В компьютерной графике есть два основных подхода: векторный (формулы и фигуры) и растровый.Чем больше таких клеточек, тем чётче картинка.
Каждый пиксель хранит в себе информацию о своем цвете в виде числа (кода).
В компьютерной графике есть два основных подхода: векторный (формулы и фигуры) и растровый.
Растровое изображение — это как лист бумаги в клеточку. Только клеточки эти очень маленькие, и каждая из них называется Pixel — Picture Element.
Каждый пиксель хранит в себе информацию о своем цвете в виде числа (кода).
Параметры рстрового изображения
\(1\). Разрешение (размер изображения)
Это количество пикселей по ширине и высоте. Обозначается обычно как \(W×H\) (Width \(×\) Height).
Это количество пикселей по ширине и высоте. Обозначается обычно как \(W×H\) (Width \(×\) Height).
Пример: разрешение \(1920×1080\) (Full HD) означает, что в ширину у нас \(1920\) пикселей, а в высоту — \(1080\).
Обрати внимание!
Чем больше пикселей, тем больше места нужно для их хранения. Это прямая зависимость.
\(2\). Глубина цвета
Каждый пиксель — цветной. Вопрос: сколько памяти нужно выделить на один пиксель, чтобы закодировать его цвет?
Количество цветов в палитре (\(N\)) и количество бит на один пиксель (\(i\)) связаны главной формулой кодирования:
Количество цветов в палитре (\(N\)) и количество бит на один пиксель (\(i\)) связаны главной формулой кодирования:
где:
\(N\) — количество цветов в палитре;
\(i\) — глубина цвета (количество бит на один пиксель).
\(N\) — количество цветов в палитре;
\(i\) — глубина цвета (количество бит на один пиксель).
Примеры
1. Черно-белое изображение (без градаций серого). Нам нужно всего \(2\) цвета: черный и белый.
\(N = 2\)
По формуле → \(i = 1\) бит.
Вывод: один пиксель в такой картинке занимает всего \(1\) бит.
\(N = 2\)
По формуле → \(i = 1\) бит.
Вывод: один пиксель в такой картинке занимает всего \(1\) бит.
2. Изображение в стиле старых игр (\(256\) цветов).
\(N = 256\)
→ \(i = 8\) бит = \(1\) байт.
Вывод: один пиксель занимает \(1\) байт.
\(N = 256\)
→ \(i = 8\) бит = \(1\) байт.
Вывод: один пиксель занимает \(1\) байт.
3. True Color (Реалистичное фото). Современные мониторы используют модель RGB (Red, Green, Blue). Каждый из трёх цветов (красный, зеленый, синий) может иметь \(256\) градаций яркости ( \(=\) \(256\)).
Чтобы закодировать один канал (например, красный), нужно \(8\) бит.
Всего каналов три: \(8\) бит (R) \(+\) \(8\) бит (G) \(+\) \(8\) бит (B) \(=\) \(24\) бита на пиксель.
\(i = 24\) бита.
цветов. Это и есть True Color.
Чтобы закодировать один канал (например, красный), нужно \(8\) бит.
Всего каналов три: \(8\) бит (R) \(+\) \(8\) бит (G) \(+\) \(8\) бит (B) \(=\) \(24\) бита на пиксель.
\(i = 24\) бита.
цветов. Это и есть True Color.
\(3\). Палитра
Иногда, чтобы сэкономить место, мы не храним полную информацию о цвете каждого пикселя (24 бита), а создаем таблицу цветов — палитру. В начале файла сохраняется палитра (список цветов, которые встречаются в картинке, например, 256 штук). А каждый пиксель хранит не сам цвет, а номер цвета из этой палитры (индекс). Это экономит место, если картинка не очень красочная, но для фотографий природы палитра уже не подходит.
Теперь, когда мы знаем разрешение и глубину цвета, мы можем легко посчитать, сколько весить наша картинка в памяти компьютера.
, где:
\(I\) — информационный объем изображения (в битах);
\(W\) — ширина изображения в пикселях;
\(H\) — высота изображения в пикселях;
\(i\) — глубина цвета (бит на пиксель).
\(I\) — информационный объем изображения (в битах);
\(W\) — ширина изображения в пикселях;
\(H\) — высота изображения в пикселях;
\(i\) — глубина цвета (бит на пиксель).
Задача
Для хранения изображения размером \(128×128\) пикселей выделено \(4\) КБайта памяти. Какое максимальное количество цветов можно использовать в палитре?
Решение
1. Переведём выделенный объём в биты (чтобы было удобно делить на пиксели).
\(4\) КБ \(=\) \(4 * 1024 = 4096\) байт.
\(4096 * 8 = 32768\) бит.
2. Найдём общее количество пикселей: \(128 * 128 = 16384\) пикселя.
3. Найдём, сколько бит памяти приходится на один пиксель (глубину цвета \(i\)):
\( i = 32768 / 16384 = 2 \) бита.
4. По формуле находим количество цветов .
Ответ: можно использовать максимум \(4\) цвета.