关于Non-Maximum Supression

Non-Maximum Supression 是一种局部最大值搜索算法,在CV的很多任务中都有广泛的应用, 如跟踪、数据挖掘、3D重建、目标识别等。
参考:Alexander Neubeck的论文:Efficient Non-Maximum Suppression。

1-D NMS

2n+1邻域: 当前点n+i的2n+1邻域是指是在区间[i,2n+i] 上的2n+1个离散点, 也就是该点和该点左右侧各n个点构成。
给定一个长度为w 的行向量y,NMS 就是以2n+1邻域搜索局部最大值. 下面以一维为例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function maximumat =nms(y,n)
i=1;
maximumat=[];
w=length(y);
while 2*n +i<w
if y(i+n)>max(y(n+i+1:2*n+i))
if y(i+n)>max(y(i:n+i-1))
maximumat = [maximumat i+n];
end
else
i=i+1;
while 2*n +i<w && y(i+n)<max(y(n+i+1:i+2*n))
i=i+1;
end
if 2*n +i<w
maximumat = [maximumat i+n];
end
end
i=i+n;
end
end

1、如果一个点比其左右两侧n点的值都大,即得到局部最大值,7-10行。
2、在处理过程中,如果未得到局部最大值,可以知道i + n 点比左侧的i到i+n-1点小,那么在下一次处理时,i = i + n,20行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
% eg1
x= 50:0.1:200;
y= sin(x)./x;
% eg2
x=1:200;
y=rand(1,200);
n=2;
maximumat =nms(y,n);
plot(x,y,'-bo');
hold on
plot(x(maximumat),y(maximumat),'-rs', 'MarkerFaceColor','r',...
'MarkerSize',8);
legend('Original data','NMS');
title(sprintf('NMS:%d(2*%d+1)-Neighborhood ',2*n+1,n));


2-D NMS

2D邻域为以当前点为中心的(2n+1)×(2n+1)区域。

NMS 在目标检测中应用


本作品采用知识共享署名 2.5 中国大陆许可协议进行许可,欢迎转载,但转载请注明来自 Sunshine 并保持转载后文章内容的完整。本人保留所有版权相关权利。

本文链接:http://gaobb.github.io/2015/06/07/关于-Non-Maximum-Suppression/

坚持原创技术分享,您的支持将鼓励我继续创作!

热评文章