[普通]人脸图像的几何归一化和灰度归一化

作者(passion) 阅读(1246次) 评论(0) 分类( c++)

 在对人脸表情进行识别时,人脸的归一化处理是至关重要的一环,它涉及到下一步处理的好坏。


人脸的归一化包括几何归一化和灰度归一化,几何归一化分两步:人脸校正和人脸裁剪。而灰度归


一化主要是增加图像的对比度,进行光照补偿。


1.几何归一化


几何归一化的目的主要是将表情子图像变换为统一的尺寸,有利于表情特征的提取。具体步骤如下:


(1)标定特征点,这里用[x,y] = ginput(3)函数来标定两眼和鼻子三个特征点。主要是用鼠标动手标


定,获取三个特征点的坐标值。


(2)根据左右两眼的坐标值旋转图像,以保证人脸方向的一致性。设两眼之间的距离为d,其中点为O。


(3)根据面部特征点和几何模型确定矩形特征区域,以O为基准,左右各剪切d,垂直方向各取0.5d和


1.5d的矩形区域进行裁剪。


(4)对表情子区域图像进行尺度变换为统一的尺寸,更有利于表情特征的提取。把截取的图像统一规格


为90*100的图像,实现图像的几何归一化。


面部几何模型如下图:


2.灰度归一化


        灰度归一化 主要是增加图像的亮度,使图像的细节更加清楚,以减弱光线和光照强度的影响。


这里用的是image=255*imadjust(C/255,[0.3;1],[0;1]); 用此函数进行光照补偿。 


具体代码如下:


C= imread('Image001.jpg');

figure(1),imshow(C);

C=double(C);

image=255*imadjust(C/255,[0.3;1],[0;1]);

figure(2),imshow(image/255);

title('Lighting compensation');%光照补偿


[x,y] = ginput(3);    %%1 left eye, 2 right eye, 3 top of nose

cos = (x(2)-x(1))/sqrt((x(2)-x(1))^2+(y(2)-y(1))^2);

sin = (y(2)-y(1))/sqrt((x(2)-x(1))^2+(y(2)-y(1))^2);

mid_x = round((x(1)+x(2))/2);

mid_y = round((y(2)+y(1))/2);

d = round(sqrt((x(2)-x(1))^2+(y(2)-y(1))^2));

rotation = atan(sin./cos)*180/pi;

img = imrotate(image,rotation,'bilinear','crop'); 

figure(3), imshow(img);%人脸校正


[h,w] = size(img);

leftpad = mid_x-d;

if leftpad<1

   leftpad = 1;

end

toppad =mid_y - round(0.5*d);

if toppad<1

   toppad = 1;

 end

 rightpad = mid_x + d;

 if rightpad>w

    rightpad = w;

 end

 bottompad = mid_y + round(1.5*d);

 if bottompad>h

    bottompad = h;

 end   

 I1 =[];

 I2 =[];

 I1(:,:) = img(toppad:bottompad,leftpad:rightpad);

 I2(:,:) = imresize(I1,[90 100]); 

 figure(4),imshow(I2,[]);%人脸裁剪


« 上一篇:wifi共享上网(至尊版wifi)
« 下一篇:j2ee servlet 与 spring
在这里写下您精彩的评论
  • 微信

  • QQ

  • 支付宝

返回首页
返回首页 img
返回顶部~
返回顶部 img