MATLAB.Exponenta
MATLAB и Simulink на русском
Технологии разработки и отладки
		сложных технических систем

Обработка сигналов и изображений\ Image Processing Toolbox

И.М.Журавель "Краткий курс теории обработки изображений"

В оглавление книги \ К предыдущему разделу \ К следующему разделу

Улучшение изображений с яркостными искажениями

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

Цвет представляется как 3 компоненты - яркость (Y) и две цветоразностных (U и V).

Конверсия в RGB и обратно осуществляется по следующим формулам:

R = Y + (1.4075 * (V — 128));
G = Y — (0.3455 * (U — 128) — (0.7169 * (V — 128));
B = Y + (1.7790 * (U — 128);
	

Y = R * 0.299 + G * 0.587 + B * 0.114;
U = R * ?0.169 + G * ?0.332 + B * 0.500 + 128;
V = R * 0.500 + G * ?0.419 + B * ?0.0813 + 128.
	

Рассмотрим реализацию нашей задачи в среде Matlab. Сначала считаем изображение в рабочее пространство.

clear;
L_rgb=imread('canoe.bmp');
    

Далее определим размеры исходного изображения, представим в формате double и визуализируем.

[N M s]=size(L_rgb);
L_rgb=double(L_rgb)./255;
figure, imshow(L_rgb);
title('Исходное изображение в цветовом пространстве RGB');
    

Конвертируем изображение из цветового пространства RGB в YCBCR(YUV). Для этого будем использовать встроенную функцию

rgb2ycbcr
.

L_ycbcr=rgb2ycbcr(L_rgb);
figure, imshow(L_ycbcr);
title('Исходное изображение в цветовом пространстве YCBCR');
    

Проанализируем вид и интенсивность цветовых составляющих изображения.

figure,imshow(L_ycbcr(:,:,1));
title('Y составляющая изображения в цветовом пространстве YCBCR');
	

figure,imshow(L_ycbcr(:,:,2));
title('Cb составляющая изображения в цветовом пространстве YCBCR');
	

figure,imshow(L_ycbcr(:,:,3));
title('Cr составляющая изображения в цветовом пространстве YCBCR');
    

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

%Преобразование составляющей Y, которая содержит информацию о яркости изображения
% Метод 1
L_ycbcr(:,:,1)=((L_ycbcr(:,:,1)-min(min(L_ycbcr(:,:,1))))./
(max(max(L_ycbcr(:,:,1)))-min(min(L_ycbcr(:,:,1))))).^.5;

figure,subplot(221),imshow(L_ycbcr(:,:,1));
title('Y составляющая изображения в цветовом пространстве YCBCR до модификации');
subplot(222),imhist(L_ycbcr(:,:,1));
title('Гистограмма Y составляющей до модификации');
subplot(223),imshow(L_ycbcr(:,:,1));
title('Y составляющая изображения в цветовом пространстве YCBCR после модификации');
subplot(224),imhist(L_ycbcr(:,:,1));
title('Гистограмма Y составляющей после модификации');
    


Результат коррекции динамического диапазона Y составляющей представлен на изображении внизу.

Рассмотрим еще один подход к коррекции Y-составляющей, который заключается в выравнивании ее гистограммы. Отметим, что дополнительно уровень яркости можно регулировать также с помощью параметра k.

figure,subplot(221),imshow(L_ycbcr(:,:,1));
title('Y составляющая изображения в цветовом пространстве YCBCR до модификации');
subplot(222),imhist(L_ycbcr(:,:,1));
title('Гистограмма Y составляющей до модификации');
k=1.25;
F=histeq(L_ycbcr(:,:,1));
L_ycbcr(:,:,1)=k.*F;
subplot(223),imshow(L_ycbcr(:,:,1));
title('Y составляющая изображения в цветовом пространстве YCBCR после модификации');
subplot(224),imhist(L_ycbcr(:,:,1));
title('Гистограмма Y составляющей после модификации');
    

Представим результат модификации Y-составляющей при k=1.

Представим результат модификации Y-составляющей при k=0,75.

Представим результат модификации Y-составляющей при k=1,25.

Рассмотрим третий подход к модификации Y-составляющей. Для этого будет использован метод нечеткого маскирования. При этом отметим, что степень усиления также можно регулировать с помощью параметра k.

k=.85;
L_ycbcr(:,:,1)=L_ycbcr(:,:,1)+k.*(L_ycbcr(:,:,1)-mean(mean(L_ycbcr(:,:,1))));
figure,subplot(221),imshow(L_ycbcr(:,:,1));
title('Y составляющая изображения в цветовом пространстве YCBCR до модификации');
subplot(222),imhist(L_ycbcr(:,:,1));
title('Гистограмма Y составляющей до модификации');
subplot(223),imshow(L_ycbcr(:,:,1));
title('Y составляющая изображения в цветовом пространстве YCBCR после модификации');
subplot(224),imhist(L_ycbcr(:,:,1));
title('Гистограмма Y составляющей после модификации');
    

Представим результат модификации Y-составляющей при k=-0,25.

Представим результат модификации Y-составляющей при k=0,25.

Представим результат модификации Y-составляющей при k=0,85.

Рассмотрим еще один подход к модификации Y-составляющей с помощью встроенной функции imfilter.

H = fspecial('unsharp');
L_ycbcr(:,:,1) = imfilter(L_ycbcr(:,:,1),H,'replicate');
figure,subplot(221),imshow(L_ycbcr(:,:,1));
title('Y составляющая изображения в цветовом пространстве YCBCR до модификации');
subplot(222),imhist(L_ycbcr(:,:,1));
title('Гистограмма Y составляющей до модификации');

subplot(223); 
imshow(L_ycbcr(:,:,1)); title('Y составляющая изображения в цветовом пространстве YCBCR после модификации');
subplot(224),imhist(L_ycbcr(:,:,1));title('Гистограмма Y составляющей после модификации');
    

Следующий подход к модификации Y составляющей является наиболее простым, но, в отдельных случаях, довольно эффективным методом. Его суть состоит в увеличении всех значений яркостной составляющей.

for i=1:N;
 disp(i);
  for j=1:M;
     if L_ycbcr(i,j,1)<.2;
         L_ycbcr(:,:,1)=L_ycbcr(:,:,1)+.25;
     end;
  end;
 end;
subplot(223); 
imshow(L_ycbcr(:,:,1));
title('Y составляющая изображения в цветовом пространстве YCBCR после модификации');
subplot(224),imhist(L_ycbcr(:,:,1));
title('Гистограмма Y составляющей после модификации');
    

Программа, реализующая приведенные выше методы:

%===== УЛУЧШЕНИЕ ИЗОБРАЖЕНИЙ С ЯРКОСТНЫМИ ИСКАЖЕНИЯМИ =====
clear;                           
L_rgb=imread('canoe.bmp');            
[N M s]=size(L_rgb);
L_rgb=double(L_rgb)./255;
figure, imshow(L_rgb);
title('Исходное изображение в цветовом пространстве RGB');
 
% Конвертирование из цветового пространства RGB в YCBCR
L_ycbcr=rgb2ycbcr(L_rgb);
figure, imshow(L_ycbcr);
title('Исходное изображение в цветовом пространстве YCBCR');

figure,imshow(L_ycbcr(:,:,1));
title('Y составляющая изображения в цветовом пространстве YCBCR');
figure,imshow(L_ycbcr(:,:,2));
title('Cb составляющая изображения в цветовом пространстве YCBCR');
figure,imshow(L_ycbcr(:,:,3));
title('Cr составляющая изображения в цветовом пространстве YCBCR');
 
figure,subplot(621),imshow(L_ycbcr(:,:,1));
title('Y составляющая изображения в цветовом пространстве YCBCR до модификации');
subplot(622),imhist(L_ycbcr(:,:,1));
title('Гистограмма Y составляющей до модификации');
 
%Преобразование составляющей Y, которая содержит информацию о яркости изображения
 
% Метод 1
L_ycbcr1(:,:,1)=((L_ycbcr(:,:,1)-min(min(L_ycbcr(:,:,1))))./
(max(max(L_ycbcr(:,:,1)))-min(min(L_ycbcr(:,:,1))))).^.5;
 
subplot(623),imshow(L_ycbcr1(:,:,1));
title('Y составляющая изображения в цветовом пространстве YCBCR после модификации (Метод 1)');
subplot(624),imhist(L_ycbcr1(:,:,1));
title('Гистограмма Y составляющей после модификации (Метод 1)');
 
% Метод 2
k=1.25;
F=histeq(L_ycbcr(:,:,1));
L_ycbcr2(:,:,1)=k.*F;
subplot(625),imshow(L_ycbcr2(:,:,1));
title('Y составляющая изображения в цветовом пространстве YCBCR после модификации (Метод 2)');
subplot(626),imhist(L_ycbcr2(:,:,1));
title('Гистограмма Y составляющей после модификации (Метод 2)');
 
% Метод 3
k=.85;
L_ycbcr3(:,:,1)=L_ycbcr(:,:,1)+k.*(L_ycbcr(:,:,1)-mean(mean(L_ycbcr(:,:,1))));
subplot(627),imshow(L_ycbcr3(:,:,1));
title('Y составляющая изображения в цветовом пространстве YCBCR после модификации (Метод 3)');
subplot(628),imhist(L_ycbcr3(:,:,1));
title('Гистограмма Y составляющей после модификации (Метод 3)');
 
% Метод 4
H = fspecial('unsharp');
L_ycbcr(:,:,1) = imfilter(L_ycbcr(:,:,1),H,'replicate');
subplot(629); 
imshow(L_ycbcr(:,:,1));
title('Y составляющая изображения в цветовом пространстве YCBCR после модификации (Метод 4)');
subplot(6,2,10),imhist(L_ycbcr(:,:,1));
title('Гистограмма Y составляющей после модификации (Метод 4)');
 
% Метод 5
for i=1:N;
    disp(i);
    for j=1:M;
        if L_ycbcr(i,j,1)<.2;
            L_ycbcr(:,:,1)=L_ycbcr(:,:,1)+.15;
        end;
    end;
end;
subplot(6,2,11); 
imshow(L_ycbcr(:,:,1));
title('Y составляющая изображения в цветовом пространстве YCBCR после модификации (Метод 5)');
subplot(6,2,12),imhist(L_ycbcr(:,:,1));
title('Гистограмма Y составляющей после модификации (Метод 5)');
L_ycbcr=255.*L_ycbcr;
 
% Конвертирование из цветового пространства YCBCR в RGB
L_rgb=ycbcr2rgb(L_ycbcr./255);
 
% Визуализация результатат преобразования
figure, imshow(L_rgb);
title('Результат модификации изображений с яркостными искажениями');
    

В оглавление книги \ К предыдущему разделу \ К следующему разделу


Поиск по сайту:

Система Orphus

Яндекс.Метрика