Сколько цветов используется для создания изображения, если один пиксель занимает 4 бита
Обновлено: 21.11.2024
В школе или на уроке рисования вы могли смешивать разные цвета красок или красителей, чтобы получить новые цвета. В живописи обычно используют красный, желтый и синий как три «основных» цвета, которые можно смешивать, чтобы получить гораздо больше цветов. Смешивание красного и синего дает фиолетовый, красного и желтого — оранжевый и так далее. Смешивая красный, желтый и синий, можно получить много новых цветов.
Для печати принтеры обычно используют три основных цвета, немного отличающихся друг от друга: голубой, пурпурный и желтый (CMY). Все цвета на печатном документе были получены путем смешивания этих основных цветов.
Оба этих вида смешивания называются "вычитающим смешиванием", потому что они начинаются с белого холста или бумаги и "вычитают" из него цвет. Интерактив ниже позволяет вам поэкспериментировать с CMY, если вы с ним не знакомы или просто любите смешивать цвета.
Смеситель цветов CMY — используется принтерами
Экраны компьютеров и связанные с ними устройства также основаны на смешении трех цветов, за исключением того, что им нужен другой набор основных цветов, поскольку они являются аддитивными, начиная с черного экрана и добавляя к нему цвет. Для аддитивного цвета на компьютерах используются красный, зеленый и синий цвета (RGB). Каждый пиксель на экране обычно состоит из трех крошечных «огонеков»; один красный, один зеленый и один синий. Увеличивая и уменьшая количество света, исходящего от каждого из этих трех, можно получить все различные цвета. Следующий интерактив позволяет вам поиграть с RGB.
Смеситель цветов RGB — используется экранами
Посмотрите, какие цвета можно создать с помощью интерактивной RGB-подсветки. Можно ли сделать черный, белый, оттенки серого, желтый, оранжевый и фиолетовый?
Советы по спойлеру выше!
Наличие всех ползунков в крайних положениях приведет к получению черно-белого изображения, а если все они имеют одинаковое значение, но между ними, оно будет серым (т. е. между черным и белым).
Желтый — это не то, что вы могли бы ожидать: он состоит из красного и зеленого, без синего.
Существует очень веская причина, по которой мы смешиваем три основных цвета, чтобы определить цвет пикселя. В человеческом глазу миллионы датчиков света, и те из них, которые определяют цвет, называются «колбочками». Существует три различных типа колбочек, которые обнаруживают красный, синий и зеленый свет соответственно. Цвета воспринимаются по количеству красного, синего и зеленого света в них. Пиксели экрана компьютера используют это преимущество, испуская количество красного, синего и зеленого света, которое будет восприниматься вашими глазами как желаемый цвет. Поэтому, когда вы видите «фиолетовый», это на самом деле стимулируются красные и синие колбочки в ваших глазах, и ваш мозг преобразует это в воспринимаемый цвет. Ученые все еще выясняют, как именно мы воспринимаем цвет, но представления, используемые на компьютерах, кажутся достаточно хорошими, чтобы создать впечатление, будто мы смотрим на реальные изображения.
Дополнительную информацию о дисплеях RGB см. в разделе RGB в Википедии; дополнительную информацию о восприятии трех цветов глазом см. в статье «Конусная ячейка и трихромазия» в Википедии.
Описание цвета цифрами
Поскольку цвет просто состоит из количества основных цветов (красного, зеленого и синего), можно использовать три числа, чтобы указать, сколько каждого из этих основных цветов необходимо для создания общего цвета.
Избавьтесь от пиксельного жаргона
Слово "пиксель" является сокращением от "элемент изображения". На экранах компьютеров и принтерах изображение почти всегда отображается с помощью сетки пикселей, каждый из которых настроен на необходимый цвет. Размер пикселя обычно составляет доли миллиметра, а изображения могут состоять из миллионов пикселей (один мегапиксель — это миллион пикселей), поэтому отдельные пиксели обычно не видны. Фотографии обычно имеют разрешение в несколько мегапикселей.
Нередко компьютерные экраны содержат миллионы пикселей, и компьютер должен представлять цвет для каждого из этих пикселей.
Обычно используемая схема заключается в использовании чисел в диапазоне от 0 до 255. Эти числа сообщают компьютеру, насколько полно включить каждый из основных цветов в отдельном пикселе. Если красный был установлен на 0, это означает, что красный «свет» полностью выключен. Если бы красный "свет" был установлен на 255, это означало бы, что "свет" был полностью включен.
С 256 возможными значениями для каждого из трех основных цветов (не забудьте посчитать 0!), это дает 256 x 256 x 256 = 16 777 216 возможных цветов — больше, чем может обнаружить человеческий глаз!
Что особенного в 255? Вызов
Вспомните раздел о двоичных числах. Что особенного в числе 255, которое является максимальным значением цвета?
Мы рассмотрим ответ позже в этом разделе, если вы все еще не уверены!
Следующий интерактив позволяет увеличить изображение, чтобы увидеть пиксели, которые используются для его представления. Каждый пиксель представляет собой квадрат сплошного цвета, и компьютер должен хранить цвет для каждого пикселя. Если вы увеличите масштаб достаточно далеко, интерактив покажет вам красно-зелено-синие значения для каждого пикселя. Вы можете выбрать пиксель и установить значения на ползунке выше — он должен получиться того же цвета, что и пиксель.
Средство просмотра пикселей
Здесь приведено еще одно упражнение, позволяющее увидеть взаимосвязь между битовыми шаблонами и цветными изображениями.
Представление цвета битами
Следующее, на что нам нужно обратить внимание, это то, как биты используются для представления каждого цвета в высококачественном изображении. Во-первых, сколько бит нам нужно? Во-вторых, как нам определить значения каждого из этих битов? В этом разделе мы рассмотрим эти проблемы.
Сколько бит нам понадобится для каждого цвета изображения?
С 256 различными возможными значениями количества каждого основного цвета это означает, что для представления числа потребуется 8 бит.
Наименьшее число, которое может быть представлено с помощью 8 бит, – это 00000000, то есть 0. А самое большое число, которое может быть представлено с помощью 8 бит, – 11111111, что равно 255.
Поскольку существует три основных цвета, каждому из которых потребуется 8 бит для представления каждого из его 256 различных возможных значений, всего нам нужно 24 бита для представления цвета.
Итак, сколько всего цветов в 24-битном формате? Мы знаем, что каждый цвет может принимать 256 возможных значений, поэтому самый простой способ вычислить это:
Это то же самое, что и .
Поскольку требуется 24 бита, такое представление называется 24-битным цветом. 24-битный цвет иногда упоминается в настройках как «истинный цвет» (потому что он более точен, чем может видеть человеческий глаз). В системах Apple это называется «Миллионы цветов».
Как мы используем биты для представления цвета?
Логичный способ — использовать 3 двоичных числа, представляющих количество красного, зеленого и синего в пикселе. Для этого преобразуйте необходимое количество каждого основного цвета в 8-битное двоичное число, а затем поместите 3 двоичных числа рядом, чтобы получить 24-битное число.
Поскольку согласованность важна для того, чтобы компьютер мог понять битовый шаблон, мы обычно придерживаемся соглашения о том, что сначала должно быть указано двоичное число для красного цвета, затем зеленого и, наконец, синего. Единственная причина, по которой мы ставим красный цвет первым, заключается в том, что это соглашение используется большинством систем. Если бы все согласились, что зеленый должен быть первым, то он был бы первым.
Например, предположим, что у вас есть цвет, красный = 145, зеленый = 50 и синий = 123, который вы хотите представить с помощью битов. Если вы поместите эти значения в интерактив, вы получите цвет ниже.
Начните с преобразования каждого из трех чисел в двоичный формат, используя для каждого 8 бит.
Вы должны получить: - красный = 10010001, - зеленый = 00110010, - синий = 01111011.
Объединение этих значений дает 100100010011001001111011, что является битовым представлением цвета выше.
Кроме того, все ведущие и конечные 0 в каждой части сохраняются — без них число было бы короче. Если бы было 256 различных возможных значений для каждого основного цвета, то окончательное представление должно было бы иметь длину 24 бита.
Монохроматические изображения Curiosity
"Черно-белые" изображения обычно содержат более двух цветов; обычно 256 оттенков серого, представленные 8 битами.
Помните, что оттенки серого можно получить, используя равное количество каждого из трех основных цветов, например красный = 105, зеленый = 105 и синий = 105.
Поэтому для монохроматического изображения мы можем просто использовать представление, представляющее собой одно двоичное число от 0 до 255, которое сообщает нам значение, которое должно быть установлено для всех трех основных цветов.
Компьютер никогда не будет преобразовывать число в десятичное, так как он работает с двоичным числом напрямую. Большая часть процесса, который принимает биты и создает правильные пиксели, обычно выполняется графической картой или принтером. Мы только начали с десятичной дроби, потому что ее легче понять людям. Главное в знании этого представления — понять компромисс между точностью цветопередачи (которая в идеале должна быть за пределами человеческого восприятия) и объемом необходимой памяти (биты) (которой должно быть как можно меньше). .
Шестнадцатеричные коды цветов Curiosity
Если вы еще этого не сделали, прочтите подраздел о шестнадцатеричном формате в разделе чисел, иначе этот раздел может не иметь смысла!
При написании HTML-кода часто требуется указывать цвета для текста, фона и т. д. Один из способов сделать это — указать название цвета, например, «красный», «синий», «фиолетовый» или «золотой». Для некоторых целей это нормально.
Этот формат "шестнадцатеричный триплет" используется на страницах HTML для указания цветов для таких вещей, как фон страницы, текст и цвет ссылок. Он также используется в CSS, SVG и других приложениях.
В предыдущем примере с 24-битным цветом 24-битный шаблон был 100100010011001001111011 .
Это можно разбить на группы по 4 бита: 1001 0001 0011 0010 0111 1011 .
А теперь каждую из этих групп из 4 бит необходимо представить шестнадцатеричной цифрой.
- 1001 -> 9
- 0001 -> 1
- 0011 -> 3
- 0010 -> 2
- 0111 -> 7
- 1011 -> Б
Понимание того, как получаются эти шестнадцатеричные коды цветов, также позволяет вам немного изменить их, не обращаясь к таблице цветов, когда цвет не совсем тот, который вам нужен. Помните, что в 24-битном цветовом коде первые 8 бит определяют количество красного (так что это первые 2 цифры шестнадцатеричного кода), следующие 8 бит определяют количество зеленого (следующие 2 цифры шестнадцатеричного кода). ), а последние 8 бит определяют количество синего (последние 2 цифры шестнадцатеричного кода). Чтобы увеличить количество любого из этих цветов, вы можете изменить соответствующие шестнадцатеричные символы.
Эту HTML-страницу можно использовать для экспериментов с шестнадцатеричными цветами. Просто введите цвет в поле ниже:
Изображения могут быть представлены несколькими способами. Наиболее распространенным является сетка из маленьких квадратов, называемых пикселями. В очень простом изображении, которое было только черно-белым, мы могли представить каждый пиксель как представленный 0 (черный) или 1 (белый). Таким образом, это изображение:
Можно хранить как двоичную строку из 36 бит: 111111101101111111101101100001111111. Чтобы успешно нарисовать изображение из этого шаблона, нам нужно знать, как интерпретировать эти серии двоичных цифр как 6 строк по 6 пикселей (а не 4 строки по 6 пикселей). 9 пикселей), поэтому форматы файлов реальных изображений часто содержат дополнительную информацию, например размер изображения.
На изображениях часто требуется передать оттенки серого или цвета. Для этого каждому пикселю может быть присвоено более одного бита. Если каждому пикселю присвоить значение, состоящее из 2 бит, мы можем иметь 4 цвета:
Используя эту схему, мы могли бы сделать такой заштрихованный круг:
Для представления этого изображения требуется 72 бита — сетка пикселей 6x6, для каждого из которых требуется 2 бита. Еще раз, чтобы нарисовать изображение из битов, нам нужно знать размеры изображения; но теперь нам также нужно указать количество битов, используемых для каждого пикселя. Эти 72 бита могут представлять изображение 3x6, где каждый пиксель представлен 4 битами (4 бита мы можем представить \(2^4 = 16\) разных оттенков серого).
Шаблон битов имеет только то значение, которое мы ему приписываем.
32 бита могут представлять изображение 4x8 из 1-битных пикселей, или изображение 4x4 из 2-битных пикселей, или последовательность из 4 букв ASCII, или действительно большое двоичное число, или что-то еще.
Что насчет цветов? Помните, биты имеют только то значение, которое мы им приписываем. Мы могли бы интерпретировать 2 бита на пиксель так:
И в итоге получится вот это изображение:
Если нам нужно более 4 цветов, нам просто нужно больше 2 бит. С 8 битами на пиксель мы можем представить \(2^8 = 256\) разных цветов или оттенков серого. Этого достаточно для черно-белой фотографии, но не позволяет получить тонкие оттенки цвета на фотографии. Для полноцветных изображений обычно используется 24 бита на пиксель, что позволяет использовать \(2^ = 16 777 216\) разных цветов.
Конечно, реальные изображения используют гораздо большее количество пикселей, чем мы видели здесь. Например, 12-мегапиксельная камера снимает изображения размером около 4000x3000 пикселей. Если каждый из этих пикселей хранить как 24-битное значение, это изображение будет состоять из 4000 x 3000 x 24 = 288 000 000 битов информации! Это 36 000 000 байт или примерно 34,3 МБ. Однако, если бы вы посмотрели на файл изображения, созданный этой камерой, вы бы обнаружили, что он намного меньше 34 МБ, даже несмотря на то, что в файле хранится дополнительная информация помимо содержимого каждого пикселя (размеры изображения, количество битов и т. д.). на пиксель и т. д.).Это связано с тем, что изображение было сжато. Наиболее распространенные форматы изображений (gif, jpeg, png) включают некоторую форму сжатия для уменьшения места, необходимого для хранения их информации… тема, о которой мы узнаем подробнее позже.
Самопроверка
В-1. Сколько бит потребуется для изображения 10 x 20 с 8 различными возможными цветами на пиксель? (Подсказка: сколько бит требуется для представления 8 разных цветов)
Мы рекомендуем вам прочитать главу 8 (стр. 340–350) и главу 5 вашей книги Head First HTML and CSS.
Основываясь на идее представления, мы обсудим, как изображения представлены в цифровой форме. Мы будем работать над этим, сначала начав с того, как представлен цвет (который основан на физиологии человеческого глаза), а затем рассматривая изображения как прямоугольные расположения пятен чистого цвета. Наконец, мы рассчитаем размер файла изображения и обсудим один из способов сжатия файла, чтобы он был меньше и, следовательно, загружался быстрее. Это сжатие фактически является другим представлением информации.
Стандартные цвета
В настоящее время современные браузеры поддерживают 140 названий цветов. Это означает, что мы можем использовать имена цветов, такие как черный, бирюзовый или шоколадный, в качестве значений свойств CSS, за исключением значения цвета, такого как цвет, фоновый цвет и т. д. Много лет назад браузеры могли поддерживать только 17 названий цветов, известные как стандартные цвета: бирюзовый, черный, синий, фуксия, серый, зеленый, салатовый, темно-бордовый, темно-синий, оливковый, оранжевый, фиолетовый, красный, серебристый, бирюзовый, белый и желтый. Однако позже этот список был расширен еще на 123 цвета. W3Schools поддерживает полный список из 140 признанных названий цветов. Хотя вы можете добиться многого, используя только эти именованные цвета, очень часто вам нужно что-то более конкретное из цветового спектра. Оказывается, мы можем использовать числовые коды для обозначения цветов, потому что внутри компьютера цвета представлены числами. Как? Для этого нам нужно понимать аддитивные цвета и цветовое зрение.
Аддитивные (RGB) цвета и цветовое зрение
В сетчатке человека есть палочковидные клетки, чувствительные ко всему свету, и конусообразные клетки, которые бывают трех типов: чувствительные к красному, зеленому и синему. Следовательно, существует три (аддитивных) основных цвета: красный, зеленый и синий или RGB. Все видимые цвета воспринимаются при возбуждении этих трех типов клеток в разной степени. (Для получения дополнительной информации обратитесь к этим статьям Википедии об аддитивном цвете и цветовом зрении.)
Цветные мониторы и телевизоры используют RGB для отображения всех своих цветов, включая желтый, зеленовато-желтый и так далее. Таким образом, в каждом цвете есть доля красного, доля зеленого и доля синего.
На компьютерах компоненты цвета RGB стандартно определяются по шкале от 0 до 255, что составляет 8 бит или 1 байт.
Поиграйте со страницей ползунка "Цвет", чтобы почувствовать это.
Пример аддитивного смешивания.
<УЛ>Мы можем использовать эти знания о цветах, представленных как смесь красного, синего и зеленого, при указании значений цвета в CSS. Это можно сделать тремя способами:
Шестнадцатеричный
Люди используют десятичную систему счисления (основание 10), компьютеры используют двоичную систему (основание 2), но программисты часто используют для удобства шестнадцатеричное число (основание 16).
Двоичные числа очень быстро удлиняются. Нелегко запомнить 24 двоичных разряда, но легче запомнить 6 шестнадцатеричных разрядов. Каждая шестнадцатеричная цифра представляет ровно четыре двоичных цифры (бита). (Это потому, что 2 4 = 16.)
Один из способов понимания шестнадцатеричной системы счисления — аналогия с десятичной, но мы все так хорошо знакомы с десятичными числами, что наши рефлексы мешают. (На самом деле люди на протяжении всей истории использовали множество различных систем счисления; десятичная система счисления не является священной.) Итак, сначала нам нужно разбить десятичную систему счисления, чтобы вы могли увидеть аналогию с шестнадцатеричной. На данный момент мы будем придерживаться двузначных чисел, но те же идеи применимы и к любым большим числам.
Десятичная система счисления работает путем организации вещей в группы по десять штук, а затем подсчета групп и остатков. Предположим, у вас есть куча палок на земле, и вы связали их все в группы по 10 штук, а некоторые остались (менее 10). . Теперь используйте символ для обозначения количества связок и другой символ для обозначения количества оставшихся палочек. Вы только что изобрели двузначные числа по основанию 10.
Шестнадцатеричный формат. Проделайте то же самое с наборами из 16, и вы изобретете двузначные числа с основанием 16. Например, если у вас есть тридцать пять палочек , их можно разделить на две группы по шестнадцать и три оставшихся числа. закончено, поэтому шестнадцатеричное представление равно 23.Осторожный! Это число не десятичное число двадцать три! Это по-прежнему тридцать пять палочек, но мы записываем их в шестнадцатеричном формате как 23.
Чтобы отличить десятичное число от шестнадцатеричного, мы используем нижние индексы. Итак, чтобы сказать, что тридцать пять палочек записывается как 23 в шестнадцатеричном формате, мы можем написать:
И десятичная, и шестнадцатеричная система счисления основаны на разрядном значении. Мы говорим, что 2316 означает 3510, потому что это "2" в разряде шестнадцати и "3" в единицах< /em>, точно так же, как 3510 имеет "3" в разряде десятков и "5" в разряде единиц.< /p>
Возьмем другой пример. Предположим, у нас есть 2610 палочек. Осталась одна группа из 16 и 10 человек. Как записать это число в шестнадцатеричном виде? Это 11016? То есть "1" в разряде шестнадцати, за которым следует "10" в разряде единиц? Нет; это сбило бы с толку, поскольку выглядело бы как трехзначное число. Нам нужен символ, который означает десять. Мы не можем использовать «10», так как это не отдельный символ. Вместо этого мы используем «А»; то есть A16=1010. Точно так же «B» означает 11, «C» означает 12, «D» означает 13, «E» означает 14, а «F» означает 15. Нам больше не нужны символы, потому что мы не можем иметь 16 вещей. осталось, так как это составит еще одну группу из 16. В следующей таблице приведены эти соответствия и то, что мы сделали до сих пор. Чтобы преобразовать большое десятичное число в шестнадцатеричное, просто разделите его. Например, 23010, разделенное на 16, равно 1410 с остатком 610. Таким образом, шестнадцатеричное число равно E616. Чтобы преобразовать шестнадцатеричное число в десятичное, просто умножьте: E616=E*16 + 6 = 14*16 + 6 = 230 . Попробуйте следующие конверсии в качестве упражнения в классе. Вы можете использовать калькулятор, вы можете спросить своих соседей, что угодно. Вы можете проверить свою работу с помощью следующей формы: Теперь, когда мы знаем как шестнадцатеричный, так и двоичный формат, вы можете преобразовать двоичный код в шестнадцатеричный (и наоборот). Однако вы, вероятно, сделаете это, преобразовав двоичное число в десятичное, а затем десятичное число в шестнадцатеричное. Есть способ получше, почти без арифметики (точнее, вся арифметика с однозначными числами, которые можно складывать в уме). Действительно, этот метод является причиной, по которой программисты любят использовать шестнадцатеричный формат. (Ну, это и удовольствие от написания слов, таких как ACE и DEADBEEF, с шестнадцатеричными цифрами.) Начнем с примера. Предположим, вам нужно преобразовать следующее из двоичного в шестнадцатеричное: Что мы собираемся сделать, так это взять биты кусками по четыре бита, поэтому, чтобы отметить куски, мы вставим точку в середине числа: Теперь мы просто конвертируем каждый фрагмент напрямую в шестнадцатеричный формат. Первый фрагмент, 0101, это просто номер 5. Второй фрагмент, 0100, это просто номер 4. Они уже в шестнадцатеричном формате, поэтому мы закончили: (Попробуйте сделать это с помощью десятичного числа, чтобы проверить. Десятичное значение, соответствующее обоим этим, равно 80+4=84.) Давайте сделаем еще один, на этот раз с немного большими значениями: Снова возьмите биты порциями по четыре бита: Теперь мы просто конвертируем каждый фрагмент напрямую в шестнадцатеричный формат. Первый фрагмент, 1010, равен 8+2 или 1010, что является цифрой A в шестнадцатеричном формате. Второй блок, 1100, равен 8+4 или 1210, что является цифрой C в шестнадцатеричном формате. Итак, мы закончили: (Опять же, проверьте нашу работу, выполнив ее через десятичную дробь. Десятичное значение, соответствующее обоим этим, равно 160+12=172.) Обратите внимание, что единственная арифметическая операция, которую нам нужно выполнить, — это преобразовать каждую порцию из четырех битов в эквивалентную шестнадцатеричную цифру. Используемая арифметика в уме ограничена: мы знаем, что (1) мы складываем однозначные числа, (2) не более четырех из них и (3) сумма всегда будет меньше 16. Посмотрите продолжение выступления профессора Курмаса из Государственного университета Гранд-Вэлли о двоичных и шестнадцатеричных числах. Это версия, которую он отредактировал для нас. Вы смотрели первые 5 минут в последний раз; смотреть остальные на сегодня. Вот видео, на котором Том Лерер поет New Math . Это около 4 минут; вам понравится. Вот более полный список названий цветов. --> Упражнение 2 Используя созданную ранее веб-страницу (или этот пример веб-страницы), поэкспериментируйте с числовым определением цвета. Используйте тег SPAN, чтобы раскрасить текст. Если вы не можете придумать какой цвет попробовать, попробуйте Шоколадный. Синтаксис: Вот оно! Требуется некоторая практика, чтобы научиться вычислять шестнадцатеричные числа, но ничего такого, чего вы не делали раньше.--> Теперь, когда мы знаем, как представлять цвет, мы можем представлять изображения. Вы можете думать об изображении как о прямоугольной двумерной сетке пятен чистого цвета, каждое из которых представлено как RRGGBB.Пятно чистого цвета называется пикселем, сокращением от элемента изображения, атомом изображения. Пиксели лучше видны, если увеличить изображение несколько раз; вот несколько примеров. Нажмите на картинку, чтобы увеличить ее. Рисунок шотландского терьера как набор пикселей Мона Лиза как набор пикселей, с увеличением пикселей, составляющих один глаз Каждое изображение на мониторе компьютера представлено пикселями. Изображения на веб-странице сохраняются в файлах, которые, помимо данных изображения, содержат информацию о размере изображения, наборе используемых цветов, происхождении изображения и т. д. В зависимости от того, как именно сохраняется эта информация , мы называем их форматами изображений. GIF, JPEG, PNG и BMP — одни из самых известных форматов изображений. Подробнее о форматах изображений мы поговорим ниже. Сейчас мы сосредоточимся на количестве пикселей и представлении каждого пикселя и, следовательно, на размере файла изображения. Выше мы сказали, что количество каждого основного цвета — это число от 0 до 25510 или от 00 до FF16. Неслучайно это ровно один байт (8 бит). Байт — это удобный фрагмент компьютерной памяти, поэтому один байт был выделен для представления количества одного основного цвета. Таким образом, для представления одного пятна чистого цвета требуется 3 байта (24 бита). 300 x 500 x 3 = 450 000 байт Это около 450 килобайт (сокращенно kB, "k" — строчная, а B — прописная; см. примечание к сокращениям) или почти полмегабайта. Это не только много места для хранения, но, что более важно, загрузка занимает значительное время, если только ваш модем не очень быстрый. Например, если у вас телефонный модем старого образца, который может обрабатывать только 56 кбит/с (56 кбит/с) = 7 кбит/с (7 кбит/с), вам потребуется немногим более 1 минуты для его загрузки (напомним, что 1 байт = 8 бит/с). биты). Это много времени. Телефонные модемы? Да, некоторые люди до сих пор пользуются телефонными модемами. Но очень популярны стали более быстрые DSL-модемы (от 128 кбит/с до 1500 кбит/с) и кабельные модемы (от 300 кбит/с до 6 000 кбит/с). Однако появление более высоких скоростей соединения сопровождается ростом числа веб-сайтов с контентом (фотографии с более высоким разрешением, песни, видео), который полностью потребляет дополнительную пропускную способность. Таким образом, ни у кого никогда не бывает достаточно пропускной способности сети, и разумно не тратить ее впустую. Если кто-то из вашей аудитории обнаружит, что ваш сайт загружается медленно, он перейдет на другой сайт.>Упражнение 1
Преобразование шестнадцатеричной системы счисления в двоичную или из нее
Пример 1
Пример 2
Пояснение
Цвета в шестнадцатеричном формате
Упражнение 2
Представление изображения
в секунду) сколько времени вам потребуется, чтобы загрузить папку, содержащую все эти изображения?
Размер изображения и время загрузки
В несжатом формате файла для хранения каждого пикселя требуется 24 бита (3 байта). Предположим, вы собираетесь сфотографировать всех своих 30 одноклассников для веб-сайта класса, используя камеру iPhone4. Согласно спецификациям телефона, его экран имеет разрешение 2592 x 1936 пикселей, что составляет около 5 миллионов пикселей или 5 МП (мегапикселей). Таким образом, если каждый пиксель занимает 3 байта, а фото с вашей камеры имеет разрешение 5 МП, то для хранения изображения вам потребуется 15 МБ (мегабайт). Для всех ваших одноранговых фотографий вам потребуется 30 x 15 МБ = 450 МБ.
Представьте, что вы размещаете все эти фотографии на своем веб-сайте на одной странице (используя атрибуты width и height, чтобы они поместились на одном экране), а затем отправляете ссылку на эту страницу своим родителям. У них может быть среднее подключение к Интернету (например, Verizon предлагает 1–3 Мбит/с (мегабит в секунду) подписчикам без FiOS).
Время, необходимое для загрузки страницы со всеми этими изображениями на компьютер ваших родителей, можно рассчитать следующим образом:
размер содержимого (450 МБ) x 8 бит/байт / 1 МБ = 3600 секунд или 1 час.
Если бы размер каждой из ваших фотографий составлял всего около 100 КБ (как мы требуем в некоторых ваших домашних заданиях), то время загрузки всех фотографий на странице составило бы 24 секунды.
Итак, как мы можем сделать наши изображения такими маленькими? Есть два способа: изменение размера (уменьшение количества пикселей в изображении путем разумной обрезки) и сжатие (уменьшение необходимого количества битов на пиксель). Мы обсудим сжатие в следующем разделе.
Сжатие
Помимо уменьшения размеров изображений (меньше пикселей), что мы можем сделать, чтобы ускорить загрузку? Мы можем сжать файлы.
- сжатие без потерь, при котором интеллектуальное кодирование позволяет уменьшить количество байтов, но при этом исходное изображение может быть полностью восстановлено из сжатой формы, и
- сжатие с потерями, когда мы отбрасываем менее важную информацию, чтобы уменьшить объем информации, которую необходимо сохранить или передать.
Мы подробно рассмотрим один из видов сжатия без потерь — индексированный цвет (кодирование GIF), потому что он дает нам представление о видах идей и методов, которые важны при разработке представлений изображений. информация.
Индексированный цвет
<ПР>Пример: двухцветное изображение
Вы можете увидеть общую схему в работе: мы создаем таблицу всех цветов, используемых на картинке. Сокращением для цвета является просто его индекс в таблице. Мы ограничим таблицу так, чтобы сокращения были не более 8 бит. Поскольку все сокращения заменяют спецификации 24-битного цвета, сокращение составляет максимум одну треть размера. В приведенном выше примере сокращение составляет 1/24 размера.
Пример: четырехцветное изображение
Как видите, сокращенная запись теперь состоит из двух битов вместо одного. Следовательно, для 150 000 пикселей требуется 300 000 бит или 300 000/8 = 37 500 байт или около 37,5 КБ. Очевидно, что это примерно в два раза больше, чем в предыдущем примере, поскольку каждое сокращение теперь в два раза больше. Тем не менее, он все равно намного меньше несжатого файла размером 450 КБ.
Как насчет размера палитры? Теперь это тоже в два раза больше. Четыре записи по 3 байта каждая увеличивают размер файла на 12 байт, что является незначительным увеличением до 37,5 КБ.
Вы можете видеть, что количество битов, необходимых для каждого пикселя, является ключевым количеством. Это количество называется битами на пиксель или «bpp». Его также часто называют "битовой глубиной", так что размер файла изображения равен ширине x высоте x битовой глубине, как если бы это был физический трехмерный блок.
Наконец, мы можем сформулировать правило:
Разрядность изображения должна быть достаточно большой, чтобы количества строк в таблице хватило для всех цветов. Если битовая глубина d, количество строк в таблице равно 2 d .
Вот точное соотношение, а также размер изображения 300 x 500:
битовая глубина | максимальное количество цветов | размер файла изображения 300x500 |
---|---|---|
1 | 2 | 18kB |
2 | 4 | 37kB |
3 | 8 | 55 КБ |
4 | 16 | 73 КБ |
5 | 32 | 91 КБ |
6 | 64 | 110 КБ | tr>
7 | 128 | 128kB |
8 | 256 td> | 147 КБ |
Упражнение 3
<УЛ>Подводя итог, можно уменьшить размер файла изображения, используя меньше цветов. Конечно, это может снизить качество вашего изображения. Это компромисс.
Индексированный цвет GIF
Формат файла GIF (т. е. представление изображения) — наиболее известный пример формата индексированного цвета. Вот как это работает: представьте художника-росписчика, который придет к вам домой и нарисует на вашей стене все, что вы захотите. Но есть одна загвоздка: она приедет к вам домой только один раз, а в ее фургоне всего 256 банок с краской. У нее на складе 16 миллионов банок с краской, и вы можете выбрать любые 256, какие захотите, но у вас не может быть фрески с более чем 256 разными цветами.
Это основная идея изображений GIF и индексированного цвета. -->
Вычисление размера файла
Мы узнали, как работает индексированный цвет и как он влияет на размер файла. Это важно не только для теоретического понимания того, почему представления имеют значение, но и для практической полезности понимания того, как уменьшить размеры ваших изображений. В этом разделе мы рассмотрим, как вычислить приблизительный размер изображения с индексированными цветами. (Индексированный цвет — это один из приемов, используемых в файлах GIF, хотя в файлах GIF используются и другие приемы.) Зачем мы это делаем? Потому что он объединяет все концептуальные вопросы в один небольшой расчет.
Ключевой концепцией вычислений является битовая глубина изображения. Прочтите на стр. 19 определение битовой глубины. Это количество битов, необходимое для представления желаемого количества цветов. Помните, что количество цветов равно 2 d , где d — разрядность. Это экспоненциальная зависимость. Добавление всего одного бита к битовой глубине удваивает количество цветов, которые вы можете иметь.
- пиксели (представленные их сокращенными значениями, каждый из которых имеет размер, равный битовой глубине), и
- палитра (в которой для каждого сокращения дается полноцветное определение).
Наконец, поскольку размер файла обычно большой (тысячи или миллионы байт), мы делим его на 1000 или 1 000 000, чтобы преобразовать в килобайты или мегабайты, в зависимости от ситуации.
Мы продолжим обсуждение расчета размера файла в лабораторных и домашних заданиях.
Битовая глубина определяет количество уникальных цветов, доступных в цветовой палитре изображения, с точки зрения количества нулей и единиц, или «битов», которые используются для указания каждого цвета. Это не означает, что изображение обязательно использует все эти цвета, но вместо этого оно может задавать цвета с таким уровнем точности. Для изображения в градациях серого глубина цвета определяет количество доступных уникальных оттенков. Изображения с более высокой битовой глубиной могут кодировать больше оттенков или цветов, так как доступно больше комбинаций 0 и 1.
ТЕРМИНОЛОГИЯ
Каждый цветной пиксель цифрового изображения создается комбинацией трех основных цветов: красного, зеленого и синего. Каждый основной цвет часто называют «цветовым каналом» и может иметь любой диапазон значений интенсивности, определяемый его битовой глубиной. Битовая глубина для каждого основного цвета называется «бит на канал». «Бит на пиксель» (bpp) относится к сумме битов во всех трех цветовых каналах и представляет общее количество цветов, доступных для каждого пикселя. С цветными изображениями часто возникает путаница, потому что может быть неясно, относится ли указанное число к битам на пиксель или к битам на канал. Использование суффикса "bpp" помогает различать эти два термина.
ПРИМЕР
СРАВНЕНИЕ
В следующей таблице показаны различные типы изображений с точки зрения разрядности (разрядности), общего количества доступных цветов и распространенных имен.
Бит на пиксель | Доступное количество цветов | Общие имена |
---|---|---|
1 | 2 | Монохромный |
2 | 4 | CGA |
4 | 16 | EGA |
8 td> | 256 | VGA |
16 | 65536 | XGA, High Color td> |
24 | 16777216 | SVGA, True Color |
32 | 16777216 + прозрачность | |
48 | 281 трлн |
ВИЗУАЛИЗАЦИЯ БИТОВОЙ ГЛУБИНЫ
Если навести указатель мыши на любой из ярлыков ниже, изображение будет повторно отображаться с использованием выбранного количества цветов. Разница между 24 и 16 битами на пиксель незначительна, но будет хорошо заметна, если ваш дисплей настроен на истинный цвет или выше (24 или 32 бита на пиксель).
24 бит на пиксель | 16 бит на пиксель | 12 бит на пиксель | 10 бит на пиксель | 8 бит на пиксель |
ПОЛЕЗНЫЕ СОВЕТЫ
Хотите узнать больше? Обсудите эту и другие статьи на наших форумах по цифровой фотографии.
Читайте также: