Для представления графической информации на двумерной плоскости (например, экране монитора, странице книги и т.п.) в вычислительной технике применяются два основных подхода: растровый и
При векторном подходе графическая информация описывается как совокупность неких абстрактных геометрических объектов, таких как прямые, отрезки, кривые, прямоугольники и т.п.
Растровая графика же оперирует изображениями в виде растров. Неформально можно сказать, что растр - это описание изображения на плоскости путем разбиения всей плоскости или ее части на одинаковые квадраты и присвоение каждому квадрату своего цветового (или иного, например, прозрачности, для последующего наложения изображений друг на друга) атрибута. Если таких квадратов имеется конечное число, то получается, что непрерывная цветовая функция изображения приближенно представлена конечной совокупностью значений атрибутов. Иногда понятие растра определяют более широко: как разбиение плоскости (или ее участка) на равные элементы (т.е."замощение"), например шестиугольниками ( гексагональный растр). Далее в этом курсе расширенное толкование использоваться не будет.
С другой стороны, растр можно рассматривать как кусочно-постоянную аппроксимацию изображения, заданного как цветовая функция на плоскости. Такая точка зрения позволяет применять математический аппарат теории аппроксимации для работы с растровыми изображениями, о чем подробнее будет рассказано далее.
Формально, введем следующие определения:
Растр (англ.
$$f \colon X \times Y \to 2 ^{\mathbb{R}^2} \times C,$$ где $$X \subset \mathbb{Z}$$, $$Y \subset \mathbb{Z}$$,
$$2 ^{\mathbb{R}^2}$$ обозначает множество всех подмножеств $$\mathbb{R}^2$$,
C - множество значений атрибутов (как правило, цвет).
f(i, j) - элемент растра, называемый пикселем (англ. pixel (от
f(i, j) = (A(i, j),C(i, j)), где
C(i, j) = I(i, j) - интенсивность (или яркость) пикселя;C(i, j) = {R(i, j),G(i, j),B(i, j)} - цветовые атрибуты в цветовой модели RGB (см. раздел 1.2).Также иногда будут употребляться матричные обозначения:
Mij = (Aij ,Cij)
Aij может определяться двояко, в зависимости от того, с какой моделью мы хотим работать:
Aij := (i, j) - одна точка. Пример такой модели растра см. на рис. 1.1;В реальности, как правило, X и Y - ограниченные наборы неотрицательных целых чисел; такой растр называется прямоугольным. Для него применимо понятие Аспектовое отношение (англ. (|X|/|Y|). Чаще всего такое понятие употребляется в связи с физическими растрами (дисплеями, ПЗС-матрицами фотоаппаратов и т.д.) и записывается в виде простой дроби с ":", например "4:3".

(рис 1.2) Модель растра первого типа.(рис 1.1) Модель растра второго типа.Бесконечные растры (когда X и Y неограниченны) бывают удобны для описания алгоритмов, позволяя избежать особых ситуаций. Впрочем, самой сутью некоторых алгоритмов является как раз работа с граничными случаями.
Растровое представление является естественным в тех случаях, когда нам не известна дополнительная информация об изображаемых объектах (например, цифровым фотоаппаратом можно снимать изображения произвольного содержания). В случае же векторного описания примитивами являются более сложные объекты (линии и области, ограниченные линиями), что предполагает априорные знания о структуре изображения. В последнее время проявляется ярко выраженная тенденция к преобладанию устройств ввода-вывода двумерной графической информации, основанных на растровом принципе как более универсальном. Возникающая при выводе задача отображения геометрических объектов, заданных их математическим описанием (например, координатами концевых точек и цветом для отрезка), на растре, называемая растеризацией, рассмотрена в последующих разделах.
При построении алгоритмов, работающих с изображениями, можно также пользоваться информацией как непосредственно атрибутов пикселей, так и работать с примитивами более высокого порядка. В данном курсе в основном рассматриваются алгоритмы первого типа, про которые говорят, что они работают в пространстве изображения (англ. image space), тогда как вторые работают в объектном пространстве (англ. object space) (эти термины чаще употребляются в трехмерной графике).
Устройства отображения растровой графики рассматриваются в следующей лекции.
Понятие цвета возникает при описании восприятия глазами человека электромагнитных волн в определенном диапазоне частот (длина волны $$\lambda$$ от 400 нм (фиолетовый) до 700 нм (красный) (см. рис. 1.3)). Таким образом, самым общим описанием светового потока может служить его спектральная функция $$I(\lambda )$$. Свет называется монохроматическим (не путать с монохромными дисплеями, рассматриваемыми в следующей лекции), если его спектр состоит из одного значения $$\alpha$$ ; математически $$I_\alpha(\lambda) = c \cdot \delta (\lambda - \alpha )$$ ), где c - яркость. Понятно, что описание цвета путем описания функции в большинстве случаев слишком громоздко, хотя иногда и
применяется. К тому же, оно является избыточным, если подробнее рассмотреть, как глаз человека воспринимает свет. На сетчатке глаза находятся два типа рецепторов: палочки и колбочки. Палочки реагируют на степень яркости (или интенсивность) падающего света (см. рис. 1.4), а колбочки отвечают за различение цветов; при этом колбочки резко теряют свою чувствительность в темноте (в отличие от палочек), поэтому все объекты начинают казаться серыми. Колбочки бывают трех видов (их часто обозначают S, M и L
Так как области восприятия для разных типов колбочек перекрываются, то возникают метамеры, - потоки волн с разными спектральными характеристиками, но воспринимаемые как имеющие один и тот же цвет.
Из рассмотренной выше модели человеческого зрения вытекает, что достаточно обоснованной является цветовая модель RGB (от англ. Red, Green, Blue - красный, зеленый, голубой), в которой спектральная функция представляется как сумма кривых чувствительности для каждого типа колбочек с неотрицательными весовыми коэффициентами (обычно их нормируют от 0 до 1 ), которые так и обозначаются - R, G и B. Эта модель характеризуется свойством аддитивности (мы складываем цвета для получения новых). К примеру, спектральные функции:
fblack = 0, (R,G,B) = (0,0,0) ;fviolet = fred + fblue, (R,G,B) = (1,0,1) ;fwhite = fred + fgreen + fblue, (R,G,B) = (1,1,1).
(рис 1.4) Относительная чувствительность колбочек.(рис 1.3) Относительное восприятие интенсивности света палочками.Если представить эти коэффициенты как координаты в трехмерном евклидовом пространстве и каждой точке сопоставить соответствующий цвет, получим наглядное изображение пространства RGB (см. рис. 1.5).
(рис 1.5) Цветовая модель RGB.Эта модель является в настоящее время самой распространенной. В то же время ей присущ важный недостаток: не все цвета, видимые человеком, представимы в этой модели. В конце 1920-х годов В.Д. Райтом [53] и Дж. Гилдом [33] были проведены эксперименты, в которых наблюдателю предлагалось каждому монохроматическому 2 нм.R, G и B
с некоторыми весами, регулируемыми наблюдателем. Оказалось, что для некоторых цветов необходимо было добавить отдельно яркости испытуемого света и одного из базисных цветов (был выбран R ), с тем чтобы получить одинаковое восприятие. Это соответствует отрицательному весу R -компоненты (см. рис. 1.6). Такой эффект связан с тем, что волны из видимого диапазона воздействуют сразу на все типы колбочек и не всегда возможно ограничиться положительными коэффициентами (более подробно см. [24]) для представления некоторых цветов из видимого спектра. К счастью, доля воспроизводимых цветов
значительно больше, чем доля не представимых в этой модели цветов. Модель, с помощью которой можно представить все цвета из спектра, ограничиваясь неотрицательными коэффициентами, представлена в следующем подразделе.
(рис 1.6) Функции представления цвета для RGB.
Международный стандарт представления цвета CIE XYZ был принят в 1931 году Международной комиссией по освещению
(X, Y и Z ) позволяют получить все видимые человеком цвета.
(рис 1.7) Функции представления цвета для CIE XYZ.Математически можно записать получение коэффициентов так:
$$X = k \int I(\lambda ) \rho_X(\lambda )d \lambda ,\\ Y = k \int I(\lambda ) \rho_Y(\lambda )d \lambda ,\\ Z = k \int I(\lambda ) \rho_Z(\lambda )d \lambda,$$где $$I(\lambda )$$ - спектральная функция распределения для представляемого цвета, а k - масштабный коэффициент, выбираемый исходя из того, какой цвет принимается за белый и в каком диапазоне должны лежать значения Y.
где $$I_{бел}(\lambda )$$ - спектральная функция распределения для выбранного эталона белого цвета. Функция $$\rho _{Y}(\lambda )$$ соответствует относительному восприятию интенсивности света палочками (рис. 1.4).
Если рассмотреть значения X,Y,Z как координаты в трехмерном евклидовом пространстве, то видимые цвета образуют криволинейный конус в первом квадранте (см. рис. 1.8).
Рассмотрим значения цветности (англ. chromacity values) x, y, z, которые определяются из X,Y,Z следующим образом:
Они вводятся для описания только цветовых свойств света, безотносительно его энергии, и зависят только от основной длины волны и насыщенности. Таким образом, если опять же поместить эти точки в трехмерное евклидово пространство, то они будут как раз лежать на плоскости X + Y + Z = 1 (она также показана на рис. 1.8). Проекция этой плоскости на Oxy называется диаграммой цветности CIE (см. рис. 1.9).
Эта диаграмма весьма полезна и наглядна и широко используется. Цвета, расположенные на границе проекции, являются монохроматическими. При смешении базисных цветов можно получить все цвета, находящиеся в их R,G,B (да и любых других) мы не можем получить все видимые цвета.
Введем понятие точки белого (англ. весовые функции были специально подобраны так, чтобы дневному свету солнца соответствовала точка (x, y, z) = (1/3, 1/3, 1/3). Другие точки белого применяются для компенсации условий съемки, например при освещении флуоресцентными лампами, или свойств оборудования. В фотографии это связано с так называемым нахождением баланса белого.
(рис 1.8) Конус видимых цветов в трехмерном пространстве в модели CIE XYZ.Важной характеристикой как цветовых моделей, так и конкретных устройств, отображающих цветную информацию, является Цветовая гамма (англ.
(рис 1.9) Диаграмма цветности CIE c приблизительными цветовыми гаммами для разных классов устройств.Корректно отображать цветовую гамму как некоторое подмножество в конусе видимых цветов (см. рис. 1.8). Можно также ограничиться проекцией на диаграмму цветности, но при этом не учитывается диапазон яркости. На рис. 1.9 представлены некоторые типичные цветовые гаммы, которые позволяют судить о полноте охвата отображаемых цветов разными устройствами.
Цветовое пространство RGB, как и 3 x 3 ; достаточно задать координаты базисных цветов R, G и B в системе (x, y) на диаграмме цветности и яркостной компонентой Y. Если цвет задан таким образом (x, y, Y), то из формул (1.1) следует, что
Тогда, если базисные RGB-цвета заданы как (xR, yR, YR), (xG, yG, YG), (xB, yB, YB), получаем следующую формулу преобразования:
zR=1-xR-yR; zG=1-xG-yG; zB=1-xB-yB;$$\left( \begin{array}{c} X \\ Y \\ Z \end{array} \right) ={ \left[ \begin{array}{ccc} \frac{Y_R}{y_R}x_R \frac{Y_G}{y_G}x_G \frac{Y_B}{y_B}x_B \\ Y_R Y_G Y_ B \\ \frac{Y_R}{y_R}z_R \frac{Y_G}{y_G}z_G \frac{Y_B}{y_B}z_B \end{array} \right] \left( \begin{array}{c} R \\ G \\ B \end{array} \right) };$$
Все представимые в модели RGB цвета образуют параллелепипед в X + Y + Z = 1, спроецированное на диаграмму цветности и дает цветовую гамму данной модели.
(рис 1.10) RGB-параллелепипед в пространстве CIE XYZ.Таким образом, в зависимости от координат (x, y, Y ) для базисных цветов в конкретном устройстве (фотоаппарате, мониторе, проекторе и т.п.) одним и тем же значениям (R,G,B) соответствуют разные цвета.
Цветовые пространства, в которых каждому набору цветовых компонент соответствует физически единственный цвет, называются абсолютными цветовыми пространствами. Таким пространством является как раз (x, y, Y ) для базисных RGB-цветов, то получим абсолютное RGB-пространство.
Такие стандартные пространства играют важную роль в обеспечении одинакового отображения одного и того же изображения на разных устройствах. Для корректного отображения на конкретном устройстве изображение надо перевести из абсолютного пространства в цветовое пространство для данного устройства. Для осуществления подобного преобразования программным путем информация о характеристиках устройства хранится в сопоставленном ему специальном файле. Стандарт на такие файлы был разработан
Наиболее широко распространенным абсолютным RGB-пространством является модель sRGB (хорошо отражает характеристики цифровых фотокамер любительского уровня), также были созданы Adobe RGB, AdobeWide R, G и B ради этого даже находятся за рамками зоны видимых цветов. Для представления цветов в таком широком диапазоне рекомендуется использовать повышенную точность с 16 или более бит/канал. Все эти модели представлены на рис. 1.11.
(рис 1.11) Диаграмма цветности CIE c цветовыми гаммами для абсолютных пространств RGB.
У модели
Определим функцию F(s) как
и определим
u' = 4X/(X + 15Y + 3Z); v' = 9Y/(X + 15Y + 3Z);
Пусть точка белого имеет координаты (Xw, Yw, Zw), тогда получим следующий алгоритм преобразования:
L* = 116F(Y/Yw) - 16; u* = 13L*(u' - u'w); v* = 13L*(v' - v'w);
В обратную сторону:
u' = u*/(13L*) + u'w; v' = v*/(13L*) + v'w; Y = F-1((L* + 16)/116)Yw; X = 9Yu'/4v'; Z = (4X - 15v'Y - v'X)/3u';
Также
В ней используется та же функция F(s), определенная в (1.3), и L* имеет то же самое значение, что в L*u*v*.
L* = 116F(Y/Yw) - 16; a* = 500[F(X/Xw) - F(Y/Yw)]; b* = 200[F(Y/Yw) - F(Z/Zw)];
(рис 1.12) Диаграмма цветности для CIE L*u*v*.
Цветовая модель
C = 1 - R; M = 1 - G; Y = 1 - B;
То есть это субтрактивная (с точки зрения стандартной модели RGB) модель, в которой от белого цвета (1, 1, 1)RGB = (0, 0, 0)CMY "отнимаются" C, M и Y вплоть до получения черного (0, 0, 0)RGB = (1, 1, 1)CMY.
Эта модель удобна при рассмотрении таких устройств, как принтеры, которые наносят краску на белую бумагу. Как правило, в них как раз есть краски (или тонер), соответствующие C, M и Y, а коэффициенты определяют пропорции смешения этих красок для получения необходимого цвета.
Модель CMYK (от англ. Cyan, Magenta, Yellow, blacK - сине-зеленый, пурпурный, желтый, черный) является модификацией модели
K = min(C,M,Y); C = C - K; M = M - K; Y = Y - K;
Цветовая модель
Рассмотрим цилиндрические координаты в трехмерном евклидовом пространстве, H - угол в горизонтальной плоскости от оси Ox, S - радиус в горизонтальной плоскости (расстояние до оси Oz ), V - высота (по оси Oz ). Все цветовое пространство представляет из себя перевернутую шестигранную пирамиду (см. рис. 1.13.
(рис 1.13) Цветовая модель HSV.Концептуально, можно представить художника, который смешивает цвета. Вершины основания пирамиды соответствуют чистым основным цветам (красному, желтому, зеленому, цвету морской волны, синему и фиолетовому). При их смешивании друг с другом в разных пропорциях (в пространстве это будут линейные комбинации соответствующих векторов) точка, соответствующая цвету, перемещается по основанию пирамиды. Смешивая противоположные цвета (например, желтый и синий), можно получить белый. Добавляя к какому-либо чистому цвету черный, мы будем спускаться по пирамиде, получая различные оттенки, при этом диапазон S будет уменьшаться вплоть до нуля. На оси S = 0 (оттенки серого) значение H не определено.
Можно также заметить, что основание пирамиды представляет из себя проекцию RGB-куба (см. рис. 1.5) вдоль главной диагонали со стороны белого.
Алгоритмы преобразования из RGB в
{
// H - в градусах
maxVal = maximum(R,G,B);
minVal = minimum(R,G,B);
V = maxVal;
if( maxVal == 0 )
S = 0;
else
S = ( maxVal - minVal )/maxVal;
if( S == 0 )
H = UNDEFINED;
else
{
if( R == maxVal )
H = (G-B)/( maxVal - minVal );
else if( G == maxVal )
H = 2 + (B-R)/( maxVal - minVal );
else if( B == maxVal )
H = 4 + (R-G)/( maxVal - minVal );
H = H * 60;
if( H < 0 )
H = H + 360;
}
}
{
// H - в градусах
if( S == 0 )
{
// находимся на оси симметрии - оттенки серого
R = V;
G = V;
B = V;
}
else
{
// floor(x) возвращает наибольшее целое <= x
sector = floor( H / 60 );
frac = H / 60 - sector; // дробная часть H/60
T = V * ( 1 - S );
P = V * ( 1 - S*frac );
Q = V * ( 1 - S*(1 - frac) );
switch( sector )
{
case 0: R = V; G = Q; B = T; break;
case 1: R = P; G = V; B = T; break;
case 2: R = T; G = V; B = Q; break;
case 3: R = T; G = P; B = V; break;
case 4: R = Q; G = T; B = V; break;
case 5: R = V; G = T; B = P; break;
}
}
}
Цветовая модель H - угол в горизонтальной плоскость от оси Ox, S - радиус в горизонтальной плоскости (расстояние до оси Oz ), L - высота (по оси Oz ). Все цветовое пространство представляет из себя две соединенные основаниями шестигранные пирамиды (см. рис. 1.14). На рис. 1.14 для наглядности вырезан один из шести секторов.
(рис 1.14) Цветовая модель HLS.Как видно на рис. 1.14, эта модель получена из H и S остались теми же, только по вертикальной оси теперь L вместо V. Концептуальное различие состоит в том, что в этой модели считается, что движение от чистых цветов (у которых L = 0,5, S = 1 ) как в направлении белого, так и черного (а не только черного, как в H (вплоть до того, что в вершинах H не определено (как впрочем, и на всей вертикальной оси S = 0 )) и сужению диапазона S.
Алгоритмы преобразования из RGB в
{
// H - в градусах
maxVal = maximum(R,G,B);
minVal = minimum(R,G,B);
L = (maxVal + minVal) / 2;
if( maxVal == minVal )
{
S = 0;
H = UNDEFINED;
}
else
{
if( L <= 0.5 )
S = (maxVal - minVal)/(maxVal + minVal);
else
S = (maxVal - minVal)/(2 - (maxVal + minVal));
if( R == maxVal )
H = (G - B)/(maxVal - minVal);
else if( G == maxVal )
H = 2 + (B - R)/(maxVal - minVal);
else if( B == maxVal )
H = 4 + (R - G)/(maxVal - minVal);
H = H * 60;
if( H < 0 )
H = H + 360;
}
}
{
// H - в градусах
if( S == 0 )
{
// находимся на оси симметрии - оттенки серого
R = L;
G = L;
B = L;
}
else
{
if( L <= 0.5 )
M2 = L * (L + S);
else
M2 = (L + S) - L * S;
M1 = 2 * L - M2;
// x mod y возвращает остаток от деления x на y
R = Value(M1,M2,(H + 120) mod 360);
G = Value(M1,M2,H);
B = Value(M1,M2,(H - 120) mod 360);
}
}
// Вспомогательная функция Value
Value( N1, N2, Hue )
{
if( Hue < 60 )
return N1 + (N2 - N1)*Hue / 60;
else if( Hue < 180 )
return N2;
else if( Hue < 240 )
return N1 + (N2 - N1)*(240 - Hue) / 60;
else
return N1;
}
Существует несколько тесно связанных цветовых моделей, которые объединяет то, что в них используется явное Y соответствует одноименной компоненте в модели Y. Также они применяются в некоторых алгоритмах обработки и сжатия изображений и видео.
Расcмотрим цветовую модель U и V отвечают за цветовую информацию и определяются через преобразование из RGB:
Y = 0,299R + 0,587G + 0,114B; U = 0,492(B - Y) = -0,147R - 0,289G + 0,436B; V = 0,877(R - Y) = 0,615R - 0,515G + 0,100B;
Модель
(рис 1.15) RGB-куб в пространстве YUV, диаграмма UV при Y = 0,5.Цветовые модели U и V (им соответствуют Cb/Pb и Cr/Pr ). Kb и Kr. Тогда преобразование из RGB в
Переход от RGB к YPbPr
$$Y = Kr \cdot R + (1 - Kr - Kb) \cdot G + Kb \cdot B;$$ $$Pb = \frac{1}{2} \cdot \frac{1}{1-Kb} \cdot (B - Y );$$ $$Pr = \frac{1}{2} \cdot \frac{1}{1-Kr} \cdot (R - Y );$$Выбор Kb и Kr зависит от того, какая RGB-модель используется (это в свою очередь зависит от воспроизводящего оборудования). Обычно берется, как и выше, Kb = 0, 114 ; Kr = 0, 299. В последнее время также используют Kb = 0, 0722 ; Kr = 0, 2126, что лучше отражает характеристики современных устройств отображения.
Из приведенных выше формул следует что при $$R,G,B \in [0, 1]$$ имеем следующие диапазоны $$Y \in [0; 1]$$ ; $$Pb, Pr \in [-0,5; 0,5]$$. Для цифрового представления эти формулы видоизменяют для получения только положительных дискретных коэффициентов в диапазонах$$Y \in [minY,maxY ], Cb,Cr \in [minC,maxC],\\ minY,maxY,minC,maxC \in \mathbb{N} \cup \{0\}:$$
Переход от RGB к YCbCr
$$Kg = 1 - Kr - Kb;$$ $$Y = minY + (maxY - minY ) \cdot (Kr \cdot R + Kg \cdot G + Kb \cdot B) ;$$ $$Cb = \frac{minC+maxC}{2}+ \\ \frac{maxC-minC}{2} \cdot \frac{1}{1-Kb} \cdot (-Kr \cdot R - Kg \cdot G + (1 - Kb) \cdot B) ;$$ $$Cr = \frac{minC+maxC}{2}+ \\ \frac{maxC-minC}{2} \cdot \frac{1}{1-Kr} \cdot ((1 - Kr) \cdot R - Kg \cdot G - Kb \cdot B) ;$$В телевидении обычно берут minY = 16, maxY = 235, minC = 16, maxC = 240. В стандарте сжатия изображений JPEG (см. раздел 14.4) используется полный 8 -битный диапазон: minY = 0, maxY = 255, minC = 0, maxC = 255.
Цветовая модель UV = IQ на $$33^{\circ}$$.
Y = 0,299R + 0,587G + 0,114B I = 0,735(R - Y) - 0,268(B - Y) = 0,596R - 0,274G + 0,321B Q = 0,478(R - Y) + 0,413(B - Y) = 0,211R - 0, 523G + 0,311B
Обратные преобразования для всех моделей получаются в результате применения обратной матрицы преобразования.
Для представления графической информации на двумерной плоскости (например, экране монитора, странице книги и т.п.) в вычислительной технике применяются два основных подхода: растровый и
При векторном подходе графическая информация описывается как совокупность неких абстрактных геометрических объектов, таких как прямые, отрезки, кривые, прямоугольники и т.п.
Растровая графика же оперирует изображениями в виде растров. Неформально можно сказать, что растр - это описание изображения на плоскости путем разбиения всей плоскости или ее части на одинаковые квадраты и присвоение каждому квадрату своего цветового (или иного, например, прозрачности, для последующего наложения изображений друг на друга) атрибута. Если таких квадратов имеется конечное число, то получается, что непрерывная цветовая функция изображения приближенно представлена конечной совокупностью значений атрибутов. Иногда понятие растра определяют более широко: как разбиение плоскости (или ее участка) на равные элементы (т.е."замощение"), например шестиугольниками ( гексагональный растр). Далее в этом курсе расширенное толкование использоваться не будет.
С другой стороны, растр можно рассматривать как кусочно-постоянную аппроксимацию изображения, заданного как цветовая функция на плоскости. Такая точка зрения позволяет применять математический аппарат теории аппроксимации для работы с растровыми изображениями, о чем подробнее будет рассказано далее.
Формально, введем следующие определения:
Растр (англ.
$$f \colon X \times Y \to 2 ^{\mathbb{R}^2} \times C,$$ где $$X \subset \mathbb{Z}$$, $$Y \subset \mathbb{Z}$$,
$$2 ^{\mathbb{R}^2}$$ обозначает множество всех подмножеств $$\mathbb{R}^2$$,
C - множество значений атрибутов (как правило, цвет).
f(i, j) - элемент растра, называемый пикселем (англ. pixel (от
f(i, j) = (A(i, j),C(i, j)), где
C(i, j) = I(i, j) - интенсивность (или яркость) пикселя;C(i, j) = {R(i, j),G(i, j),B(i, j)} - цветовые атрибуты в цветовой модели RGB (см. раздел 1.2).Также иногда будут употребляться матричные обозначения:
Mij = (Aij ,Cij)
Aij может определяться двояко, в зависимости от того, с какой моделью мы хотим работать:
Aij := (i, j) - одна точка. Пример такой модели растра см. на рис. 1.1;В реальности, как правило, X и Y - ограниченные наборы неотрицательных целых чисел; такой растр называется прямоугольным. Для него применимо понятие Аспектовое отношение (англ. (|X|/|Y|). Чаще всего такое понятие употребляется в связи с физическими растрами (дисплеями, ПЗС-матрицами фотоаппаратов и т.д.) и записывается в виде простой дроби с ":", например "4:3".

(рис 1.2) Модель растра первого типа.(рис 1.1) Модель растра второго типа.Бесконечные растры (когда X и Y неограниченны) бывают удобны для описания алгоритмов, позволяя избежать особых ситуаций. Впрочем, самой сутью некоторых алгоритмов является как раз работа с граничными случаями.
Растровое представление является естественным в тех случаях, когда нам не известна дополнительная информация об изображаемых объектах (например, цифровым фотоаппаратом можно снимать изображения произвольного содержания). В случае же векторного описания примитивами являются более сложные объекты (линии и области, ограниченные линиями), что предполагает априорные знания о структуре изображения. В последнее время проявляется ярко выраженная тенденция к преобладанию устройств ввода-вывода двумерной графической информации, основанных на растровом принципе как более универсальном. Возникающая при выводе задача отображения геометрических объектов, заданных их математическим описанием (например, координатами концевых точек и цветом для отрезка), на растре, называемая растеризацией, рассмотрена в последующих разделах.
При построении алгоритмов, работающих с изображениями, можно также пользоваться информацией как непосредственно атрибутов пикселей, так и работать с примитивами более высокого порядка. В данном курсе в основном рассматриваются алгоритмы первого типа, про которые говорят, что они работают в пространстве изображения (англ. image space), тогда как вторые работают в объектном пространстве (англ. object space) (эти термины чаще употребляются в трехмерной графике).
Устройства отображения растровой графики рассматриваются в следующей лекции.
Понятие цвета возникает при описании восприятия глазами человека электромагнитных волн в определенном диапазоне частот (длина волны $$\lambda$$ от 400 нм (фиолетовый) до 700 нм (красный) (см. рис. 1.3)). Таким образом, самым общим описанием светового потока может служить его спектральная функция $$I(\lambda )$$. Свет называется монохроматическим (не путать с монохромными дисплеями, рассматриваемыми в следующей лекции), если его спектр состоит из одного значения $$\alpha$$ ; математически $$I_\alpha(\lambda) = c \cdot \delta (\lambda - \alpha )$$ ), где c - яркость. Понятно, что описание цвета путем описания функции в большинстве случаев слишком громоздко, хотя иногда и
применяется. К тому же, оно является избыточным, если подробнее рассмотреть, как глаз человека воспринимает свет. На сетчатке глаза находятся два типа рецепторов: палочки и колбочки. Палочки реагируют на степень яркости (или интенсивность) падающего света (см. рис. 1.4), а колбочки отвечают за различение цветов; при этом колбочки резко теряют свою чувствительность в темноте (в отличие от палочек), поэтому все объекты начинают казаться серыми. Колбочки бывают трех видов (их часто обозначают S, M и L
Так как области восприятия для разных типов колбочек перекрываются, то возникают метамеры, - потоки волн с разными спектральными характеристиками, но воспринимаемые как имеющие один и тот же цвет.
Из рассмотренной выше модели человеческого зрения вытекает, что достаточно обоснованной является цветовая модель RGB (от англ. Red, Green, Blue - красный, зеленый, голубой), в которой спектральная функция представляется как сумма кривых чувствительности для каждого типа колбочек с неотрицательными весовыми коэффициентами (обычно их нормируют от 0 до 1 ), которые так и обозначаются - R, G и B. Эта модель характеризуется свойством аддитивности (мы складываем цвета для получения новых). К примеру, спектральные функции:
fblack = 0, (R,G,B) = (0,0,0) ;fviolet = fred + fblue, (R,G,B) = (1,0,1) ;fwhite = fred + fgreen + fblue, (R,G,B) = (1,1,1).
(рис 1.4) Относительная чувствительность колбочек.(рис 1.3) Относительное восприятие интенсивности света палочками.Если представить эти коэффициенты как координаты в трехмерном евклидовом пространстве и каждой точке сопоставить соответствующий цвет, получим наглядное изображение пространства RGB (см. рис. 1.5).
(рис 1.5) Цветовая модель RGB.Эта модель является в настоящее время самой распространенной. В то же время ей присущ важный недостаток: не все цвета, видимые человеком, представимы в этой модели. В конце 1920-х годов В.Д. Райтом [53] и Дж. Гилдом [33] были проведены эксперименты, в которых наблюдателю предлагалось каждому монохроматическому 2 нм.R, G и B
с некоторыми весами, регулируемыми наблюдателем. Оказалось, что для некоторых цветов необходимо было добавить отдельно яркости испытуемого света и одного из базисных цветов (был выбран R ), с тем чтобы получить одинаковое восприятие. Это соответствует отрицательному весу R -компоненты (см. рис. 1.6). Такой эффект связан с тем, что волны из видимого диапазона воздействуют сразу на все типы колбочек и не всегда возможно ограничиться положительными коэффициентами (более подробно см. [24]) для представления некоторых цветов из видимого спектра. К счастью, доля воспроизводимых цветов
значительно больше, чем доля не представимых в этой модели цветов. Модель, с помощью которой можно представить все цвета из спектра, ограничиваясь неотрицательными коэффициентами, представлена в следующем подразделе.
(рис 1.6) Функции представления цвета для RGB.
Международный стандарт представления цвета CIE XYZ был принят в 1931 году Международной комиссией по освещению
(X, Y и Z ) позволяют получить все видимые человеком цвета.
(рис 1.7) Функции представления цвета для CIE XYZ.Математически можно записать получение коэффициентов так:
$$X = k \int I(\lambda ) \rho_X(\lambda )d \lambda ,\\ Y = k \int I(\lambda ) \rho_Y(\lambda )d \lambda ,\\ Z = k \int I(\lambda ) \rho_Z(\lambda )d \lambda,$$где $$I(\lambda )$$ - спектральная функция распределения для представляемого цвета, а k - масштабный коэффициент, выбираемый исходя из того, какой цвет принимается за белый и в каком диапазоне должны лежать значения Y.
где $$I_{бел}(\lambda )$$ - спектральная функция распределения для выбранного эталона белого цвета. Функция $$\rho _{Y}(\lambda )$$ соответствует относительному восприятию интенсивности света палочками (рис. 1.4).
Если рассмотреть значения X,Y,Z как координаты в трехмерном евклидовом пространстве, то видимые цвета образуют криволинейный конус в первом квадранте (см. рис. 1.8).
Рассмотрим значения цветности (англ. chromacity values) x, y, z, которые определяются из X,Y,Z следующим образом:
Они вводятся для описания только цветовых свойств света, безотносительно его энергии, и зависят только от основной длины волны и насыщенности. Таким образом, если опять же поместить эти точки в трехмерное евклидово пространство, то они будут как раз лежать на плоскости X + Y + Z = 1 (она также показана на рис. 1.8). Проекция этой плоскости на Oxy называется диаграммой цветности CIE (см. рис. 1.9).
Эта диаграмма весьма полезна и наглядна и широко используется. Цвета, расположенные на границе проекции, являются монохроматическими. При смешении базисных цветов можно получить все цвета, находящиеся в их R,G,B (да и любых других) мы не можем получить все видимые цвета.
Введем понятие точки белого (англ. весовые функции были специально подобраны так, чтобы дневному свету солнца соответствовала точка (x, y, z) = (1/3, 1/3, 1/3). Другие точки белого применяются для компенсации условий съемки, например при освещении флуоресцентными лампами, или свойств оборудования. В фотографии это связано с так называемым нахождением баланса белого.
(рис 1.8) Конус видимых цветов в трехмерном пространстве в модели CIE XYZ.Важной характеристикой как цветовых моделей, так и конкретных устройств, отображающих цветную информацию, является Цветовая гамма (англ.
(рис 1.9) Диаграмма цветности CIE c приблизительными цветовыми гаммами для разных классов устройств.Корректно отображать цветовую гамму как некоторое подмножество в конусе видимых цветов (см. рис. 1.8). Можно также ограничиться проекцией на диаграмму цветности, но при этом не учитывается диапазон яркости. На рис. 1.9 представлены некоторые типичные цветовые гаммы, которые позволяют судить о полноте охвата отображаемых цветов разными устройствами.
Цветовое пространство RGB, как и 3 x 3 ; достаточно задать координаты базисных цветов R, G и B в системе (x, y) на диаграмме цветности и яркостной компонентой Y. Если цвет задан таким образом (x, y, Y), то из формул (1.1) следует, что
Тогда, если базисные RGB-цвета заданы как (xR, yR, YR), (xG, yG, YG), (xB, yB, YB), получаем следующую формулу преобразования:
zR=1-xR-yR; zG=1-xG-yG; zB=1-xB-yB;$$\left( \begin{array}{c} X \\ Y \\ Z \end{array} \right) ={ \left[ \begin{array}{ccc} \frac{Y_R}{y_R}x_R \frac{Y_G}{y_G}x_G \frac{Y_B}{y_B}x_B \\ Y_R Y_G Y_ B \\ \frac{Y_R}{y_R}z_R \frac{Y_G}{y_G}z_G \frac{Y_B}{y_B}z_B \end{array} \right] \left( \begin{array}{c} R \\ G \\ B \end{array} \right) };$$
Все представимые в модели RGB цвета образуют параллелепипед в X + Y + Z = 1, спроецированное на диаграмму цветности и дает цветовую гамму данной модели.
(рис 1.10) RGB-параллелепипед в пространстве CIE XYZ.Таким образом, в зависимости от координат (x, y, Y ) для базисных цветов в конкретном устройстве (фотоаппарате, мониторе, проекторе и т.п.) одним и тем же значениям (R,G,B) соответствуют разные цвета.
Цветовые пространства, в которых каждому набору цветовых компонент соответствует физически единственный цвет, называются абсолютными цветовыми пространствами. Таким пространством является как раз (x, y, Y ) для базисных RGB-цветов, то получим абсолютное RGB-пространство.
Такие стандартные пространства играют важную роль в обеспечении одинакового отображения одного и того же изображения на разных устройствах. Для корректного отображения на конкретном устройстве изображение надо перевести из абсолютного пространства в цветовое пространство для данного устройства. Для осуществления подобного преобразования программным путем информация о характеристиках устройства хранится в сопоставленном ему специальном файле. Стандарт на такие файлы был разработан
Наиболее широко распространенным абсолютным RGB-пространством является модель sRGB (хорошо отражает характеристики цифровых фотокамер любительского уровня), также были созданы Adobe RGB, AdobeWide R, G и B ради этого даже находятся за рамками зоны видимых цветов. Для представления цветов в таком широком диапазоне рекомендуется использовать повышенную точность с 16 или более бит/канал. Все эти модели представлены на рис. 1.11.
(рис 1.11) Диаграмма цветности CIE c цветовыми гаммами для абсолютных пространств RGB.
У модели
Определим функцию F(s) как
и определим
u' = 4X/(X + 15Y + 3Z); v' = 9Y/(X + 15Y + 3Z);
Пусть точка белого имеет координаты (Xw, Yw, Zw), тогда получим следующий алгоритм преобразования:
L* = 116F(Y/Yw) - 16; u* = 13L*(u' - u'w); v* = 13L*(v' - v'w);
В обратную сторону:
u' = u*/(13L*) + u'w; v' = v*/(13L*) + v'w; Y = F-1((L* + 16)/116)Yw; X = 9Yu'/4v'; Z = (4X - 15v'Y - v'X)/3u';
Также
В ней используется та же функция F(s), определенная в (1.3), и L* имеет то же самое значение, что в L*u*v*.
L* = 116F(Y/Yw) - 16; a* = 500[F(X/Xw) - F(Y/Yw)]; b* = 200[F(Y/Yw) - F(Z/Zw)];
(рис 1.12) Диаграмма цветности для CIE L*u*v*.
Цветовая модель
C = 1 - R; M = 1 - G; Y = 1 - B;
То есть это субтрактивная (с точки зрения стандартной модели RGB) модель, в которой от белого цвета (1, 1, 1)RGB = (0, 0, 0)CMY "отнимаются" C, M и Y вплоть до получения черного (0, 0, 0)RGB = (1, 1, 1)CMY.
Эта модель удобна при рассмотрении таких устройств, как принтеры, которые наносят краску на белую бумагу. Как правило, в них как раз есть краски (или тонер), соответствующие C, M и Y, а коэффициенты определяют пропорции смешения этих красок для получения необходимого цвета.
Модель CMYK (от англ. Cyan, Magenta, Yellow, blacK - сине-зеленый, пурпурный, желтый, черный) является модификацией модели
K = min(C,M,Y); C = C - K; M = M - K; Y = Y - K;
Цветовая модель
Рассмотрим цилиндрические координаты в трехмерном евклидовом пространстве, H - угол в горизонтальной плоскости от оси Ox, S - радиус в горизонтальной плоскости (расстояние до оси Oz ), V - высота (по оси Oz ). Все цветовое пространство представляет из себя перевернутую шестигранную пирамиду (см. рис. 1.13.
(рис 1.13) Цветовая модель HSV.Концептуально, можно представить художника, который смешивает цвета. Вершины основания пирамиды соответствуют чистым основным цветам (красному, желтому, зеленому, цвету морской волны, синему и фиолетовому). При их смешивании друг с другом в разных пропорциях (в пространстве это будут линейные комбинации соответствующих векторов) точка, соответствующая цвету, перемещается по основанию пирамиды. Смешивая противоположные цвета (например, желтый и синий), можно получить белый. Добавляя к какому-либо чистому цвету черный, мы будем спускаться по пирамиде, получая различные оттенки, при этом диапазон S будет уменьшаться вплоть до нуля. На оси S = 0 (оттенки серого) значение H не определено.
Можно также заметить, что основание пирамиды представляет из себя проекцию RGB-куба (см. рис. 1.5) вдоль главной диагонали со стороны белого.
Алгоритмы преобразования из RGB в
{
// H - в градусах
maxVal = maximum(R,G,B);
minVal = minimum(R,G,B);
V = maxVal;
if( maxVal == 0 )
S = 0;
else
S = ( maxVal - minVal )/maxVal;
if( S == 0 )
H = UNDEFINED;
else
{
if( R == maxVal )
H = (G-B)/( maxVal - minVal );
else if( G == maxVal )
H = 2 + (B-R)/( maxVal - minVal );
else if( B == maxVal )
H = 4 + (R-G)/( maxVal - minVal );
H = H * 60;
if( H < 0 )
H = H + 360;
}
}
{
// H - в градусах
if( S == 0 )
{
// находимся на оси симметрии - оттенки серого
R = V;
G = V;
B = V;
}
else
{
// floor(x) возвращает наибольшее целое <= x
sector = floor( H / 60 );
frac = H / 60 - sector; // дробная часть H/60
T = V * ( 1 - S );
P = V * ( 1 - S*frac );
Q = V * ( 1 - S*(1 - frac) );
switch( sector )
{
case 0: R = V; G = Q; B = T; break;
case 1: R = P; G = V; B = T; break;
case 2: R = T; G = V; B = Q; break;
case 3: R = T; G = P; B = V; break;
case 4: R = Q; G = T; B = V; break;
case 5: R = V; G = T; B = P; break;
}
}
}
Цветовая модель H - угол в горизонтальной плоскость от оси Ox, S - радиус в горизонтальной плоскости (расстояние до оси Oz ), L - высота (по оси Oz ). Все цветовое пространство представляет из себя две соединенные основаниями шестигранные пирамиды (см. рис. 1.14). На рис. 1.14 для наглядности вырезан один из шести секторов.
(рис 1.14) Цветовая модель HLS.Как видно на рис. 1.14, эта модель получена из H и S остались теми же, только по вертикальной оси теперь L вместо V. Концептуальное различие состоит в том, что в этой модели считается, что движение от чистых цветов (у которых L = 0,5, S = 1 ) как в направлении белого, так и черного (а не только черного, как в H (вплоть до того, что в вершинах H не определено (как впрочем, и на всей вертикальной оси S = 0 )) и сужению диапазона S.
Алгоритмы преобразования из RGB в
{
// H - в градусах
maxVal = maximum(R,G,B);
minVal = minimum(R,G,B);
L = (maxVal + minVal) / 2;
if( maxVal == minVal )
{
S = 0;
H = UNDEFINED;
}
else
{
if( L <= 0.5 )
S = (maxVal - minVal)/(maxVal + minVal);
else
S = (maxVal - minVal)/(2 - (maxVal + minVal));
if( R == maxVal )
H = (G - B)/(maxVal - minVal);
else if( G == maxVal )
H = 2 + (B - R)/(maxVal - minVal);
else if( B == maxVal )
H = 4 + (R - G)/(maxVal - minVal);
H = H * 60;
if( H < 0 )
H = H + 360;
}
}
{
// H - в градусах
if( S == 0 )
{
// находимся на оси симметрии - оттенки серого
R = L;
G = L;
B = L;
}
else
{
if( L <= 0.5 )
M2 = L * (L + S);
else
M2 = (L + S) - L * S;
M1 = 2 * L - M2;
// x mod y возвращает остаток от деления x на y
R = Value(M1,M2,(H + 120) mod 360);
G = Value(M1,M2,H);
B = Value(M1,M2,(H - 120) mod 360);
}
}
// Вспомогательная функция Value
Value( N1, N2, Hue )
{
if( Hue < 60 )
return N1 + (N2 - N1)*Hue / 60;
else if( Hue < 180 )
return N2;
else if( Hue < 240 )
return N1 + (N2 - N1)*(240 - Hue) / 60;
else
return N1;
}
Существует несколько тесно связанных цветовых моделей, которые объединяет то, что в них используется явное Y соответствует одноименной компоненте в модели Y. Также они применяются в некоторых алгоритмах обработки и сжатия изображений и видео.
Расcмотрим цветовую модель U и V отвечают за цветовую информацию и определяются через преобразование из RGB:
Y = 0,299R + 0,587G + 0,114B; U = 0,492(B - Y) = -0,147R - 0,289G + 0,436B; V = 0,877(R - Y) = 0,615R - 0,515G + 0,100B;
Модель
(рис 1.15) RGB-куб в пространстве YUV, диаграмма UV при Y = 0,5.Цветовые модели U и V (им соответствуют Cb/Pb и Cr/Pr ). Kb и Kr. Тогда преобразование из RGB в
Переход от RGB к YPbPr
$$Y = Kr \cdot R + (1 - Kr - Kb) \cdot G + Kb \cdot B;$$ $$Pb = \frac{1}{2} \cdot \frac{1}{1-Kb} \cdot (B - Y );$$ $$Pr = \frac{1}{2} \cdot \frac{1}{1-Kr} \cdot (R - Y );$$Выбор Kb и Kr зависит от того, какая RGB-модель используется (это в свою очередь зависит от воспроизводящего оборудования). Обычно берется, как и выше, Kb = 0, 114 ; Kr = 0, 299. В последнее время также используют Kb = 0, 0722 ; Kr = 0, 2126, что лучше отражает характеристики современных устройств отображения.
Из приведенных выше формул следует что при $$R,G,B \in [0, 1]$$ имеем следующие диапазоны $$Y \in [0; 1]$$ ; $$Pb, Pr \in [-0,5; 0,5]$$. Для цифрового представления эти формулы видоизменяют для получения только положительных дискретных коэффициентов в диапазонах$$Y \in [minY,maxY ], Cb,Cr \in [minC,maxC],\\ minY,maxY,minC,maxC \in \mathbb{N} \cup \{0\}:$$
Переход от RGB к YCbCr
$$Kg = 1 - Kr - Kb;$$ $$Y = minY + (maxY - minY ) \cdot (Kr \cdot R + Kg \cdot G + Kb \cdot B) ;$$ $$Cb = \frac{minC+maxC}{2}+ \\ \frac{maxC-minC}{2} \cdot \frac{1}{1-Kb} \cdot (-Kr \cdot R - Kg \cdot G + (1 - Kb) \cdot B) ;$$ $$Cr = \frac{minC+maxC}{2}+ \\ \frac{maxC-minC}{2} \cdot \frac{1}{1-Kr} \cdot ((1 - Kr) \cdot R - Kg \cdot G - Kb \cdot B) ;$$В телевидении обычно берут minY = 16, maxY = 235, minC = 16, maxC = 240. В стандарте сжатия изображений JPEG (см. раздел 14.4) используется полный 8 -битный диапазон: minY = 0, maxY = 255, minC = 0, maxC = 255.
Цветовая модель UV = IQ на $$33^{\circ}$$.
Y = 0,299R + 0,587G + 0,114B I = 0,735(R - Y) - 0,268(B - Y) = 0,596R - 0,274G + 0,321B Q = 0,478(R - Y) + 0,413(B - Y) = 0,211R - 0, 523G + 0,311B
Обратные преобразования для всех моделей получаются в результате применения обратной матрицы преобразования.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.