www.gusucode.com > 个用于图像标定的算法matlab源码程序 > code16/lk20_common/hessian_sub.m

    function H = hessian_sub(VI_dW_dp, N_p, w, sub_coords)
% HESSIAN_SUB - Compute Hessian on blocks
%   H = HESSIAN_SUB(VI_DW_DP, N_P, W, SUB_COORDS)
  
% Iain Matthews, Ralph Gross,
% Carnegie Mellon University, Pittsburgh
  
if nargin<4 error('Not enough input arguments'); end
  
H = zeros(N_p, N_p);
for i=1:N_p
  h1     = VI_dW_dp(:,((i-1)*w)+1:((i-1)*w)+w);
  h1_sub = h1(sub_coords(2):sub_coords(2)+sub_coords(3), sub_coords(1):sub_coords(1)+sub_coords(4));
  for j=1:N_p
    h2     = VI_dW_dp(:,((j-1)*w)+1:((j-1)*w)+w);
    h2_sub = h2(sub_coords(2):sub_coords(2)+sub_coords(3), sub_coords(1):sub_coords(1)+sub_coords(4));
    H(j, i) = sum(sum((h1_sub .* h2_sub)));
  end
end