что такое кодирование и декодирование изображения

Кодирование и декодирование изображений Base64 с помощью Python

Допустим, вам нужно передать по сети бинарный графический файл.

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

Каким должно быть решение, чтобы избежать такой проблемы?

Ответ кроется в кодировке Base64. В этой статье я собираюсь показать, как мы можем использовать Python для кодирования и декодирования двоичного изображения.

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

Что такое кодирование Base64?

Прежде чем перейти к этому, давайте определим, что мы подразумеваем под Base64.

Base64 – это способ, с помощью которого 8-битные двоичные данные кодируются в формат, который можно представить в 7 битах. Для этого используются только символы A-Z, a-z, 0-9, + и / для представления данных. Символ = используется для данных прокладок. Например, при таком кодировании три 8-битных байта превращаются в четыре 7-битных байта.

Термин base 64 происходит от стандарта Multipurpose Internet Mail Extensions (MIME), который широко используется для HTTP и XML, и изначально был разработан для кодирования вложений электронной почты и их правильной передачи.

Для чего мы используем Base64?

Base64 очень важен для отображения двоичных данных, настолько, что позволяет представлять двоичные данные так, что они выглядят и ведут себя как обычный текст. Это делает более безопасным их хранение в базах данных, отправку по электронной почте или использование в текстовых форматах, таких как XML.

Base64 в основном используется для представления данных в формате ASCII.

Как мы уже говорили во введении к этой статье, без Base64 данные вообще не могут быть прочитаны.

Кодирование Base64

Кодирование Base64 – это процесс преобразования двоичных данных в набор символов, ограниченный 64 символами. Как мы уже говорили в первом разделе, это символы A-Z, a-z, 0-9, + и / (Вы посчитали их? Вы заметили, что в сумме они составляют 64?). Этот набор символов считается наиболее распространенным и известен как Base64 в MIME. Он использует A-Z, a-z, 0-9, + и / для первых 62 значений и + и / для последних двух значений.

Закодированные в Base64 данные в итоге оказываются больше исходных данных, поэтому, как мы уже говорили, на каждые 3 байта двоичных данных приходится как минимум 4 байта закодированных в Base64 данных. Это связано с тем, что вы сжимаете данные в меньший набор символов.

Вы когда-нибудь видели необработанный файл электронной почты, подобный тому, который показан ниже? Если да, то вы видели кодирование Base64 в действии.

Кодирование Base64 выполняется в несколько этапов:

Декодирование Base64

Декодирование Base64 противоположно кодированию Base64. Другими словами, это делается путем обратных действий, описанных в предыдущем пункте.

Таким образом, этапы декодирования Base64 можно описать следующим образом:

Кодирование изображения

Теперь перейдем к сути дела. В этом разделе я покажу вам, как мы можем легко закодировать изображение в Base64 с помощью Python. Для этого я собираюсь использовать следующий двоичный образ. (Имя файла изображения – deer.gif).

что такое кодирование и декодирование изображения. Смотреть фото что такое кодирование и декодирование изображения. Смотреть картинку что такое кодирование и декодирование изображения. Картинка про что такое кодирование и декодирование изображения. Фото что такое кодирование и декодирование изображения

Первое, что нам нужно сделать, чтобы использовать Base64 в Python, – это импортировать модуль Base64:

Для кодирования нашего изображения в Base64 нужно сделать следующее:

Если вы хотите увидеть результат процесса кодирования, введите следующее:

Декодирование изображения

Чтобы декодировать изображение с помощью Python, мы просто используем функцию base64.decodestring(s).

Таким образом, чтобы декодировать изображение, которое мы закодировали в предыдущем разделе, делаем следующее:

Собираем все вместе

Давайте соберем код, которая кодирует и декодирует изображение Base64.

Похожие записи

что такое кодирование и декодирование изображения. Смотреть фото что такое кодирование и декодирование изображения. Смотреть картинку что такое кодирование и декодирование изображения. Картинка про что такое кодирование и декодирование изображения. Фото что такое кодирование и декодирование изображения

Если вам нужно скопировать файл с помощью Python, но вы не знаете, как это сделать,…

