SDM For Face Alignment流程介绍及Matlab代码实现之测试篇
2015-08-06 00:22
489 查看
测试很简单了,只需要载入数据,然后做正则化处理,使用训练模型产生的{Rk}\{R_k\},就可以预测特征点了。
face_alignment.m:用来预测特征点
我们来看一下效果:
face_alignment.m:用来预测特征点
function shape = face_alignment( ShapeModel, DataVariation,... LearnedCascadedModel, Data, img, shape, options ) %% setup the fixed parameters %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% nData = length(Data); shapeDim = size(ShapeModel.MeanShape,1); n_init_randoms_test = options.n_init_randoms_test; MeanShape2 = vec_2_shape(ShapeModel.MeanShape); aligned_shape = zeros(n_init_randoms_test,shapeDim); %% detect the face region using face detectors or ground-truth %%%%%%%%%%%% %% if using ground-truth boxes = detect_face( img , options ); %% predict the face box bbox2 = get_correct_region2( boxes, shape,img, 1 ); bbox= []; if isempty(bbox) %% if using ground-truth bbox = getbbox(shape); end %% randomize n positions for initial shapes [rbbox] = random_init_position( ... bbox, DataVariation, n_init_randoms_test ); [rbbox2] = random_init_position( ... bbox2, DataVariation, n_init_randoms_test ); %% randomize which shape is used for initial position rIdx = randi([1,nData],n_init_randoms_test); %% iterations of n initial points %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% for ir = 1 : n_init_randoms_test %% get random positions and inital shape indexs idx = rIdx(ir); init_shape = Data(idx).shape; %% get randomly shape from others cbbox = rbbox(ir,:); cbbox2 = rbbox2(ir,:); %init_shape = resetshape(cbbox, init_shape); init_shape = resetshape(cbbox, MeanShape2); init_shape2 = resetshape(cbbox2, MeanShape2); %test box between ground-truth and face detector if 0 figure(1); imshow(img); hold on; draw_shape(init_shape(:,1), init_shape(:,2),'r'); draw_shape(init_shape2(:,1), init_shape2(:,2),'g'); hold on; rectangle('Position', cbbox, 'EdgeColor', 'y'); rectangle('Position', cbbox2, 'EdgeColor', 'k'); hold off; pause; end %% detect landmarks using cascaded regression aligned_shape(ir,:) = cascaded_regress( ShapeModel, ... LearnedCascadedModel, img, init_shape, options ); end if n_init_randoms_test == 1 shape = vec_2_shape(aligned_shape'); else shape = vec_2_shape(mean(aligned_shape)'); end end
我们来看一下效果:
相关文章推荐
- SDM For Face Alignment 流程介绍及Matlab代码实现之训练篇
- SDM For Face Alignment 流程介绍及Matlab代码实现之预处理篇
- 最大熵阈值分割——opencv与matlab实现
- Python 之 Python与MATLAB 作图小结
- 一维最大熵阈值分割——opencv与matlab实现
- Python 之 Python与MATLAB 矩阵操作小结
- OFDM之卷积编码(matlab仿真)
- matlab常用2
- matlab 按颜色画网格bar3 不同于surf,pcolor(儿子的papa)
- Matlab--随机机数的产生
- Matlab 之meshgrid, interp, griddata 用法和实例
- Matlab & C++ 混合编程mex文件的编写与调试
- VS2010 C#中调用matlab2014a生成的dll的几个问题
- [ZT] matlab中plot画图参数的设置
- matlab整理
- matlab中global的用法
- Matlab--三维图形
- c++调用Matlab引擎编程(用于画图,数值计算)
- C++和MATLAB混合编程 mwArray 结构体传入
- 《MATLAB在语音信号分析和合成中的应用》随书附带程序下载 程序打不开