sustaining_gazes/matlab_version/bounding_box_mapping/learn_mapping.m

61 lines
1.6 KiB
Matlab

% load('ocv.mat')
% Move into Matlab space
% bboxes = bboxes + 1;
load('matlab.mat')
% Find the actual bboxes
bboxes_detector = bboxes(:,3:6);
% add x offset
bboxes_detector(:,1) = bboxes(:,1) + bboxes_detector(:,1);
% add y offset
bboxes_detector(:,2) = bboxes(:,2) + bboxes_detector(:,2);
non_detected = bboxes(:,3) == 1;
% Find the width and height mappings
widths_gt = (max(gt_labels(:,:,1)') - min(gt_labels(:,:,1)'))';
widths_det = bboxes_detector(:,3);
bad_det = abs(1 - widths_gt ./ widths_det) > 0.5;
non_detected = non_detected | bad_det;
% if the width is quite different from detection then it failed
bboxes_detector = bboxes_detector(~non_detected,:);
gt_labels = gt_labels(~non_detected,:,:);
dets = dets(~non_detected,:);
%% some visualisations
% a = 1;
% plot(gt_labels(a,:,1), gt_labels(a,:,2), '.r');
% hold on;
% bbox = bboxes_detector(a,:);
% % bbox(2) = -bbox(2);
% rectangle('Position', bbox);
% hold off;
% axis equal;
% Want to find out what scaling and translation would lead to the smallest
% RMSE error between initialised landmarks and gt landmarks TODO
% Find the width and height mappings
widths_gt = (max(gt_labels(:,:,1)') - min(gt_labels(:,:,1)'))';
heights_gt = (max(gt_labels(:,:,2)') - min(gt_labels(:,:,2)'))';
widths_det = bboxes_detector(:,3);
heights_det = bboxes_detector(:,4);
s_width = widths_det \ widths_gt;
s_height = heights_det \ heights_gt;
tx_gt = min(gt_labels(:,:,1)')';
ty_gt = min(gt_labels(:,:,2)')';
tx_det = bboxes_detector(:,1);
ty_det = bboxes_detector(:,2);
s_tx = mean((tx_gt - tx_det) ./ widths_det);
s_ty = mean((ty_gt - ty_det) ./ heights_det);