Скачиваний:
28
Добавлен:
01.05.2014
Размер:
4.07 Mб
Скачать

3.Hайти самую яркостную составляющую y.

1. Y = R + G + B

2. Y = max(R, G, B) + min(R, G, B)

3. Y = max(R, G, B),

4. Y = 0.3 * R + 0.59 * G + 0.11 * B. Ближе всего соответствует человеческому восприятию.

Инвертировать ее Y1 = 1 - Y.

Пересчитать все цвета: R1 = R*Y1/Y, G1 = G*Y1/Y, B1 = B*Y1/Y

Будем использовать простейший первый метод.

При этом значения соответствующие человеческому лицу получаются равными:

R принадлежит всему диапазону

G принадлежит диапазону [60;230]

B принадлежит диапазону [40; 150]

Цель работы

Целью работы является определение, предложенного в данной работе метода (метода на основе негатива изображения), среди других методов типа skin-color. Исследование и сравнение характеристик заявленных для сравнения методов.

Исследование

Если изображение имеет размер MxNx3, то алгоритм квантования составляющих и сегментации изображения с целью выделения области лица складывается из следующих шагов:

1. Генерирование нулевой матрицы размером MxN

2. Трансформация исходного RGB-изображения в пространство HSV, причем новое изображение будет иметь размер MxNx3, т.к. состоит из составляющих H,S и V

3. Анализ каждого пикселя H,S,V и проверки выполнения текущих значений, описанных выше условий.

4. Запись в нулевую матрицу (определенную на первом шаге) единицы по текущему адресу, если условия выполняются.

5. Повторение шагов 3 и 4 для каждого адреса матрицы.

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

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

При выделении кандидатов в лица выделяются еще много шумов. Для их устранения разумно использовать фильтр шумов.

Для этой цели очень хорошо подходит медиальный фильтр. На рисунке 3 (рис.3) представлены результаты такого фильтра.

рис.3

Результат применения медиального фильтра

Для нахождения ценроида (центра самого большого пятна на маске) применяется низкочастотный двумерный фильтр, затем делается срез на уровне 0,75 от максимального значения (пика). Полученную маску можно использовать для локализации лица на исходном RGB изображении.

Листинги разработанной программы

Основная тестирующая программа

Функция нахождения ценроида

Функция фильтра

% ALX | Alexander Volkov

% author : Alexander Volkov

% creation date : 21.10.07

% last code update : 12.11.07

% last documentation update : 21.10.07

% FACE DETACTION

% course work : negative VS world

%

% -= FILTER =-

function MASK = alx_filter(M)

%----------Parameters-----------

%--------------------------------

MASK = medfilt2(M);

% -=/FILTER =-

Функция HSV маски

% ALX | Alexander Volkov

% author : Alexander Volkov

% creation date : 09.10.07

% last code update : 11.11.07

% last documentation update : 09.10.07

% FACE DETACTION

% course work : negative VS world

%

% -= HSV =-

function MASK = alx_hsv(im,m,n)

%----------Parameters-----------

hmin=0.10; hmax=0.90; % less than | more than

smin=0.23; smax=0.68; % from | to

vmin=0.60; vmax=1.00; % from | to

%--------------------------------

IM_HSV = rgb2hsv(im); % IM_HSV is im image in HSV

%---- H ----%

H=IM_HSV(:,:,1);

ZH=zeros(n,m);

dd=find(H<=hmin | H>=hmax);

ZH(dd)=ones(size(dd));

%---- /H ----%

%---- S ----%

S=IM_HSV(:,:,2);

ZS=zeros(n,m);

dd=find(S>=smin & S<=smax);

ZS(dd)=ones(size(dd));

%---- /S ----%

%---- V ----%

V=IM_HSV(:,:,3);

ZV=zeros(n,m);

dd=find(V>=vmin & V<=vmax);

ZV(dd)=ones(size(dd));

%---- /V ----%

MASK=ZH.*ZS.*ZV; % HSV mask

% -=/HSV =-

Соседние файлы в папке Локализация лиц с использованием негатива
  • #
    01.05.2014395 б20alx_filter.m
  • #
    01.05.2014987 б18alx_hsv.m
  • #
    01.05.2014853 б19alx_i1i2i3.m
  • #
    01.05.2014911 б18alx_neg.m
  • #
    01.05.2014860 б18alx_ycbcr.m
  • #
    01.05.20144.07 Mб28КМИЛ.doc