что такое кодирование и декодирование изображения. Смотреть фото что такое кодирование и декодирование изображения. Смотреть картинку что такое кодирование и декодирование изображения. Картинка про что такое кодирование и декодирование изображения. Фото что такое кодирование и декодирование изображения

Иногда нам нужно преобразовать Excel или CSV в другой формат, в этот раз мне нужно…

что такое кодирование и декодирование изображения. Смотреть фото что такое кодирование и декодирование изображения. Смотреть картинку что такое кодирование и декодирование изображения. Картинка про что такое кодирование и декодирование изображения. Фото что такое кодирование и декодирование изображения

Источник

Кодирование для чайников, ч.1

Не являясь специалистом в обозначенной области я, тем не менее, прочитал много специализированной литературы для знакомства с предметом и прорываясь через тернии к звёздам набил, на начальных этапах, немало шишек. При всём изобилии информации мне не удалось найти простые статьи о кодировании как таковом, вне рамок специальной литературы (так сказать без формул и с картинками).

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

0. Начало

Давайте рассмотрим некоторые более подробно.

1.1 Речь, мимика, жесты

1.2 Чередующиеся сигналы

В примитивном виде кодирование чередующимися сигналами используется человечеством очень давно. В предыдущем разделе мы сказали про дым и огонь. Если между наблюдателем и источником огня ставить и убирать препятствие, то наблюдателю будет казаться, что он видит чередующиеся сигналы «включено/выключено». Меняя частоту таких включений мы можем выработать последовательность кодов, которая будет однозначно трактоваться принимающей стороной.

что такое кодирование и декодирование изображения. Смотреть фото что такое кодирование и декодирование изображения. Смотреть картинку что такое кодирование и декодирование изображения. Картинка про что такое кодирование и декодирование изображения. Фото что такое кодирование и декодирование изображения

1.3 Контекст

2. Кодирование текста

Текст в компьютере является частью 256 символов, для каждого отводится один байт и в качестве кода могут быть использованы значения от 0 до 255. Так как данные в ПК представлены в двоичной системе счисления, то один байт (в значении ноль) равен записи 00000000, а 255 как 11111111. Чтение такого представления числа происходит справа налево, то есть один будет записано как 00000001.

Итак, символов английского алфавита 26 для верхнего и 26 для нижнего регистра, 10 цифр. Так же есть знаки препинания и другие символы, но для экспериментов мы будем использовать только прописные буквы (верхний регистр) и пробел.

Тестовая фраза «ЕХАЛ ГРЕКА ЧЕРЕЗ РЕКУ ВИДИТ ГРЕКА В РЕЧКЕ РАК СУНУЛ ГРЕКА РУКУ В РЕКУ РАК ЗА РУКУ ГРЕКУ ЦАП».

что такое кодирование и декодирование изображения. Смотреть фото что такое кодирование и декодирование изображения. Смотреть картинку что такое кодирование и декодирование изображения. Картинка про что такое кодирование и декодирование изображения. Фото что такое кодирование и декодирование изображения

2.1 Блочное кодирование

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

Источник

Декодирование JPEG для чайников

[FF D8]

Вам когда-нибудь хотелось узнать как устроен jpg-файл? Сейчас разберемся! Прогревайте ваш любимый компилятор и hex-редактор, будем декодировать это:

что такое кодирование и декодирование изображения. Смотреть фото что такое кодирование и декодирование изображения. Смотреть картинку что такое кодирование и декодирование изображения. Картинка про что такое кодирование и декодирование изображения. Фото что такое кодирование и декодирование изображения

Специально взял рисунок поменьше. Это знакомый, но сильно пережатый favicon Гугла: что такое кодирование и декодирование изображения. Смотреть фото что такое кодирование и декодирование изображения. Смотреть картинку что такое кодирование и декодирование изображения. Картинка про что такое кодирование и декодирование изображения. Фото что такое кодирование и декодирование изображения

Последующее описание упрощено, и приведенная информация не полная, но зато потом будет легко понять спецификацию.

Даже не зная, как происходит кодирование, мы уже можем кое-что извлечь из файла.

[FF D8] — маркер начала. Он всегда находится в начале всех jpg-файлов.

