Non maximal suppression in object detection
4 views (last 30 days)
Show older comments
Hi, what is the difference between y2 = boxes(:,4) and s = boxes(:,end) in the following nms code?
function top = nms(boxes, overlap) % top = nms_fast(boxes, overlap) % Non-maximum suppression. (FAST VERSION) % Greedily select high-scoring detections and skip detections % that are significantly covered by a previously selected % detection. % NOTE: This is adapted from Pedro Felzenszwalb's version (nms.m), % but an inner loop has been eliminated to significantly speed it % up in the case of a large number of boxes % Tomasz Malisiewicz (<mailto:tomasz@cmu.edu tomasz@cmu.edu>)
if isempty(boxes) top = []; return; end
x1 = boxes(:,1); y1 = boxes(:,2); x2 = boxes(:,3); y2 = boxes(:,4); s = boxes(:,end);
area = (x2-x1+1) .* (y2-y1+1); [vals, I] = sort(s);
pick = s*0; counter = 1; while ~isempty(I)
last = length(I);
i = I(last);
pick(counter) = i;
counter = counter + 1;
xx1 = max(x1(i), x1(I(1:last-1)));
yy1 = max(y1(i), y1(I(1:last-1)));
xx2 = min(x2(i), x2(I(1:last-1)));
yy2 = min(y2(i), y2(I(1:last-1)));
w = max(0.0, xx2-xx1+1);
h = max(0.0, yy2-yy1+1);
o = w.*h ./ area(I(1:last-1));
I([last; find(o>overlap)]) = [];
end
pick = pick(1:(counter-1)); top = boxes(pick,:);
Answers (0)
See Also
Categories
Find more on Dimensionality Reduction and Feature Extraction in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!