Extract the corners of an obstacle contour (false detection removal).
[Xs,Ys,Ns] = NL_V_ContourCornersFilt(X,Y,D,N,Lc,Tc,Tg,Dt)
X-coordinates of corners.
Y-coordinates of corners.
Direction vector.
Length vector.
Correlation mode.
Correlation threshold.
Gradient threshold.
Minimum distance between two corners.
X-coordinate of corners.
Y-coordinate of corners.
Length vector.
NL_V_ContourCornersFilt extracts the corners of the obstacle contour defined by the coordinates of the corner [X,Y] (see NL_V_ContourCorners) and removes false detections in respect with the two thresholds and
. D gives the direction vector ([1 2 3 4 5 6 7 8]) of each corner found in each object. N provides the numbers of corners for each object. Lc represents the correlation mode, e.g. the kernel width: 1:+x+, 2:++x++ and 3:+++x+++. Dt is the minimum distance between two corners. After a false detection scheme, real corners coordinates are stored in
.
finally provides the number of corners for each obstacle.
dt=getdate(); seed=dt(10); rand('seed',seed);//initialization of the random values generator no=4;//quantity of obstacles (rectangle) L=1000;//squared area side hm=100;//minimal height hM=250;//maximal height wm=100;//minimal width wM=250;//maximal width Al=[0 %pi/2 %pi -%pi/2];//available angles for obstacles [Xs,Ys,X,Y,H,W,A]=NL_V_RectanglesCorners(no,L,hm,hM,wm,wM);//generation of obstacles [P]=NL_V_PotentialRectangles(X,Y,H,W,A,L);//generation of obstacle matrix z=10;//zoom factor o=2;// 1=mean, 2=max, 3=min, 4=median Pz=NL_V_MRA(P,z,o);//scale modification [Pzx,Pzy]=size(Pz);//image size w1=1;//window index w2=2;//window index scf(w1); clf(w1); grayplot(1:Pzx,1:Pzy,Pz);//graph visualization xset("colormap",graycolormap(128)); scf(w2); clf(w2); [PEz]=NL_V_Erosion(Pz);//contour performance Cont=Pz-PEz;//contour 1 [Contx,Conty]=size(Cont);//image size grayplot(1:Contx,1:Conty,Cont);//graph visualization xset("colormap",graycolormap(128)); [x,y,direction,n]=NL_V_ContourCorners(Cont);//Corners detection lc=2;//correlation mode DT=3;//minimum distance between two corners Tcorel=1;//threshold Tgrad=1;//threshold [xs,ys,ns]=NL_V_ContourCornersFilt(x,y,direction,n,lc,Tcorel,Tgrad,DT)//application of NL_V_ContourCornersFilt | ![]() | ![]() |