Цифровое представление изображения в MATLAB

Изображение в MATLAB представлена посредством следующих классов данных – unit8, unit16, double (см. п.2.). В зависимости от представления чисел в матрице цветов IPT поддерживает типы изображений, изложенных ниже.

Бинарные изображения

Черно-белое изображение в MATLAB представляется матрицей в бинарном виде. Элементы матрицы бинарных (двоичных) изображений являются бинарными и могут принимать только 2 значения - 0 и 1, обозначающих соответственно черный и белый цвета (тип logical). Таким образом, двоичное изображение задается матрицей из нулей и единиц.

Пример 3.1.Задано бинарное изображение на рис.4. Найти его матрицу.

На следующем рисунке приведено бинарное изображение размером 12*12 и его матрица (черная рамка в один пиксел).

Цифровое представление изображения в MATLAB - student2.ru

0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 1 0

0 0 0 0 0 0 0 0 0 1 1 0

0 0 0 0 0 0 0 0 1 1 1 0

0 0 0 0 0 0 0 1 1 1 1 0

0 0 0 0 0 0 1 1 1 1 1 0

0 0 0 0 0 1 1 1 1 1 1 0

0 0 0 0 1 1 1 1 1 1 1 0

0 0 0 1 1 1 1 1 1 1 1 0

0 0 1 1 1 1 1 1 1 1 1 0

0 0 0 0 0 0 0 0 0 0 0 0

Рис.4. Бинарный образ изображения

3.2.2. Полутоновые изображения (изображения с градацией серого)(grayscale)

Если монохромное изображение учитывает переходы от черного к белому через оттенки серого, то формат представления числа от граничных значений 0 и 1 расширяется до отрезка [min_color, max_color]. Такое изображение называется полутоновым.

В этом случае матрица состоит из целых чисел типа uint8(см. п. 2), т.е. минимальное значение 0, максимальное – 255 (всего Цифровое представление изображения в MATLAB - student2.ru вариантов). Возможны также типы uint16 и double из интервала [0,1].

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

 
  Цифровое представление изображения в MATLAB - student2.ru

255 249 255 255 246 255 255 255 242 255 240 128

255 252 252 252 255 251 255 238 255 234 128 128

250 255 255 253 255 253 242 255 235 128 128 128

255 254 255 255 240 255 243 248 128 128 128 128

255 244 250 249 255 240 255 128 128 128 128 128

255 239 253 255 241 255 121 127 128 128 128 128

242 255 252 246 255 128 128 128 128 128 128 128

255 244 255 238 129 128 128 128 128 128 128 128

242 255 240 128 128 128 128 128 128 128 128 128

255 234 128 128 128 128 128 128 128 128 128 128

235 128 128 128 128 128 128 128 128 128 128 128

128 128 128 128 128 128 128 128 128 128 128 128

Рис.5. Полутоновый образ изображения

3.2.3. Цветные изображения RGB(true color RGB)

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

Пример 3.3. Цветное изображение и три его матрицы. На рис.6 квадрат закрашен в серый (верхний треугольник), красный (против часовой стрелки), розовый и белый цвета, имя графического образа – «treyg_3».

Цифровое представление изображения в MATLAB - student2.ru

Рис.6. Принтерный образ цветного изображения

Карта интенсивности красной компоненты RGB рис.6.

>>treyg_3(:,:,1) =

0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 128 128 128 128 128 128 128 128 128 255 0
0 255 0 128 128 128 128 128 128 128 255 255 0
0 255 255 0 128 128 128 128 128 128 255 255 0
0 255 255 0 128 128 128 128 128 255 255 255 0
0 255 255 255 0 128 128 128 255 255 255 255 0
0 255 255 255 255 0 128 255 255 255 255 255 0
0 255 255 255 255 255 0 255 255 255 255 255 0
0 255 255 255 255 255 255 0 255 255 255 255 0
0 255 255 255 255 255 255 255 0 255 255 255 0
0 255 255 255 255 255 255 255 255 0 255 255 0
0 255 255 255 255 255 255 255 255 255 0 255 0
0 255 255 255 255 255 255 255 255 255 0 255 0
0 255 255 255 255 255 255 255 255 255 255 0 0

Карта интенсивности зеленой компоненты RGB

>>treyg_3(:,:,2) =

0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 128 128 128 128 128 128 128 128 128 0 0

0 0 0 128 128 128 128 128 128 128 0 255 0

0 0 0 0 128 128 128 128 128 128 0 255 0

0 0 0 0 128 128 128 128 128 0 255 255 0

0 0 0 0 0 128 128 128 0 255 255 255 0

0 0 0 0 0 0 128 0 255 255 255 255 0

0 0 0 0 0 0 0 255 255 255 255 255 0

0 0 0 0 0 0 0 0 255 255 255 255 0

0 0 0 0 0 0 0 0 0 255 255 255 0

0 0 0 0 0 0 0 0 0 0 255 255 0

0 0 0 0 0 0 0 0 0 0 0 255 0

0 0 0 0 0 0 0 0 0 0 0 255 0

0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0

Карта интенсивности синей компоненты RGB

>>treyg_3(:,:,3) =

0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 128 128 128 128 128 128 128 128 128 0

0 0 0 128 128 128 128 128 128 128 0 255 0

0 0 0 0 128 128 128 128 128 128 0 255 0

0 0 0 0 128 128 128 128 128 0 255 255 0

0 0 0 0 0 128 128 128 0 255 255 255 0

0 0 0 0 0 0 128 0 255 255 255 255 0

0 0 0 0 0 0 0 255 255 255 255 255 0

0 0 0 0 0 0 255 0 255 255 255 255 0

0 0 0 0 0 255 255 255 0 255 255 255 0

0 0 0 0 255 255 255 255 255 0 255 255 0

0 0 0 0 255 255 255 255 255 255 0 255 0

0 0 0 255 255 255 255 255 255 255 0 255 0

0 0 255 255 255 255 255 255 255 255 255 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0

3.2.4. Индексированные (сжатые) изображения(indexed colormap)

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

Конструкция индексированного файла состоит в следующем. Стандартное цветное изображение сопоставляет каждому (i,j) пикселу тройку значений (R(i,j), G(i,j), B(i,j)). Так как значения всех координат - целые числа из интервала Цифровое представление изображения в MATLAB - student2.ru то различных комбинаций – конечное число – не более 2563. Величины интенсивностей R(i,j), G(i,j), B(i,j) нормируются и отображаются на отрезок [0,1].

MATLAB создает наборы RGB-троек в виде матрицы Colormap_ k*3, которая имеет 3 столбца и m строки. По умолчанию m=64. Тогда номер 0<k<m-1 для каждого пиксела дает тройку цветов. Таким образом, индексированный формат – это матрица K(i,j), где для (i,j) пиксела указано значение k - номер строки в матрице Colormap.

Объект colormap задает цветовую аппроксимацию изображения и строится следующим образом. Каждая RGB координата из отрезка [0,255] пропорционально отображается в [0,1]. Определяется минимальное и максимальное значение каждой координаты, каждый отрезок изменения координат разбивается на 4 части. Рассматриваются все тройки с такими координатами. Количество всех вариантов 43 =64, поэтому m=64. Затем все тройки выписываются в лексико-графическом порядке в предположении, что B –младший разряд, а R – старший.

При конвертировании изображения типа true color в индексированный формат с матрицей colormap цвет (R(i,j), G(i,j), B(i,j)) каждого пиксела заменяется на наиболее близкую в норме l2 тройку из списка colormap.

Пример 3.4.Пример индексированного формата цветного изображения приведен на рис.7 .

Рассмотрим простейший графический файл из 9-ти пикселов, цвет которых по периметру белый и цвет пиксела в центре – черный.

Цифровое представление изображения в MATLAB - student2.ru

Рис.7. 9 пикселов

Тогда RGB структура изображения имеет вид:

A(:,:,1) =   255 255 255 255 0 255 255 255 255   A(:,:,2) =   255 255 255 255 0 255 255 255 255   A(:,:,3) =   255 255 255 255 0 255 255 255 255  

Индексированный формат – это матрица map и матрица индексов.

>> map=colormap

map =

N R G B

1 0 0 .5625

2 0 0 .6250

3 0 0 0.6875

4 0 0 0.7500

5 0 0 0.8125

6 0 0 0.8750

7 0 0 0.9375

8 0 0 1.0000

9 0 0.0625 1.0000

10 0 0.1250 1.0000

11 0 0.1875 1.0000

12 0 0.2500 1.0000

13 0 0.3125 1.0000

14 0 0.3750 1.0000

15 0 0.4375 1.0000

16 0 0.5000 1.0000

17 0 0.5625 1.0000

18 0 0.6250 1.0000

19 0 0.6875 1.0000

20 0 0.7500 1.0000

21 0 0.8125 1.0000

22 0 0.8750 1.0000

23 0 0.9375 1.0000

24 0 1.0000 1.0000

25 0.0625 1.0000 0.9375

26 0.1250 1.0000 0.8750

27 0.1875 1.0000 0.8125

28 0.2500 1.0000 0.7500

29 0.3125 1.0000 0.6875

30 0.3750 1.0000 0.6250

31 0.4375 1.0000 0.5625

32 0.5000 1.0000 0.5000

33 0.5625 1.0000 0.4375

34 0.6250 1.0000 0.3750

35 0.6875 1.0000 0.3125

36 0.7500 1.0000 0.2500

37 0.8125 1.0000 0.1875

38 0.8750 1.0000 0.1250

39 0.9375 1.0000 0.0625

40 1.0000 1.0000 0

41 1.0000 0.9375 0

42 1.0000 0.8750 0

43 1.0000 0.8125 0

44 1.0000 0.7500 0

45 1.0000 0.6875 0

46 1.0000 0.6250 0

47 1.0000 0.5625 0

48 1.0000 0.5000 0

49 1.0000 0.4375 0

50 1.0000 0.3750 0

51 1.0000 0.3125 0

52 1.0000 0.2500 0

53 1.0000 0.1875 0

54 1.0000 0.1250 0

55 1.0000 0.0625 0

56 1.0000 0 0

57 0.9375 0 0

58 0.8750 0 0

59 0.8125 0 0

60 0.7500 0 0

61 0.6875 0 0

62 0.6250 0 0

63 0.5625 0 0

64 0.5000 0 0

>> B=rgb2ind(A,map) % представление изображения на % Рис.4 в индексированном

% формате.

B =

31 31 31

31 63 31

31 31 31

Пример 3.5.Рассмотрим цветное изображение (рис.8) и результат его преобразования в индексированный формат со значениями m=64 и m=8.

Цифровое представление изображения в MATLAB - student2.ru

Рис.8. Цветное изображение в формате RGB

Выполним последовательность команд

>> I=imread(‘RGB.jpg’);

>> [II,map] = rgb2ind(I,64);

>> imshow(II,map)

>> [II,map] = rgb2ind(I,8);

>> imshow(II,map)

Цифровое представление изображения в MATLAB - student2.ru Цифровое представление изображения в MATLAB - student2.ru
Рис.9. Индексированный формат при m=64 Рис.10. Индексированный формат при m=8

В случае m=8 объект colormap имеет вид:

>> map

map =

0.2196 0.2784 0.2039

0.6471 0.7216 0.6863

0.4196 0.4784 0.3765

0.1529 0.4392 0.6510

0.4275 0.4902 0.4863

0.8824 0.9059 0.8745

0.3451 0.4039 0.2667

0.5059 0.5765 0.5373

На рис.9 и 10 можно наблюдать снижение качества изобра-жения при убывании m.

Наши рекомендации