Следом идут байты [FF FE]. Это маркер, означающий начало секции с комментарием. Следующие 2 байта [00 04] — длина секции (включая эти 2 байта). Значит в следующих двух [3A 29] — сам комментарий. Это коды символов «:» и «)», т.е. обычного смайлика. Вы можете увидеть его в первой строке правой части hex-редактора.

Немного теории

что такое кодирование и декодирование изображения. Смотреть фото что такое кодирование и декодирование изображения. Смотреть картинку что такое кодирование и декодирование изображения. Картинка про что такое кодирование и декодирование изображения. Фото что такое кодирование и декодирование изображения

Закодированные данные располагаются поочередно, небольшими частями:

что такое кодирование и декодирование изображения. Смотреть фото что такое кодирование и декодирование изображения. Смотреть картинку что такое кодирование и декодирование изображения. Картинка про что такое кодирование и декодирование изображения. Фото что такое кодирование и декодирование изображения

Каждый блок Yij, Cbij, Crij — это матрица коэффициентов ДКП (так же 8×8), закодированная кодами Хаффмана. В файле они располагаются в таком порядке: Y00Y10Y01Y11Cb00Cr00Y20.

Чтение файла

Файл поделен на секторы, предваряемые маркерами. Маркеры имеют длину 2 байта, причем первый байт [FF]. Почти все секторы хранят свою длину в следующих 2 байта после маркера. Для удобства подсветим маркеры:

что такое кодирование и декодирование изображения. Смотреть фото что такое кодирование и декодирование изображения. Смотреть картинку что такое кодирование и декодирование изображения. Картинка про что такое кодирование и декодирование изображения. Фото что такое кодирование и декодирование изображения

Маркер [FF DB]: DQT — таблица квантования

что такое кодирование и декодирование изображения. Смотреть фото что такое кодирование и декодирование изображения. Смотреть картинку что такое кодирование и декодирование изображения. Картинка про что такое кодирование и декодирование изображения. Фото что такое кодирование и декодирование изображения

Оставшимися 64-мя байтами нужно заполнить таблицу 8×8.

Приглядитесь, в каком порядке заполнены значения таблицы. Этот порядок называется zigzag order:

что такое кодирование и декодирование изображения. Смотреть фото что такое кодирование и декодирование изображения. Смотреть картинку что такое кодирование и декодирование изображения. Картинка про что такое кодирование и декодирование изображения. Фото что такое кодирование и декодирование изображения

Маркер [FF C0]: SOF0 — Baseline DCT

Этот маркер называется SOF0, и означает, что изображение закодировано базовым методом. Он очень распространен. Но в интернете не менее популярен знакомый вам progressive-метод, когда сначала загружается изображение с низким разрешением, а потом и нормальная картинка. Это позволяет понять что там изображено, не дожидаясь полной загрузки. Спецификация определяет еще несколько, как мне кажется, не очень распространенных методов.

что такое кодирование и декодирование изображения. Смотреть фото что такое кодирование и декодирование изображения. Смотреть картинку что такое кодирование и декодирование изображения. Картинка про что такое кодирование и декодирование изображения. Фото что такое кодирование и декодирование изображения

Находим Hmax=2 и Vmax=2. Канал i будет прорежен в Hmax/Hi раз по горизонтали и Vmax/Vi раз по вертикали.

Маркер [FF C4]: DHT (таблица Хаффмана)

Эта секция хранит коды и значения, полученные кодированием Хаффмана.

что такое кодирование и декодирование изображения. Смотреть фото что такое кодирование и декодирование изображения. Смотреть картинку что такое кодирование и декодирование изображения. Картинка про что такое кодирование и декодирование изображения. Фото что такое кодирование и декодирование изображения

Следующие 16 значений:

Количество кодов означает количество кодов такой длины. Обратите внимание, что секция хранит только длины кодов, а не сами коды. Мы должны найти коды сами. Итак, у нас есть один код длины 1 и один — длины 2. Итого 2 кода, больше кодов в этой таблице нет.
С каждым кодом сопоставлено значение, в файле они перечислены следом. Значения однобайтовые, поэтому читаем 2 байта:

Далее в файле можно видеть еще 3 маркера [FF C4], я пропущу разбор соответствующих секций, он аналогичен вышеприведенному.

Построение дерева кодов Хаффмана

Мы должны построить бинарное дерево по таблице, которую мы получили в секции DHT. А уже по этому дереву мы узнаем каждый код. Значения добавляем в том порядке, в каком указаны в таблице. Алгоритм прост: в каком бы узле мы ни находились, всегда пытаемся добавить значение в левую ветвь. А если она занята, то в правую. А если и там нет места, то возвращаемся на уровень выше, и пробуем оттуда. Остановиться нужно на уровне равном длине кода. Левым ветвям соответствует значение 0, правым — 1.

Деревья для всех таблиц этого примера:

что такое кодирование и декодирование изображения. Смотреть фото что такое кодирование и декодирование изображения. Смотреть картинку что такое кодирование и декодирование изображения. Картинка про что такое кодирование и декодирование изображения. Фото что такое кодирование и декодирование изображения

В кружках — значения кодов, под кружками — сами коды (поясню, что мы получили их, пройдя путь от вершины до каждого узла). Именно такими кодами закодировано само содержимое рисунка.

Маркер [FF DA]: SOS (Start of Scan)

Байт [DA] в маркере означает — «ДА! Наконец-то то мы перешли к финальной секции!». Однако секция символично называется SOS.

что такое кодирование и декодирование изображения. Смотреть фото что такое кодирование и декодирование изображения. Смотреть картинку что такое кодирование и декодирование изображения. Картинка про что такое кодирование и декодирование изображения. Фото что такое кодирование и декодирование изображения

[00], [3F], [00] — Start of spectral or predictor selection, End of spectral selection, Successive approximation bit position. Эти значения используются только для прогрессивного режима, что выходит за рамки статьи.

Отсюда и до конца (маркера [FF D9]) закодированные данные.

Закодированные данные

Последующие значения нужно рассматривать как битовый поток. Первых 33 бит будет достаточно, чтобы построить первую таблицу коэффициентов:

что такое кодирование и декодирование изображения. Смотреть фото что такое кодирование и декодирование изображения. Смотреть картинку что такое кодирование и декодирование изображения. Картинка про что такое кодирование и декодирование изображения. Фото что такое кодирование и декодирование изображения

Нахождение DC-коэффициента

1) Читаем последовательность битов (если встретим 2 байта [FF 00], то это не маркер, а просто байт [FF]). После каждого бита сдвигаемся по дереву Хаффмана (с соответствующим идентификатором) по ветви 0 или 1, в зависимости от прочитанного бита. Останавливаемся, если оказались в конечном узле.

что такое кодирование и декодирование изображения. Смотреть фото что такое кодирование и декодирование изображения. Смотреть картинку что такое кодирование и декодирование изображения. Картинка про что такое кодирование и декодирование изображения. Фото что такое кодирование и декодирование изображения

2) Берем значение узла. Если оно равно 0, то коэффициент равен 0, записываем в таблицу и переходим к чтению других коэффициентов. В нашем случае — 02. Это значение — длина коэффициента в битах. Т. е. читаем следующие 2 бита, это и будет коэффициент:

что такое кодирование и декодирование изображения. Смотреть фото что такое кодирование и декодирование изображения. Смотреть картинку что такое кодирование и декодирование изображения. Картинка про что такое кодирование и декодирование изображения. Фото что такое кодирование и декодирование изображения

Нахождение AC-коэффициентов

1) Аналогичен п. 1, нахождения DC коэффициента. Продолжаем читать последовательность:

что такое кодирование и декодирование изображения. Смотреть фото что такое кодирование и декодирование изображения. Смотреть картинку что такое кодирование и декодирование изображения. Картинка про что такое кодирование и декодирование изображения. Фото что такое кодирование и декодирование изображения

2) Берем значение узла. Если оно равно 0, это означает, что оставшиеся значения матрицы нужно заполнить нулями. Дальше закодирована уже следующая матрица. В нашем случае значение узла: 0x31.

что такое кодирование и декодирование изображения. Смотреть фото что такое кодирование и декодирование изображения. Смотреть картинку что такое кодирование и декодирование изображения. Картинка про что такое кодирование и декодирование изображения. Фото что такое кодирование и декодирование изображения

