В этом разделе я хочу рассказать о том, как цифровые изображения представлены в компьютере. Итак,
рассмотрим пример - изображение нескольких желтых цветков и то, что мы видим
похоже на гармоничную, цельную, округленную картинку. В компьютере она
представлена просто кучей маленьких чисел. Как же это работает?
Я хочу сфокусироваться на желтом цветке в левом верхнем углу. Видно, что здесь есть
небольшая зеленая область с точкой посередине. Если я увеличу эту область
в десять раз, она будет выглядеть так. Заметно, что изображение
состоит из этих маленьких квадратиков. Эти квадратики называются "пиксели". То есть каждый пиксель -
это квадратик. Они весьма малы, я не знаю точного их количества,
в дюйме приблизительно 100 пикселей. И каждый пиксель показывает всего один цвет, он как бы
занимает квадратик одного цвета. Забавно, что, если посмотреть
на него сейчас, он выглядит очень искусственным и резким, но поскольку
пиксель невелик по отношению к исходному изображению, он
выглядит хорошо. Пиксели настолько малы, что глаз не замечает
этих резких краев. Вот так выглядит картинка, когда вы ее приближаете и рассматриваете
детали. Если хотите прикинуть сколько пикселей в изображении, вам нужно просто
умножить. Если у меня картинка имеет ширину 800 пикселей и высоту 600
пикселей, я просто их перемножаю и
получаю 480 000 пикселей. Возможно, Вы знакомы с термином "мегапиксель". Обычно он используется
для описания компьютеров, фотоаппаратов и тому подобной техники. Мегапиксель - это миллион пикселей.
То есть мое изображение 800х600, 480 000 это - грубо говоря - половина мегапикселя.
Не очень большое изображение по современным меркам. Цифровая
камера, даже на телефоне, обычно выдает изображение
порядка 5-10 мегапикселей, может 20. Вот это действительно
большие картинки. Ладно, посмотрим как работает эта штука. Я сделал...
чтобы получше объяснить, я сделал эту диаграмму. Если у меня есть картинка - то я могу
рассматривать ее как сетку из пикселей. Каждый пиксель - это квадрат, который
показывает один цвет. Теперь нам нужен способ обращаться
к каждому пикселю по отдельности. Это становится возможным, если мы представим
набор чисел по оси X вдоль верхней линии. Ноль находится слева и растет при движении
вправо. Похожим образом организована ось Y.
Ноль в самом верху, в верхнем ряду, а Y числа растут с движением вниз. Так
исторически организована нумерация в компьютере. Я приведу
несколько простых примеров. Так верхний левый пиксель имеет координату (0,0). Другими словами,
x=0, y=0. Пиксель, который находится правее этого,
имеет координаты x=1, y=0. Договоримся, что если я называю координату,
то сначала это значение оси X, затем значение оси Y. То есть это
(1, 0). Вот этот пиксель. Что же, можем продолжить изучать. Это
x=4, y=2. Или я просто могу сказать (4,2). Вообще-то мы не будем возиться
с различными значениями x-y для обозначения
пикселей. Вам просто нужно понять этот способ. То есть даже если
у нас 10 миллионов пикселей, каждому из них соответствует пара x-y чисел, которая отличает
его от остальных пикселей. Теперь такой вопрос: дупостим, у меня есть все эти пиксели,
как же мне задать цвет каждого из них? И чтобы рассказать об этом,
мне придется сделать небольшое историческое отступление. В 1600-х Ньютон провел
известный эксперимент с призмой (треугольным куском стекла),
который я здесь воспроизвел. Солнечный свет падает на левую сторону
призмы и разделяется на спектр цветов, который я
спроецировал на белый лист бумаги. Этот эксперимент показывает, что солнечный свет это не
что-то неделимое и однородное. Наоборот, его можно разделить вот на такие
составляющие. Этот эффект подобен тому, который можно увидеть при
радуге. Итак, цвета представляют собой непрерывный спектр, хотя мы
опознаем некоторые из них, называем по имени.
Известная последовательность: справа-налево красный, оранжевый,
желтый, зеленый, голубой, синий, фиолетовый.
В компьютере эти однородные цвета образуют подобие палитры.
Мы будем выбирать оттуда красный, зеленый и синий цвета
и использовать их как составляющие для создания любого нужного нам
цвета. В конце концов Вы можете считать, что слева
поступает свет, а справа мы получаем составляющие. Можете считать,
что это обратный процесс. Что, если я возьму составляющие и направлю их в обратном
направлении, я могу получить на выходе белый свет. И, хоть физически это не то же самое, но
наводящее на мысли о том, как мы можем взять составляющие и смешать
их вместе в компьютере. Также тут есть забавное наблюдение о синем цвете.
Когда Ньютон называл его, прямо между голубым и фиолетовым оказался синий,
верно? Нам понадобилось отдельное слово
и мы не могли называть его просто голубым. Это забавно потому что показывает особенности
жизни в 17 веке. Ньютон верил в некоторые мистические,
ненаучные вещи, а в том время было известно только семь
планет и Ньютон считал, что количество цветов и количество планет
должно совпадать. И я думаю, что он добавил синий цвет только чтобы
получить нужное число. Итак, я собираюсь следовать способу для кодирования
любого цвета, который называется RGB. RGB обозначает "красный", "синий", "зеленый".