資源簡介
使用Gabor濾波器達(dá)到人眼識別定位的目的
效果還行

代碼片段和文件信息
clear?all;
clc;
I=imread(‘E:\course\圖像處理與模式識別\final?project\Test?images\test_image_1.jpg‘);
I=rgb2gray(I);???????????%灰度變換
figure(1);?imshow(I);
J=I;
[mn]=size(J);
if?isa(J‘double‘)~=1
???J=double(J);
end
M=5;?%gabor濾波器有5個(gè)尺度
X=16;?%gabor濾波器窗口大小
Y=16;
gb=getGaborKernels(MXY);
gabor_real=conv2(Jreal(gb(::1))‘same‘);????%返回和J大小相同的卷積
gabor_imag=conv2(Jimag(gb(::1))‘same‘);
f=sqrt(gabor_real.*gabor_real+gabor_imag.*gabor_imag);???%平方根????.*矩陣乘法
f=(f-min(f(:)))?/?(max(f(:))-min(f(:)));
figure(2);?imshow(f);
%??邊沿亮點(diǎn)涂黑
f(1:10:)=0;
f(m-10:end:)=0;
f(m/2+1:2*m/3:)=0;
figure(3);
imshow(f);
k=f;
t=k(1:m/21:n/2);
max_t=max(t(:));???%返回最大值
k(1:m/21:n/2)=k(1:m/21:n/2)>0.45*max_t;
t=k(1:m/2n/2+1:end);
max_t=max(t(:));
k(1:m/2n/2+1:end)=k(1:m/2n/2+1:end)>0.45*max_t;
t=k(2*m/3+1:end:);
max_t=max(t(:));
k(2*m/3+1:end:)=k(2*m/3+1:end:)>0.45*max_t;
k(m/2+1:end:)=0;
figure(4);imshow(k);
se?=?strel(‘square‘5);????%寬度為5的窗口
k?=?imdilate(kse);????????%膨脹
figure(5);
imshow(k);
k(1:15:)=0;
%%??left?eye?
BW=k(1:m/21:n/2);????%認(rèn)為給的圖片就是正面人臉
[Lnum]=bwlabel(BW);??%num中存放聯(lián)通域的個(gè)數(shù)
max_area=0;min_r=0;max_r=0;min_c=0;max_c=0;
for?p=1:num
????[rc]=find(L==p);
????mn_r=min(r);
????mx_r=max(r);
????mn_c=min(c);
????mx_c=max(c);
????temp=L(mn_r:mx_rmn_c:mx_c);
????curr_area=sum(temp(:))?/?p;
????if?(curr_area>max_area)
????????max_area=curr_area;
????????min_r=mn_r;max_r=mx_r;
????????min_c=mn_c;max_c=mx_c;
????end
end
center_r=round((min_r+max_r)/2);
center_c=round((min_c+max_c)/2);
%?add?%
fprintf(‘左眼:[%d%d]\n‘center_rcenter_c);?????%中心點(diǎn)坐標(biāo)
I(center_r-17:center_r-15center_c-17:center_c+17)=255;??%畫框框
I(center_r+15:center_r+17center_c-17:center_c+17)=255;
I(center_r-17:center_r+17center_c-17:center_c-15)=255;
I(center_r-17:center_r+17center_c+15:center_c+17)=255;
%%?right?eye?%%%%
BW=k(1:m/2n/2+1:n);
[Lnum]=bwlabel(BW);
max_area=0;min_r=0;max_r=0;min_c=0;max_c=0;
for?p=1:num
????[rc]=find(L==p);
????mn_r=min(r);
????mx_r=max(r);
????mn_c=min(c);
????mx_c=max(c);
????temp=L(mn_r:mx_rmn_c:mx_c);
????curr_area=sum(temp(:))?/?p;
????if?(curr_area>max_area)
????????max_area=curr_area;
????????min_r=mn_r;max_r=mx_r;
????????min_c=mn_c;max_c=mx_c;
????end
end
center_r=round((min_r+max_r)/2);
center_c=round((min_c+max_c)/2);
fprintf(‘右眼:[%d%d]\n‘center_rn/2+center_c);
I(center_r-17:center_r-15n/2+center_c-17:n/2+center_c+17)=255;
I(center_r+15:center_r+17n/2+center_c-17:n/2+center_c+17)=255;
I(center_r-17:center_r+17n/2+center_c-17:n/2+center_c-15)=255;
I(center_r-17:center_r+17n/2+center_c+15:n/2+center_c+17)=255;
figure(6);?imshow(I);
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????3019??2012-01-06?13:18??eyeLocation.asv
?????文件???????2806??2012-01-06?13:19??eyeLocation.m
?????文件????????269??2011-05-18?23:12??gabor.m
?????文件????????286??2011-05-18?23:12??getGaborKernels.m
-----------?---------??----------?-----??----
?????????????????6380????????????????????4
評論
共有 條評論