Читать AC-коэффициенты нужно пока не наткнемся на нулевое значение кода, либо пока не заполнится матрица.
В нашем случае мы получим:

что такое кодирование и декодирование изображения. Смотреть фото что такое кодирование и декодирование изображения. Смотреть картинку что такое кодирование и декодирование изображения. Картинка про что такое кодирование и декодирование изображения. Фото что такое кодирование и декодирование изображения

Вы заметили, что значения заполнены в том же зигзагообразном порядке? Причина использования такого порядка простая — так как чем больше значения v и u, тем меньшей значимостью обладает коэффициент Svu в дискретно-косинусном преобразовании. Поэтому, при высоких степенях сжатия малозначащие коэффициенты обнуляют, тем самым уменьшая размер файла.

Аналогично получаем еще 3 матрицы Y-канала…

Но! Закодированные DC-коэффициенты — это не сами DC-коэффициенты, а их разности между коэффициентами предыдущей таблицы (того же канала)! Нужно поправить матрицы:

Теперь порядок. Это правило действует до конца файла.

… и по матрице для Cb и Cr:

Вычисления

Квантование

Вы помните, что матрица проходит этап квантования? Элементы матрицы нужно почленно перемножить с элементами матрицы квантования. Осталось выбрать нужную. Сначала мы просканировали первый канал. Он использует матрицу квантования 0 (у нас она первая из двух). Итак, после перемножения получаем 4 матрицы Y-канала:

… и по матрице для Cb и Cr.

Обратное дискретно-косинусное преобразование

что такое кодирование и декодирование изображения. Смотреть фото что такое кодирование и декодирование изображения. Смотреть картинку что такое кодирование и декодирование изображения. Картинка про что такое кодирование и декодирование изображения. Фото что такое кодирование и декодирование изображения

Формула не должна доставить сложностей. Svu — наша полученная матрица коэффициентов. u — столбец, v — строка. Cx = 1/√2 для x = 0, а в остальных случаях = 1. syx — непосредственно значения каналов.

Приведу результат вычисления только первой матрицы канала Y (после обязательного округления):

Ко всем полученным значениям нужно прибавить по 128, а затем ограничить их диапазон от 0 до 255:

Например: 138 → 266 → 255, 92 → 220 → 220 и т. д.

YCbCr в RGB

4 матрицы Y, и по одной Cb и Cr, так как мы прореживали каналы и 4 пикселям Y соответствует по одному Cb и Cr. Поэтому вычислять так: YCbCrToRGB(Y[y,x], Cb[y/2, x/2], Cr[y/2, x/2]):

Вот полученные таблицы для каналов R, G, B для левого верхнего квадрата 8×8 нашего примера:

Конец

Вообще я не специалист по JPEG, поэтому вряд ли смогу ответить на все вопросы. Просто когда я писал свой декодер, мне часто приходилось сталкиваться с различными непонятными проблемами. И когда изображение выводилось некорректно, я не знал где допустил ошибку. Может неправильно проинтерпретировал биты, а может неправильно использовал ДКП. Очень не хватало пошагового примера, поэтому, надеюсь, эта статья поможет при написании декодера. Думаю, она покрывает описание базового метода, но все-равно нельзя обойтись только ей. Предлагаю вам ссылки, которые помогли мне:

Источник

Что такое кодирование и декодирование изображения

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

Под видами компьютерной графики подразумевается способ хранения изображения на плоскости монитора.

Машинная графика властно вторгается в бизнес, медицину, рекламу, индустрию развлечений. Применение во время деловых совещаний демонстрационных слайдов, подготовленных методами машинной графики и другими средствам автоматизации конторского труда, считается нормой. В медицине становится обычным получение трехмерных изображений внутренних органов по данным компьютерных томографов. В наши дни телевидение и другие рекламные предприятия часто прибегают к услугам машинной графики и компьютерной мультипликации. Использование машинной графики в индустрии развлечений охватывает такие несхожие области как видеоигры и полнометражные художественные фильмы.

История компьютерной графики

