tld中的bb_overlap

本人偏爱matlab,因此将tld代码中的计算块之间的重叠率bb_overlap.cpp 用matlab的形式写了一下,不过作者的cpp文件中很全面,包含3种情况,这里只是第二种情况

说明一下,bb1和bb2这两个框的形式都是[x y w h]' 

其中bb1有n1列,代表有n1个框

bb2有n2列,代表有n2个框

function out = bb_overlap_m(bb1,bb2)
bb1=bb1';
[~,n1]=size(bb1);
[~,n2]=size(bb2);
out=zeros(n1,n2);
area1=zeros(1,n1);
area2=zeros(1,n2);
%%
for i=1:n1
    area1(1,i)=bb1(3,i)*bb1(4,i);
end

for i=1:n2
    area2(1,i)=bb2(3,i)*bb2(4,i);
end
%%
bb1(3,:)=bb1(3,:)+bb1(1,:)-1;
bb1(4,:)=bb1(4,:)+bb1(2,:)-1;
bb2(3,:)=bb2(3,:)+bb2(1,:)-1;
bb2(4,:)=bb2(4,:)+bb2(2,:)-1;

%%
for i=1:n1
    for j=1:n2
        if bb1(1,i)>bb2(3,j)|| bb1(2,i)>bb2(4,j) || bb1(3,i)<bb2(1,j)|| bb1(4,i)<bb2(2,j)
            out(i,j)=0;
            continue;
        end
        

        colInt=min(bb1(3,i),bb2(3,j))-max(bb1(1,i),bb2(1,j))+1;
        rowInt=min(bb1(4,i),bb2(4,j))-max(bb1(2,i),bb2(2,j))+1;
        insec=colInt*rowInt;
        out(i,j)=insec/(area1(1,i)+area2(1,j)-insec);
    end
end
end
   


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值