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

Результат применения медиального фильтра Листинги разработанной программы

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

Программа для виртуальной базы

DB = 'D:\TEMP\BIO_ME\';

K = 10;

N = 4;

figure:clf;

for i=1:K

for j=1:N

IM = imread([DB,num2str(i),'/',num2str(j),'.bmp']);

im = imresize(IM,[35,35]);

Mhsv = alx_filter(alx_hsv(im,35,35));

Mycbcr = alx_filter(alx_ycbcr(im,35,35));

Mi1i2i3 = alx_filter(alx_i1i2i3(im,35,35));

Mneg = alx_filter(alx_neg(im));

subplot(2,3,1);

imshow(im);

title('Origin compressed image');

subplot(2,3,2);

imshow(Mhsv);

title('HSV mask');

subplot(2,3,3);

imshow(Mycbcr);

title('YCbCr mask');

subplot(2,3,5);

imshow(Mi1i2i3);

title('I1I2I3 mask');

subplot(2,3,6);

imshow(Mneg);

title('Negative mask');

pause();

end

end

Программа для реальной базы

DB = 'D:\TEMP\ME\';

N = 40;

figure:clf;

for j=1:N

IM = imread([DB,num2str(j),'.JPG']);

im = imresize(IM,[48,64]);

Mhsv = alx_filter(alx_hsv(im,64,48));

Mycbcr = alx_filter(alx_ycbcr(im,64,48));

Mi1i2i3 = alx_filter(alx_i1i2i3(im,64,48));

Mneg = alx_filter(alx_neg(im));

subplot(2,3,1);

imshow(im);

title('Origin compressed image');

subplot(2,3,2);

imshow(Mhsv);

title('HSV mask');

subplot(2,3,3);

imshow(Mycbcr);

title('YCbCr mask');

subplot(2,3,5);

imshow(Mi1i2i3);

title('I1I2I3 mask');

subplot(2,3,6);

imshow(Mneg );

title('Negative mask');

pause();

end

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

% 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 =-

Функция 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 =-

Пример функции выравнивания цвета (перевод цвета к одинаковому затемнению) [3]

% ALX | Alexander Volkov

% author : Alexander Volkov

% creation date : 02.12.07

% last code update : 11.12.07

% last documentation update : 02.12.07

% FACE DETACTION

% course work : negative VS world

%

% -= LIGHT =-

function G = alx_light(M)

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

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

m = mean(M(:));

if(m>50 & m<100)

M=M-50;

end;

if(m>100 & m<150)

M=M-100;

end;

if(m>150 & m<200)

M=M-150;

end;

if(m>200 & m<250)

M=M-200;

end;

G = M;

% -=/LIGHT =-

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

% 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(im)

%----------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>160 &G1<230);

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

MASK3 = zeros(size(R1));

dd = find(B1>160);

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

MASK = MASK1.*MASK2.*MASK3; % NEGATIVE mask

% -=/NEGATIVE =-

Соседние файлы в папке Локализация лиц на базе инверсии цвета
  • #
    01.05.2014853 б18alx_i1i2i3.m
  • #
    01.05.2014911 б18alx_neg.m
  • #
    01.05.2014758 б17alx_tester_RE.m
  • #
    01.05.2014784 б17alx_tester_VI.m
  • #
    01.05.2014860 б17alx_ycbcr.m
  • #
    01.05.20145.11 Mб24КМИЛ2.doc