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

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

% 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

%

% -= YCbCr =-

function MASK = alx_ycbcr(im,m,n)

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

crmin=138;crmax=178; % from | to

crbmin=199;crbmax=215; % from | to

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

IM_YCbCr = rgb2ycbcr(im); % IM_YCbCr is im image in YCbCr

%---- Cr ----%

Cr=IM_YCbCr(:,:,3);

ZCr=zeros(n,m);

dd=find(Cr<=crmax & Cr>=crmin);

ZCr(dd)=ones(size(dd));

%---- /Cr ----%

%---- Cb ----%

Cb=IM_YCbCr(:,:,2);

ZCb=zeros(n,m);

Cb = Cb+0.6*Cr;

dd=find(Cb<=crbmax & Cb>=crbmin);

ZCb(dd)=ones(size(dd));

%---- /Cb ----%

MASK = ZCb.*ZCr; % CbCr mask

% -=/YCbCr =-

Функция i1 i2 i3 маски

% 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

%

% -= I1I2I3 =-

function MASK = alx_i1i2i3(im,m,n)

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

i2min=45;i2max=75; % from | to

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

%---- r g b to i1 i2 i3

r = im(:,:,1);

g = im(:,:,2);

b = im(:,:,3);

i1 = (r+b+g)/3;

i2 = (r-b);

i3 = (2*g-r-b)/2;

%---- end rgb->i1i2i3

IM_I1I2I3(:,:,1) = i1 ; %

IM_I1I2I3(:,:,2) = i2 ; % IM_I1I2I3 is im image in I1I2I3

IM_I1I2I3(:,:,3) = i3 ; %

%---- I2 ----%

ZI2 = zeros(n,m);

dd=find(i2<=75 & i2>=45);

ZI2(dd)=ones(size(dd));

%---- /I2 ----%

MASK = ZI2; % I2 mask

% -=/I1I2I3 =-

Функция инверсной маски

% 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

%

% -= NEGATIVE =-

function MASK = alx_neg(path,m,n)

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

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

%---- r g b to negative r g b

R=im(:,:,1);

G=im(:,:,2);

B=im(:,:,3);

R1 = 255-R;

G1 = 255-G;

B1 = 255-B;

%----

IM_NEGATIVE(:,:,1) = R1; %

IM_NEGATIVE(:,:,2) = G1; % IM_NEGATIVE is im image in negative

IM_NEGATIVE(:,:,3) = B1; %

MASK1 = zeros(size(R1));

dd = find(R1>0);

MASK1(dd)=ones(size(dd));

MASK2 = zeros(size(R1));

dd = find(G1>0);

MASK2(dd)=ones(size(dd));

MASK3 = zeros(size(R1));

dd = find(B1>0);

MASK3(dd)=ones(size(dd));

MASK2 = (MASK2-MASK1); %

MASK3 = (MASK3-MASK1); % NEGATIVE mask

MASK = MASK2+MASK3; %

% -=/NEGATIVE =-

Результаты

рис 1.1

На рисунке 1.1 (рис. 1.1) приведены тесты по выделению областей, соответствующих человеческому лицу, с уже примененном медиальным фильтром. Как видно из примера, лучше всего выделение произвели методы YCbCr и I1I2I3, хуже всего – метод 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