Возникла идея поручить графическую обработку самой машине. Первоначально программисты научились получать рисунки в режиме символьной печати. На бумажных листах с помощью символов (звездочек, точек, крестиков, букв) по­лучались рисунки, напоминающие мозаику. Так печатались графики функций, изображения течений жидкостей и газов, электрических и магнитных полей. С помощью символьной печати программисты умудря­лись получать даже художественные изображения (Рис. 1). В редком компьютерном центре стены не украшались распечатками с портретами Эйнштейна, репродукциями Джоконды и другой машинной живописью.

что такое кодирование и декодирование изображения. Смотреть фото что такое кодирование и декодирование изображения. Смотреть картинку что такое кодирование и декодирование изображения. Картинка про что такое кодирование и декодирование изображения. Фото что такое кодирование и декодирование изображения

Рис. 1 Символьная печать.

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

Настоящая революция в компьютерной графике про­изошла с появлением графических дисплеев. На экране гра­фического дисплея стало возможным получать рисунки, чер­тежи в таком же виде, как на бумаге с помощью каранда­шей, красок, чертежных инструментов Рисунок из памяти компьютера может быть выведен не только на экран, но и на бумагу с помощью принтера. Су­ществуют принтеры цветной печати, дающие качество ри­сунков на уровне фотографии.

Представление графической информации в компьютере

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

Растровое изображение представляет собой совокупность точек, используемых для его отображения на экране монитора.

Объём растрового изображения определяется как произведение количества точек и информационного объёма одной точки, который зависит от количества возможных цветов. Для черно-белого изображения информационный объём одной точки равен 1 биту, так как точка может быть либо чёрной, либо белой, что можно закодировать одной из двух цифр — 0 или 1.

что такое кодирование и декодирование изображения. Смотреть фото что такое кодирование и декодирование изображения. Смотреть картинку что такое кодирование и декодирование изображения. Картинка про что такое кодирование и декодирование изображения. Фото что такое кодирование и декодирование изображения

Информационный объём растрового изображения (V) определяется как произведение числа входящих в изображение точек (N) на информационный объём одной точки (q), который зависит от количества возможных цветов, т. е. V=N ⋅ q.

При чёрно-белом изображении q = 1 бит (например, 1 — точка подсвечивается и 0 — точка не подсвечивается). Поэтому для хранения чёрно-белого (без оттенков) изображения размером 100×100 точек требуется 10000 бит.

Если между чёрным и белым цветами имеется ещё шесть оттенков серого (всего 8), то информационный объём точки равен 3 бита (log28 = 3).

Информационный объём такого изображения увеличивается в три раза: V = 30000бит.

Рассмотрим, сколько потребуется бит для отображения цветной точки: для 8 цветов необходимо 3 бита; для 16 цветов — 4 бита; для 256 цветов — 8 битов (1 байт).

что такое кодирование и декодирование изображения. Смотреть фото что такое кодирование и декодирование изображения. Смотреть картинку что такое кодирование и декодирование изображения. Картинка про что такое кодирование и декодирование изображения. Фото что такое кодирование и декодирование изображения

Разные цвета и их оттенки получаются за счёт наличия или отсутствия трёх основных цветов (красного, синего, зеленого) и степени их яркости. Каждая точка на экране кодируется с помощью 4 битов.

Цветные изображения могут отображаться в различных режимах, соответственно изменяется и информационный объём точки (Рис. 4).

что такое кодирование и декодирование изображения. Смотреть фото что такое кодирование и декодирование изображения. Смотреть картинку что такое кодирование и декодирование изображения. Картинка про что такое кодирование и декодирование изображения. Фото что такое кодирование и декодирование изображения

Описание цвета пикселя является кодом цвета.

Количество бит, отводимое на каждый пиксель для представления цвета, называют глубиной цвета (англ. color depth). От количества выделяемых бит зависит разнообразие палитры.

Наиболее распространенными значениями глубины цвета являются 8, 16, 24 или 32 бита.

Чем больше глубина цвета, тем больше объем графического файла.

Для хранения растрового изображения размером 32×32 пикселя отвели 512 байтов памяти.

Каково максимально возможное число цветов в палитре изображения?

