平均形状的计算方法有两种。
1. 粗略的获取平均形状
经过三步走:原点化–尺度化–平均化
(1)原始带有基准点的数据,例如取出一个图像的基准点:
landmark=data{i}.landmark;
(2)由于对于不同的样本图像,人脸形状坐标是相对于图像的左上角。因此,需要将其进行原点化:
% landmark和shape表示是同一个意思
landmark=data{i}.landmark;
shape_min=min(landmark,[],1);%按行计算所有列中的最小值,shape_min_x,shape_min_y
shape_max=max(landmark,[],1);
%% 原点化
landmark= bsxfun(@minus, landmark, shape_min);
(3)尺度化,即将所有的形状进行缩放到统一尺度
%% 尺度化
landmark= bsxfun(@rdivide, landmark, shape_max - shape_min);
(4)平均化:
landmark=landmark./n;
2.精确的获取平均形状
- 进行。。。。
参考文献:
1.Face alignment at 3000 fps via regressing local binary features