资源简介
使用Gabor滤波器达到人眼识别定位的目的
效果还行
代码片段和文件信息
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个尺度
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);
% 边沿亮点涂黑
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); %认为给的图片就是正面人脸
[Lnum]=bwlabel(BW); %num中存放联通域的个数
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); %中心点坐标
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);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 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
- 上一篇:传染病模型的MATLAB程序和图数学模型第三版
- 下一篇:Matlab光学实验程序
相关资源
- MATLAB 提取Gabor特征
- Gabor滤波后的GIST特征提取matlab代码
- gabor提取图像特征原理及其matlab实现
- 人脸人眼定位算法matlab实现代码
- ASEF人眼定位matlab仿真
- Gabor二维滤波器——最全
- matlab常用纹理特征提取方法GLCM,GLD
- 基于gabor的原子时频分析程序
- 时频分析 Gabor 变换 Matlab程序
- Gaborfilter matlab
- 2DPCA人脸识别提取Gabor特征,用2DPCA进
- 指纹识别程序Gabor滤波+详细注释+代码
- 在MATLAB下的gist特征提取及傅里叶变换
- 人脸识别人眼定位
- 灰度投影的人眼识别matlab代码附带图
- Matlab实现Gabor提取图片纹理
- gabor滤波器的matlab源代码
- gabor滤波二值化.rar
- Gabor特征提取MATLAB代码
- Gabor原子的构造
- Gabor的matlab程序,Gabor滤波是一种不错
- 基于Gabor小波变换和人工神经网络的人
- Gabor小波变换
- matlab人眼识别代码
- 时频Gabor变换
- matlab实现人眼定位程序203834
- GaborGMRFLBP纹理特征提取方法_MATLAB
- matlab使用gabor变换和神经网络实现人脸
- gabormatlab
- 基于Gabor滤波指纹识别算法matlab完整程
评论
共有 条评论