Цвет на Web-страницах кодируется в виде RGB-кода в шестнадцатеричной системе: #RRGGBB, где RR, GGи BB — яркости красного, зеленого и синего, записанные в виде двух шестнадцатеричных цифр; это позволяет закодировать 256 значений от 0 (0016) до 255 (FF16) для каждой составляющей.

что такое кодирование и декодирование изображения. Смотреть фото что такое кодирование и декодирование изображения. Смотреть картинку что такое кодирование и декодирование изображения. Картинка про что такое кодирование и декодирование изображения. Фото что такое кодирование и декодирование изображения

При обозначении цветов в HTML-документах вначале ставят знак номера #.

В HTML: #FF0000 —интенсивно красный цвет, #00FF00 — зелёный цвет, #0000FF — синий цвет. Отсутствие цветов (#000000) даёт чёрный цвет, а самое интенсивное сочетание всех трёх каналов (#FFFFFF) даёт белый цвет.

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

Чтобы получить светлый оттенок какого-то «чистого» цвета, нужно одинаково увеличить нулевые составляющие; например, чтобы получить светло-красный цвет, нужно сделать максимальной красную составляющую и, кроме этого, одинаково увеличить остальные — синюю и зелёную: #FF9999 (сравните с красным: #FF0000).

Чтобы получить тёмный оттенок чистого цвета, нужно одинаково уменьшить все составляющие, например, #660066 — это тёмно-фиолетовый цвет (сравните с фиолетовым #FF00FF).

Заметим, что если старший бит в коде (первая, третья или пятая цифра) находится в диапазоне от 0 до 3, то можно считать, что эта цветовая компонента отсутствует в цвете, то есть #0F0F0F — это чёрный цвет.

Также следует отметить, что равное или почти равное сочетание цветовых компонент обозначает серый цвет разной интенсивности.

Векторное изображение представляет собой совокупность графических примитивов. Каждый примитив состоит из элементарных отрезков кривых, параметры которых (координаты узловых точек, радиус кривизны и пр.) описываются математическими формулами.

Для каждой линии указываются её тип (сплошная, пунктирная, штрих-пунктирная), толщина и цвет, а замкнутые фигуры дополнительно характеризуются типом заливки.

Рассмотрим, например, такой графический примитив, как окружность радиуса r. Для её построения необходимо и достаточно следующих исходных данных:

— координаты центра окружности;

— значение радиуса r;

цвет заполнения (если окружность не прозрачная);

цвет и толщина контура (в случае наличия контура).

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

Кодирование графической информации

Графическую информацию можно представлять в двух формах: аналоговой и цифровой.

Живописное полотно, цвет которого изменяется непрерывно — это пример аналогового представления.

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

Путем разбиения графического изображения (дискретизации) происходит преобразование графической информации из аналоговой формы в цифровую. Этот процесс называется «кодирование», поскольку каждому элементу назначается конкретное значение в форме двоичного кода. При кодировании изображения происходит его пространственная дискретизация. Ее можно сравнить с построением изображения из большого количества цветных фрагментов (метод мозаики).

Графическая информация в аналоговой форме представляется в виде рисунка, картинки, а также слайда на фотопленке и полученную по нему аналоговую фотографию.

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

Современная компьютерная графика

Научная графика. Это направление появилось самым первым. Назначение — визуализация (т. е. наглядное изображение) объектов науч­ных исследований, графическая обработка результатов рас­четов, проведение вычислительных экспериментов с нагляд­ным представлением их результатов (Рис. 6).

что такое кодирование и декодирование изображения. Смотреть фото что такое кодирование и декодирование изображения. Смотреть картинку что такое кодирование и декодирование изображения. Картинка про что такое кодирование и декодирование изображения. Фото что такое кодирование и декодирование изображения

Рис. 6 График комплексной функции в четырехмерном (4D) пространстве.

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

Плановые показатели, отчетная докумен­тация, статистические сводки — вот объекты, для которых с помощью деловой графики создаются иллюстративные ма­териалы (Рис. 7).

что такое кодирование и декодирование изображения. Смотреть фото что такое кодирование и декодирование изображения. Смотреть картинку что такое кодирование и декодирование изображения. Картинка про что такое кодирование и декодирование изображения. Фото что такое кодирование и декодирование изображения

