动态目标框定

说明

在前文的运动目标分割基础上,此文将运动目标标定出来。主要是实现对人和车的认定。

实验思路

想要得到人,所以不需要在乎内部细节,而是要得到人的轮廓。那么,首先需要把人与车的轮廓尽可能呈现出来且各自连为一体,中间尽量没有孔洞。其次,找出人与车的区别。最后,根据两者区别框定人。

具体操作

获取轮廓得到带框定图像,先通过中值滤波消去部分噪点,再通过膨胀实现区域连通;
调用regionprops函数得到连通域边界的属性;
根据所得属性寻找人与车连通域的区别,发现主要在于人所占面积范围为1500-3500px,且其最小矩形长大于宽;
用以上区别来限制框定范围。

核心代码

for nn=41:500
    filename = sprintf('待框定/dkd%04d.jpg',nn); 
    I = imread(filename);
    BW = im2bw(I, graythresh(I));
    [L,num]=bwlabel(BW,8);
    STATS = regionprops(BW,'basic');      %获取轮廓信息,Area、Centroid、BoundingBox
    [B,L] = bwboundaries(BW,'noholes');  %寻找边缘  
    imshow(label2rgb(L, @jet, [.5 .5 .5]))
    hold on
    for k = 1:length(B)
        boundary = B{k};
        plot(boundary(:,2), boundary(:,1), 'w', 'LineWidth', 2)  %框轮廓
        for i=1:num                          %限定人的轮廓的条件
         if((STATS(i).Area>1500)&&(STATS(i).Area<3500)&&STATS(i).BoundingBox(4)>STATS(i).BoundingBox(3))
                                               %矩形框定人
                rectangle('Position',STATS(i).BoundingBox,'Curvature',[0,0],'LineWidth',2,'EdgeColor','r');
                                               %text命令
                text(STATS(i).Centroid(1),STATS(i).Centroid(2),'people','Color','black');
            end
        end
                                               %保存
        saveas(1,['kd',sprintf('%04d',nn),'.jpg']);
    end
end

实验结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值