ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО КУЛЬТУРЕ И КИНЕМАТОГРАФИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
КИНО И ТЕЛЕВИДЕНИЯ»
ЛАБОРАТОРНАЯ РАБОТА № 2
«Обработка цветных изображений»
выполнил:
Судаков Владимир
Студент 112 группы
проверила:
Буль М.П.
Санкт-Петербург
Цель работы:
· Изучить особенности представления цветных изображений в системеMATLAB.
· Изучить возможности цифровой обработки цветных изображений средствами пакета IPT.
Теоретические сведения:
В пакете IPT цветные изображения представимы в двух видах: в виде индексированных изображений или в виде RGB (Red, Green, Blue) изображений.
RGB изображения
Цветным RGB изображением называется массив , состоящий из цветных пикселов, причем каждый такой пиксел является триплетом, элементы которого соответствуют трем цветовым компонентам: красному, зеленому и синему.
|
|
Индексированные изображения
Индексированное изображение имеет две компоненты: числовую матрицу данных X и матрицу цветовой карты map. Матрица map представляет собой массив размером класса double, в котором записаны вещественные числа с плавающей запятой из интервала [0, 1]. Длина m цветовой карты равна числу различных цветов на данном изображении. Каждая строка матрицы map обозначает красную, зеленую и синюю компоненту одного цвета. Индексированное изображение использует «прямое отображение» величин яркости (насыщенности, цветового тона) пикселов в значения цветовой карты. Цвет каждого пиксела определяется с помощью соответствующего числа, стоящего в матрице X, которое используется в виде указателя на map.
«Большинство не очень опытных разработчиков представляют изображение в виде трёх цветовых каналов RGB и пытаются применить процедуру эквализации гистограммы к каждому цветовому в отдельности. В некоторых редких случаях это позволяет добиться успеха, но в большинстве случаев результат так себе (цвета получаются неестественными и холодными). Это связано с тем, что модель RGB неточно отображает цветовосприятие человека.
Вспомним о другом цветовом пространстве – HSV. Эта цветовая модель (и другие родственные ей) очень широко используются иллюстраторами и дизайнерам так как позволяют оперировать более привычными для человека понятиями цветового тона, насыщенности и интенсивности.»
Задание 1. Формирование граней цветового куба RGB
clear
%создание единичной матрицы
r=ones(256,256,256);
%создание матрицы, опред компоненту R=0
for i=0:255
r(i+1,:,:)=(255-i)*ones(256,256);
|
|
end
%создание единичной матрицы
g=ones(256,256,256);
%создание матрицы, опред компоненту G=0
for i=0:255
g(:,i+1,:)=(255-i)*ones(256,256);
end
%создание единичной матрицы
b=ones(256,256,256);
%создание матрицы, опред компоненту B=0
for i=0:255
b(:,:,i+1)=(255-i)*ones(256,256);
end
%формир rgb изобр грани цветного куба, проход через начало коорд и парал плоскости gb(r=0)
RGB=ones(256,256,3);
RGB(:,:,1)=r(256,:,:);
RGB(:,:,2)=g(256,:,:);
RGB(:,:,3)=b(256,:,:);
%преобр в формат дабл
RGBr=double(RGB)./255;
subplot(1,3,1);
imshow(RGBr);
title('R=0');
%формир rgb изобр грани цветного куба, проход через начало коорд и парал плоскости rb(g=0)
RGB=ones(256,256,3);
RGB(:,:,1)=r(:,256,:);
RGB(:,:,2)=g(:,256,:);
RGB(:,:,3)=b(:,256,:);
%преобр в формат дабл
RGBg=double(RGB)./255;
subplot(1,3,2);
imshow(RGBg);
title('G=0');
%формир rgb изобр грани цветного куба, проход через начало коорд и парал плоскости rg(b=0)
RGB=ones(256,256,3);
RGB(:,:,1)=r(:,:,256);
RGB(:,:,2)=g(:,:,256);
RGB(:,:,3)=b(:,:,256);
%преобр в формат дабл
RGBb=double(RGB)./255;
subplot(1,3,3);
imshow(RGBb);
title('B=0');
Задание 2. Преобразование типов изображений
clear;
file=imread('iris.tif');
figure
subplot(1,3,1);
imshow(file);
title('Изображение');
[X,map]=rgb2ind(file,8,'nodither')
subplot(1,3,2);
imshow(X,map);
title('без диффузного псевдосмещением');
[Y,map]=rgb2ind(file,8,'dither')
subplot(1,3,3);
imshow(Y,map);
title('с диффузным псевдосмещением');
map =
0.2510 0.2471 0.1725
0.4549 0.3255 0.6941
0.5765 0.6314 0.5961
0.4392 0.4667 0.3255
0.6471 0.6078 0.9216
0.5294 0.4000 0.8510
0.3176 0.3686 0.2039
0.8980 0.7961 0.3490
clear;
file=imread('iris.tif');
figure
subplot(1,3,1);
imshow(file);
title('Изображение');
[X,map]=rgb2ind(file,0.9,'nodither');
subplot(1,3,2);
imshow(X,map);
title('без диффузного псевдосмещением');
[Y,map]=rgb2ind(file,0.9,'dither');
subplot(1,3,3);
imshow(Y,map);
title('с диффузным псевдосмещением');
k=(floor(1/0.9)+1)^3;
k=8
tol=0.7
k=8
tol=0.4
k= 27
tol=0.2
k=64
tol=0.1
k=1331
Вывод:
Задание 3. Гистограммная эквализация. Улучшение монохромной и цветной контрастности/
clear
file=imread('naturmort.tif');
subplot(5,2,1);
imshow(file);
title('Исходное изображение');
HSV=rgb2hsv(file);
%HSV = cat(3, H, S, V);
H = HSV(:,:, 1);
S = HSV(:,:, 2);
V = HSV(:,:, 3);
subplot(5,2,3); imshow(V); title('V компонента');
subplot(5,2,4); imhist(V); title('гистограмма V компоненты')
subplot(5,2,6);
histeq(V,64);
Id=histeq(V,64);
imhist(Id); title('выровненная гистограмма V компоненты')
subplot(5,2,5);
imshow(Id); title('обработанная V компонента');
subplot(1,2,1);
imshow(file);
title('Исходное изображение');
hsv=cat(3, H, S,Id);
subplot(1,2,2);
rgb=hsv2rgb(hsv);
imshow(rgb); title('из HSV в RGB')
HSV=rgb2hsv(file);
%HSV = cat(3, H, S, V);
H = HSV(:,:, 1);
S = HSV(:,:, 2);
V = HSV(:,:, 3);
subplot(2,2,1); imshow(V); title('V компонента');
subplot(2,2,2); imhist(V); title('гистограмма V компоненты')
subplot(2,2,4);
Ic=imadjust(V,[0 200]/255,[0 1], 0.7);
imhist(Ic); title('выровненная гистограмма V компоненты')
subplot(2,2,3);
imshow(Ic); title('обработанная V компонента');
clear
file=imread('naturmort.tif');
subplot(1,2,1);
imshow(file);
title('Исходное изображение');
HSV=rgb2hsv(file);
%HSV = cat(3, H, S, V);
H = HSV(:,:, 1);
S = HSV(:,:, 2);
V = HSV(:,:, 3);
Ic=imadjust(V,[0 200]/255,[0 1], 0.7);
hsv=cat(3, H, S,Ic);
subplot(1,2,2);
rgb=hsv2rgb(hsv);
imshow(rgb); title('из HSV в RGB')
HSV=rgb2hsv(file);
%HSV = cat(3, H, S, V);
H = HSV(:,:, 1);
S = HSV(:,:, 2);
V = HSV(:,:, 3);
subplot(2,2,1); imshow(S); title('S компонента');
subplot(2,2,2); imhist(S); title('гистограмма S компоненты')
subplot(2,2,4);
Ic=imadjust(S,[0 200]/255,[0 1], 0.7);
imhist(Ic); title('выровненная гистограмма S компоненты')
subplot(2,2,3);
imshow(Ic); title('обработанная S компонента');
subplot(1,2,1);
imshow(file);
title('Исходное изображение');
hsv=cat(3, H, S,Id);
subplot(1,2,2);
rgb=hsv2rgb(hsv);
imshow(rgb); title('из HSV в RGB')
clear
file=imread('naturmort.tif');
subplot(1,2,1);
imshow(file);
title('Исходное изображение');
HSV=rgb2hsv(file);
%HSV = cat(3, H, S, V);
H = HSV(:,:, 1);
S = HSV(:,:, 2);
V = HSV(:,:, 3);
Ic=imadjust(V,[0 200]/255,[0 1], 0.7);
hsv=cat(3, H, S,Ic);
subplot(1,2,2);
rgb=hsv2rgb(hsv);
imshow(rgb); title('из HSV в RGB')
clear
file=imread('naturmort.tif');
subplot(1,2,1);
imshow(file);
title('Исходное изображение');
HSV=rgb2hsv(file);
%HSV = cat(3, H, S, V);
H = HSV(:,:, 1);
S = HSV(:,:, 2);
V = HSV(:,:, 3);
Ic=imadjust(S,[0 200]/255,[0 1], 0.7);
hsv=cat(3, H, Ic,V);
subplot(1,2,2);
rgb=hsv2rgb(hsv);
imshow(rgb); title('из HSV в RGB')