Рис. 7 Графики, круговые и столбчатые диаграммы.

Программные средства деловой графики обычно включа­ются в состав табличных процессоров (электронных таблиц).

Плановые показатели, отчетная докумен­тация, статистические сводки — вот объекты, для которых с помощью деловой графики создаются иллюстративные ма­териалы (Рис. 7).

Конструкторская графика. Она используется в работе инженеров-конструкторов, изобретателей новой техники. Этот вид компьютерной гра­фики является обязательным элементом систем автомати­зации проектирования (САПР). Графика в САПР исполь­зуется для подготовки технических чертежей проектируе­мых устройств (Рис. 8).

что такое кодирование и декодирование изображения. Смотреть фото что такое кодирование и декодирование изображения. Смотреть картинку что такое кодирование и декодирование изображения. Картинка про что такое кодирование и декодирование изображения. Фото что такое кодирование и декодирование изображения

Рис. 8. Графика в САПР.

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

Иллюстративная графика. Программные средства иллюстративной графики позволя­ют человеку использовать компьютер для произвольного ри­сования, черчения подобно тому, как он это делает на бумаге с помощью карандашей, кисточек, красок, циркулей, лине­ек и других инструментов. Пакеты иллюстративной графики не имеют какой-то производственной направленности. По­этому они относятся к прикладному программному обеспече­нию общего назначения.

Простейшие программные средства иллюстративной гра­фики называются графическими редакторами.

Художественная и рекламная графика. Это сравнительно новая отрасль, но уже ставшая попу­лярной во многом благодаря телевидению. С помощью компьютера создаются рекламные ролики, мультфильмы, компьютерные игры, видеоуроки, видеопрезентации и мно­гое другое.

Графические пакеты для этих целей требуют больших ре­сурсов компьютера по быстродействию и памяти. Отличи­тельной особенностью этого класса графических пакетов яв­ляется возможность создания реалистических (очень близ­ких к естественным) изображений, а также «движущихся картинок» (рис. 9).

Для создания реалистических изображений в графиче­ских пакетах этой категории используется сложный матема­тический аппарат.

что такое кодирование и декодирование изображения. Смотреть фото что такое кодирование и декодирование изображения. Смотреть картинку что такое кодирование и декодирование изображения. Картинка про что такое кодирование и декодирование изображения. Фото что такое кодирование и декодирование изображения

что такое кодирование и декодирование изображения. Смотреть фото что такое кодирование и декодирование изображения. Смотреть картинку что такое кодирование и декодирование изображения. Картинка про что такое кодирование и декодирование изображения. Фото что такое кодирование и декодирование изображения

Рис. 9 Художественная графика.

Компьютерная анимация. Получение движущихся изображений на дисплее ЭВМ на­зывается компьютерной анимацией. Слово «анимация» означает «оживление».

В недавнем прошлом художники-мультипликаторы со­здавали свои фильмы вручную. Чтобы передать движение, им приходилось делать тысячи рисунков, отличающихся друг от друга небольшими изменениями. Затем эти рисунки переснимались на кинопленку. Система компьютерной ани­мации берет значительную часть рутинной работы на себя. Например, художник может создать на экране рисунки лишь начального и конечного состояний движущегося объ­екта, а все промежуточные состояния рассчитает и изобразит компьютер. Такая работа также связана с расчетами, опира­ющимися на математическое описание данного типа движе­ния. Полученные рисунки, выводимые последовательно на экран с определенной частотой, создают иллюзию движения.

Объекты называются самоподобными когда увеличенные части объекта походят на сам объект. Небольшая часть фрактала содержит информацию обо всем фрактале.

что такое кодирование и декодирование изображения. Смотреть фото что такое кодирование и декодирование изображения. Смотреть картинку что такое кодирование и декодирование изображения. Картинка про что такое кодирование и декодирование изображения. Фото что такое кодирование и декодирование изображения

Рис.10 Фрактальная фигура.

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

Объекты называются самоподобными, когда увеличенные части объекта походят на сам объект. Небольшая часть фрактала содержит информацию обо всем фрактале.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *