资源简介

通过MATLAB创建系统对象,用于读入待处理视频,用于色彩空间转换、检测出包含汽车运动的图像块、用高斯混合模型检测背景、对检测出的运动车辆进行框画、标注检测到车辆的个数用于显示结果。目标跟踪方法对车辆进行定位,确定了车辆的位置后, 就可以根据位置信息进一步获取车辆的颜色信息。

资源截图

代码片段和文件信息

clear;close all;
SE = strel(‘rectangle‘[10 10]); %注意:结构元素必须具有适当的大小
BW1=imread(‘test5.jpg‘);
subplot(221);imshow(BW1);title(‘原图‘);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%添加
GRAY=rgb2gray(BW1); %灰度图像
h=fspecial(‘average‘9);
GRAY=uint8(round(filter2(hGRAY))); %进行均值滤波
subplot(222);imshow(GRAY);title(‘均值滤波‘);
GRAY = imcrop(GRAY[10 20 542 355]);   %裁剪
GRAY=double(GRAY); %转换为double类型
[GxGy]=gradient(GRAY); % 计算梯度
G=sqrt(Gx.*Gx+Gy.*Gy); % 水平垂直差分
J=GRAY; 
K=find(G<2); %指定灰度级
J(K)=0;
subplot(223);imshow(J);title(‘锐化‘);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
BW2=imdilate(JSE);%膨胀
BW3 = imfill(BW2‘holes‘); %填充
BW4=imerode(BW3SE);%腐蚀
I=im2bw(BW4);
subplot(224);imshow(I);title(‘目标块‘);
%====形态特征值计算===%
A=bwarea(I); % 计算目标的面积
I1=edge(I‘canny‘0.7);
[L num]=bwlabel(I18);%存放提取的目标矩阵和数目
STATS = regionprops(L‘BoundingBox‘);
% 存放经过筛选以后得到的所有矩形块  
n = 1; 
wh=zeros(1num); 
for i=1:num
    box = STATS(i).BoundingBox;  %图像的长宽
    x = box(1);    %矩形坐标x  
    y = box(2);    %矩形坐标y  
    w = box(3);    %矩形宽度w  
    h = box(4);    %矩形高度h 
    wh(1i)=w*h;
    ux = ceil(x);  %取整
    uy = ceil(y);  
    if ux > 1  
         ux = ux - 1;  
     end  
     if uy > 1  
         uy = uy - 1;  
     end  
     %result(n:) = [ux uy w h];
         R=zeros(hw);
         G=zeros(hw);
         B=zeros(hw);
        for j=1:w
            for ii=1:h
                R(iij)=BW1(ii+uy-1j+ux-11);
                G(iij)=BW1(ii+uy-1j+ux-12);
                B(iij)=BW1(ii+uy-1j+ux-13);
            end
        end
       % r(1n)=mean(mean(R))
       % g(1n)=mean(mean(G))
       % b(1n)=mean(mean(B))
       % n = n+1;
        r(1i)=mean(mean(R));
        g(1i)=mean(mean(G));
        b(1i)=mean(mean(B));
        if(r(1i)>130&&g(1i)<130&&b(1i)<130)
            disp(‘检测出车辆是红色‘)
        elseif(r(1i)<130&&g(1i)>130&&b(1i)<130)
            disp(‘检测出车辆是绿色‘)
        elseif(r(1i)<130&&g(1i)<130&&b(1i)>130)
            disp(‘检测出车辆是蓝色‘)
        elseif(r(1i)<80&&g(1i)<80&&b(1i)<80)
            disp(‘检测出车辆是黑色‘)
        elseif(r(1i)>170&&g(1i)>170&&b(1i)>170)
            disp(‘检测出车辆是白色‘)
        else
            disp(‘检测出车辆是其他色‘)
        end
end
status_orig = regionprops(L ‘basic‘);% 判断目标个数
allArea=[status_orig.Area];
disp(‘检测出车辆数目是‘);disp(num);

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        2529  2015-05-18 11:34  matlab\cunt.m
     文件        2896  2015-05-18 10:41  matlab\example6.m
     文件       87703  2011-05-29 18:31  matlab\test5.JPG
     文件      208896  2005-04-04 13:17  matlab\viptraffic.avi
     目录           0  2015-05-18 11:43  matlab\

评论

共有 条评论