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

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

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

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

Пороговая обработка цветных изображений

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

Для этого сначала считаем и визуализируем некоторое цветное изображение.

L=imread('fabric.png');
L=double(L)./255;
figure, imshow(L);
title('Исходное изображение');

Исходное изображение
Исходное изображение


Теперь сформируем и визуализируем значения интенсивности исходного изображения и построим их гистограмму.

I=L(:,:,1)+L(:,:,2)+L(:,:,3);
figure, subplot(211);imshow(I);title('Интенсивность');
subplot(212); imhist(I);
imwrite(I,'I.bmp');

Интенсивность
Интенсивность


Сформируем нормированное значение r составляющей изображения и визуализируем ее. Также построим гистограмму полученных данных.

r=L(:,:,1)./(I+eps);
figure, subplot(211);imshow(r);title('Составляющая r');
subplot(212); imhist(r);
imwrite(r,'r.bmp');

Составляющая r
Составляющая r


Аналогично сформируем и визуализируем g цветовую составляющую исходного изображения и построим ее гистограмму.

g=L(:,:,2)./(I+eps);
figure, subplot(211);imshow(g);title('Составляющая g');
subplot(212); imhist(g);
imwrite(g,'g.bmp');

Составляющая g
Составляющая g


Далее сформируем и визуализируем b цветовую составляющую исходного изображения и построим ее гистограмму.

b=L(:,:,3)./(I+eps);
figure, subplot(211);imshow(b);title('Составляющая b');
subplot(212); imhist(b);
imwrite(b,'g.bmp');

Составляющая b
Составляющая b


Также необходимо сформировать значения насыщенности S изображения.

[N M]=size(r);
for i=1:N;
    disp(i);
    for j=1:M;
        MINIMUM=min([r(i,j) g(i,j) b(i,j)]);
S(i,j)=1-3*MINIMUM;
    end;
end;
S(S<0)=0;

Визуализируем эти данные и построим их гистограмму.

figure, subplot(211);imshow(S);title('Насыщенность S');
subplot(212); imhist(S);
imwrite(S,'S.bmp');

Насыщенность S
Насыщенность S


Сформируем также значения насыщенности F изображения, визуализируем их и построим гистограмму.

F=acos((2*r-g-b)./(sqrt(6).*sqrt( (r-1/3).^2+(g-1/3).^2+(b-1/3).^2)));
figure, subplot(211);imshow(F);title('Цветовой фон F');
subplot(212); imhist(F);
imwrite(F,'F.bmp');

Цветовой фон F
Цветовой фон F


Таким образом, нами сформированы наборы данных (r-, g-, b-цветовые составляющие, насыщенность S, интенсивность I и фон F), которые будут использованы при проведении пороговых операций над исходным изображением.

Далее на основе анализа гистограммы полученных данных выберем пороговое значение и проведем бинаризацию изображения:

1) Для изображения значений интенсивности исходного изображения. Пороговое значение равно среднеарифметическому значению уровней интенсивности.

Для изображения значений интенсивности


2) Для r цветовой составляющей изображения. Гистограмма r цветовой составляющей изображения имеет несколько ярко выраженных мод, которые и будут определять пороговые значения для обработки этого изображения. Это позволит выделить несколько типов объектов.

а) Пороговое значение определяется диапазоном [0, 0.31).

Пороговое значение определяется диапазоном [0, 0.31)


б) Пороговое значение определяется диапазоном [0.31, 0.39).

Пороговое значение определяется диапазоном [0.31, 0.39)


3) Для g цветовой составляющей изображения. Также как и в предыдущем случае, гистограмма распределения этой цветовой составляющей имеет несколько ярко выраженных мод, которые будут основой для выбора порогового значения.

а) Пороговое значение определяется диапазоном [0, 0.2).

Пороговое значение определяется диапазоном [0, 0.2)


б) Пороговое значение определяется диапазоном [0.2, 0.25).

Пороговое значение определяется диапазоном [0.2, 0.25)


4) Для b цветовой составляющей изображения. Гистограмма этой цветовой составляющей также имеет несколько мод, анализ которых будет служить основой для выбора пороговых значений.

а) Пороговое значение определяется диапазоном [0, 0.35).

Пороговое значение определяется диапазоном [0, 0.35)


б) Пороговое значение определяется диапазоном [0.35, 0,4).

Пороговое значение определяется диапазоном [0.35, 0,4)


в) Пороговое значение определяется диапазоном [0.4, 0,5).

Пороговое значение определяется диапазоном [0.4, 0,5)


5) Для значений насыщенности S изображения. В этом случае пороговое значение можно выбирать как по гистограмме, так и экспериментальным путем. Пусть пороговое значение будет определяться диапазоном [0, 0.25).

пороговое значение будет определяться диапазоном [0, 0.25)


6) Для значений цветового фона F изображения. В этом случае гистограмма имеет две моды, на основе которых будут определены пороговые значения.

а) Пороговое значение определяется диапазоном [0, 0.25).

Пороговое значение определяется диапазоном [0, 0.25)


б) Пороговое значение определяется диапазоном [0.6, 1).

Пороговое значение определяется диапазоном [0.6, 1)


Бывают случаи, когда для выделения объектов на изображении необходимо использовать все или несколько параметров (значения цветовых составляющих, интенсивность, насыщенность и значения фона). Приведем пример программы, когда для выделения объектов (например, зеленого листья) использовались все параметры.

clear;
L=imread('fabric.png');
L=double(L)./255;
figure,imshow(L);title('Исходное изображение');
R=imread('r.bmp');
R=R(:,:,1);
R=double(R)./255;
G=imread('g.bmp');
G=G(:,:,1);
G=double(G)./255;
B=imread('b.bmp');
B=B(:,:,1);
B=double(B)./255;
F=imread('F.bmp');
F=F(:,:,1);
F=double(F)./255;
I=imread('I.bmp');
I=I(:,:,1);
I=double(I)./255;
S=imread('S.bmp');
S=S(:,:,1);
S=double(S)./255;
[N M]=size(R);
%Lser=mean(mean(R));
for i=1:N;
    disp(i);
    for j=1:M;
        if  ((R(i,j)-0)<.4)&((G(i,j)-0)>.35)&((B(i,j)-0)<.4)&
        ((F(i,j)-0)>.1)&((S(i,j)-0)>.1)&((I(i,j)-0)>.1);
            L(i,j,1)=0;L(i,j,2)=1;L(i,j,3)=0;            
        end;
    end;
end;
figure,imshow(L);title('Результирующее изображение');

Результирующее изображение
Результирующее изображение


Тексты программ, которые использовались при подготовке материала.

1) Программа, которая реализует формирование исходных данных для проведения пороговых операций.

clear;
%L=imread('peppers.png');
%L=imread('tissue.png');
%L=imread('greens.jpg');
L=imread('fabric.png');
L=double(L)./255;
figure, imshow(L);title('Исходное изображение');
 
I=L(:,:,1)+L(:,:,2)+L(:,:,3);
figure, subplot(211);imshow(I);title('Интенсивность');
subplot(212); imhist(I);
imwrite(I,'I.bmp');
 
r=L(:,:,1)./(I+eps);
figure, subplot(211);imshow(r);title('Составляющая r');
subplot(212); imhist(r);
imwrite(r,'r.bmp');
 
g=L(:,:,2)./(I+eps);
figure, subplot(211);imshow(g);title('Составляющая g');
subplot(212); imhist(g);
imwrite(g,'g.bmp');
 
b=L(:,:,3)./(I+eps);
figure, subplot(211);imshow(b);title('Составляющая b');
subplot(212); imhist(b);
imwrite(b,'b.bmp');
 
[N M]=size(r);
for i=1:N;
    disp(i);
    for j=1:M;
        MINIMUM=min([r(i,j) g(i,j) b(i,j)]);
S(i,j)=1-3*MINIMUM;
    end;
end;
S(S<0)=0;
figure, subplot(211);imshow(S);title('Насыщенность S');
subplot(212); imhist(S);
imwrite(S,'S.bmp');
 
F=acos((2*r-g-b)./(sqrt(6).*sqrt( (r-1/3).^2+(g-1/3).^2+(b-1/3).^2)));
figure, subplot(211);imshow(F);title('Цветовой фон F');
subplot(212); imhist(F);
imwrite(F,'F.bmp');

2) Программа, которая реализует пороговую обработку на основе значений цветовых составляющих, интенсивности, насыщенности и значений фона.

clear;
L=imread('fabric.png');
figure, subplot(221);imshow(L);title('Исходное изображение');
L=imread('F.bmp');
L=L(:,:,1);
L=double(L)./255;
subplot(222);imshow(L);title('Изображение цветового фона F');
subplot(223);imhist(L);grid;title('Гистограмма изображения цветового фона F');
 
 
[N M]=size(L);
Lser=mean(mean(L));
for i=1:N;
    disp(i);
    for j=1:M;
        if  L(i,j)>0.6;
            L(i,j)=1;
        else L(i,j)=0;
        end;
    end;
end;
subplot(224);imshow(L);title('Результирующее изображение');

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


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

Система Orphus

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