INTERSECTBOXES Intersection of two bounding boxes. RES = intersectBoxes(BOX1, BOX2) BOX1 = [XMIN1 XMAX1 YMIN1 YMAX1] BOX2 = [XMIN2 XMAX2 YMIN2 YMAX2] RES = intersectBoxes(BOX1,BOX2) = [XMIN3 XMAX3 YMIN3 YMAX3]
0001 function box = intersectBoxes(box1, box2) 0002 %INTERSECTBOXES Intersection of two bounding boxes. 0003 % 0004 % RES = intersectBoxes(BOX1, BOX2) 0005 % BOX1 = [XMIN1 XMAX1 YMIN1 YMAX1] 0006 % BOX2 = [XMIN2 XMAX2 YMIN2 YMAX2] 0007 % RES = intersectBoxes(BOX1,BOX2) = [XMIN3 XMAX3 YMIN3 YMAX3] 0008 0009 % Example 0010 % box1 = [5 20 5 30]; 0011 % box2 = [0 15 0 15]; 0012 % res=intersectBoxes(box1, box2) 0013 % res = 0014 % 5 15 5 15 0015 % 0016 % See also 0017 % boxes2d, drawBox, mergeBoxes 0018 % 0019 0020 % ------ 0021 % Author: David Legland 0022 % E-mail: david.legland@inrae.fr 0023 % Created: 2010-07-26, using Matlab 7.9.0.529 (R2009b) 0024 % Copyright 2010-2024 INRA - Cepia Software Platform 0025 0026 % unify sizes of data 0027 if size(box1,1) == 1 0028 box1 = repmat(box1, size(box2,1), 1); 0029 elseif size(box2, 1) == 1 0030 box2 = repmat(box2, size(box1,1), 1); 0031 elseif size(box1,1) ~= size(box2,1) 0032 error('Bad size for inputs'); 0033 end 0034 0035 % compute extreme coords 0036 mini = min(box1(:,[2 4]), box2(:,[2 4])); 0037 maxi = max(box1(:,[1 3]), box2(:,[1 3])); 0038 0039 % concatenate result into a new box structure 0040 box = [maxi(:,1) mini(:,1) maxi(:,2) mini(:,2)];