- •Министерство образования Российской Федерации
- •Изображение rgb
- •Разложение по составляющим r, g и b соответственно
- •3.Hайти самую яркостную составляющую y.
- •Результат применения медиального фильтра
- •Функция yCbCr маски
- •Функция i1 i2 i3 маски
- •Функция инверсной маски
- •Результаты
- •Варианты улучшения Выводы примечания
Функция 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.
Варианты улучшения Выводы примечания
Текст тестирующей программы не приведен, т.к. он еще не полностью готов (нет функции нахождения центроида)
По той же причине отсутствуют функция нахождения центроида и тесты для нее.
В разделе результатов приведен всего один пример, только затем, чтобы показать работоспособность программы, он еще должен измениться не только в количестве тестов, но и в форме описания каждого.
Варианты улучшения и выводы будут сделаны, после полного завершения курсовой работы.