本文仅对如上的特征结构进行计算
请注意下述函数中的A为样本的积分图结果,为简化计算A第一行和第一列为0值,关于积分图的计算方法参见前文。
haar结构前两个数据为haar特征(s, t)
function F = AdaBoost_f(haar, A)
% haar特征值计算
% haar: haar(s, t, x_lu, y_lu, x_rd, y_rd)
% A:样本积分图
% F: haar特征值
if haar(1) == 1 && haar(2) == 2
%(1,2)矩形模板
% 1 ____ 2
% 3|_黑_|4
% |_白_|
% 5 6
% (1, 2)的特征值f=(4-2-3+1)-(6-4-5+3)
x_lu = haar(3); y_lu = haar(4); %(1, 2)矩形模板左上角坐标
x_rd = haar(5); y_rd = haar(6); %(1, 2)矩形模板右下角坐标
x1 = x_lu; y1 = y_lu; % 位置坐标1
x6 = x_rd+1; y6 = y_rd+1; % 位置坐标6
x3 = x1; y3 = (y1 + y6)/2; % 位置坐标3
x5 = x1; y5 = y6; % 位置坐标5
x2 = x6; y2 = y1; % 位置坐标2
x4 = x6; y4 = y3; % 位置坐标4
f = (A(y4,x4,:)-A(y2,x2,:)-A(y3,x3,:)+A(y1,x1,:))-... % 特征值计算
(A(y6,x6,:)- A(y4,x4,:)-A(y5,x5,:)+A(y3,x3,:));
elseif haar(1) == 2 && haar(2) == 1
%(2, 1)矩形模板
% 1 ____2____3
% |_白_|_黑_|
% 4 5 6
% (2, 1)的特征值f=(6-3-5+2)-(5-2-4+1)
x_lu = haar(3); y_lu = haar(4);%(2, 1)矩形模板左上角坐标
x_rd = haar(5); y_rd = haar(6);%(2, 1)矩形模板右下角坐标
x1 = x_lu; y1 = y_lu; % 位置坐标1
x6 = x_rd+1; y6 = y_rd+1; % 位置坐标6
x2 = (x1+x6)/2; y2 = y1; % 位置坐标2
x3 = x6; y3 = y1; % 位置坐标3
x4 = x1; y4 = y6; % 位置坐标4
x5 = x2; y5 = y6; % 位置坐标5
f = (A(y6,x6,:)-A(y3,x3,:)-A(y5,x5,:)+A(y2,x2,:))-...% 特征值计算
(A(y5,x5,:)-A(y2,x2,:)-A(y4,x4,:)+A(y1,x1,:));
elseif haar(1) == 1 && haar(2) == 3
%(1, 3)矩形模板
% 1 ____ 2
% |_白_|
% 3 ____ 4
% |_黑_|
% 5 ____ 6
% |_白_|
% 7 8
% (1, 3)的特征值f=(6-4-5+3)-(4-2-3+1)-(8-6-7+5)
x_lu = haar(3); y_lu = haar(4);%(1, 3)矩形模板左上角坐标
x_rd = haar(5); y_rd = haar(6);%(1, 3)矩形模板右下角坐标
x1 = x_lu; y1 = y_lu; % 位置坐标1
x8 = x_rd+1; y8 = y_rd+1; % 位置坐标8
x2 = x8; y2 = y1; % 位置坐标2
x3 = x1; y3 = y1+(y8-y1)/3; % 位置坐标3
x4 = x8; y4 = y3; % 位置坐标4
x5 = x1; y5 = y1+(y8-y1)*2/3; % 位置坐标5
x6 = x8; y6 = y5; % 位置坐标6
x7 = x1; y7 = y8; % 位置坐标7
f = (A(y6,x6,:)-A(y4,x4,:)-A(y5,x5,:)+A(y3,x3,:))-... % 特征值计算
(A(y4,x4,:)-A(y2,x2,:)-A(y3,x3,:)+A(y1,x1,:))-...
(A(y8,x8,:)-A(y6,x6,:)-A(y7,x7,:)+A(y5,x5,:));
elseif haar(1) == 3 && haar(2) == 1
%(3, 1)矩形模板
% 1 ____2____3____4
% |_白_|_黑_|_白_|
% 5 6 7 8
% (3,1)的特征值f=(7-3-6+2)-(6-2-5+1)-(8-4-7+3)
x_lu = haar(3); y_lu = haar(4);%(3, 1)矩形模板左上角坐标
x_rd = haar(5); y_rd = haar(6);%(3, 1)矩形模板右下角坐标
x1 = x_lu; y1 = y_lu; % 位置坐标1
x8 = x_rd+1; y8 = y_rd+1; % 位置坐标8
x2 = x1+(x8-x1)/3; y2 = y1; % 位置坐标2
x3 = x1+(x8-x1)*2/3; y3 = y1; % 位置坐标3
x4 = x8; y4 = y1; % 位置坐标4
x5 = x1; y5 = y8; % 位置坐标5
x6 = x2; y6 = y8; % 位置坐标6
x7 = x3; y7 = y8; % 位置坐标7
f = (A(y7,x7,:)-A(y3,x3,:)-A(y6,x6,:)+A(y2,x2,:))-... % 特征值计算
(A(y6,x6,:)-A(y2,x2,:)-A(y5,x5,:)+A(y1,x1,:))-...
(A(y8,x8,:)-A(y4,x4,:)-A(y7,x7,:)+A(y3,x3,:));
elseif haar(1) == 2 && haar(2) == 2
%(2,2)矩形模板
% 1 ____2____3
% |_白_|_黑_|
% 4 5 6
% |_黑_|_白_|
% 7 8 9
% (2, 2)的特征值f=(6-3-5+2)+(8-5-7+4)-(5-2-4+1)-(9-6-8+5)
x_lu = haar(3); y_lu = haar(4); %(2, 2)矩形模板左上角坐标
x_rd = haar(5); y_rd = haar(6); %(2, 2)矩形模板右下角坐标
x1 = x_lu; y1 = y_lu; % 位置坐标1
x9 = x_rd+1; y9 = y_rd+1; % 位置坐标9
x2 = (x1+x9)/2; y2 = y1; % 位置坐标2
x3 = x9; y3 = y1; % 位置坐标3
x4 = x1; y4 = (y1+y9)/2; % 位置坐标4
x5 = x2; y5 = y4; % 位置坐标5
x6 = x9; y6 = y4; % 位置坐标6
x7 = x1; y7 = y9; % 位置坐标7
x8 = x2; y8 = y9; % 位置坐标8
f = (A(y6,x6,:)-A(y3,x3,:)-A(y5,x5,:)+A(y2,x2,:))+... % 特征值计算
(A(y8,x8,:)-A(y5,x5,:)-A(y7,x7,:)+A(y4,x4,:))-...
(A(y5,x5,:)-A(y2,x2,:)-A(y4,x4,:)+A(y1,x1,:))-...
(A(y9,x9,:)-A(y6,x6,:)-A(y8,x8,:)+A(y5,x5,:));
end
F(:, 1) = f(1, 1, :); % 特征值由3维数组转换为2维数组