您现在的位置:首页 >> 图像处理 >> 内容

基于形态学处理的车辆跟踪和计数matlab仿真

时间:2022/12/30 18:12:27 点击:

  核心提示:A164,包括程序操作录像...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/Y52blZlt

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览




3.算法概述

        当今科技飞速发展,带来了智能交通的空前发达,也为经济可持续发展做出一定贡献。交通运输在一个国家的经济社会发展中起着助推器的作用。交通运输的监控与管理智能化也变得尤为重要。基于视频的车辆检测作为智能交通系统的基石, 具有直观性、大范围检测、安装和维护方便等优势,成为采集交通信息技术的有力工具。因而视频车辆检测研究具有非常重要的意义。

       形态学是图像处理中应用最为广泛的技术之一,主要用于从图像中提取对表达和描绘区域形状有意义的图像分量,使后续的识别工作能够抓住目标对象最为本质的形状特征,如边界和连通区域等。同时像细化、像素化和修剪毛刺等技术也常应用于图像的预处理和后处理中,成为图像增强技术的有力补充。形态学的基本思想是利用一种特殊的结构元来测量或提取输入图像中相应的形状或特征,以便进一步进行图像分析和目标识别。

4.部分源码

.............................................................

th=zeros(1,(length(imageFiles)-1)/4);

se1=[1 1 1];

se2=ones(9);

color=[1 0 0;0 1 0;0 0 1;1 0 1;0 1 1;1 1 0;1 1 1];

a=0;

q=0;

for z=1:(length(imageFiles)-1)/4:length(imageFiles)-1

    figure,

    %%%%%%%%%%%%%%%%%%%%%%%%%%求取阈值%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    for k = z:(length(imageFiles)-1)/4+z-1

        fileName = imageFiles(k).name;      % 当前文件名,注意这里不含路径信息

        I = rgb2gray(imread( [folderPath, fileName] ))- GrayRoad; % 将图像数据读入矩阵

        th(k-z+1)=graythresh(I);

    end

    th1=sum(th)/length(th)-0.045;

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    for k = z:(length(imageFiles)-1)/4+z-1

        fileName = imageFiles(k).name;      % 当前文件名,注意这里不含路径信息

        I0 = imread([folderPath, fileName]);

        % J=midfilter(I);

        I = rgb2gray(I0)- GrayRoad; % 将图像数据读入矩阵

        I=im2bw(I,th1);                 %分割

        J=midfilter(I);

        I=imclose(J,se2);               %闭运算

        I=imopen(I,se1);                %开运算

        [Car,num,Rect] = CarProc(I);   %标记、计数、求坐标

        subplot(m,n,k-z+1);imshow(I0,[]); title(num2str(k))

        midCar=Car;

        if k~=1

            for v=1:num

                [r,c]=size(Car);

                Car1=Car;

                for x=1:r

                    for y=1:c

                        if Car1(x,y)~=v

                            Car1(x,y)=0;

                        end

                    end

                end

                J=Car1.*Car0;

                if J==0

                    [r1,c1]=find(Car1~=0);

                    a=a+1;

                    for k1=1:length(r1)

                        midCar(r1(k1),c1(k1))=a;

                    end

                      q=a;

                      if (q>7)&&(q<=14)

                          q=q-7;

                      end

                       if q>14

                          q=q-14;

                      end

                      rectangle('Position',Rect(v,:),'EdgeColor',color(q,:),'LineWidth',1);

                    text(Rect(v,1),Rect(v,2),num2str(a),'color','r');

                else

                    [r1,c1]=find(Car1~=0);

                    [c2,d2]=find(Car1.*Car0~=0);

                    for k1=1:length(r1)

                        midCar(r1(k1),c1(k1))=Car0(c2(1),d2(1));

                    end  

                    g=Car0(c2(1),d2(1));

                    if (Car0(c2(1),d2(1))>7)&&(Car0(c2(1),d2(1))<=14)

                        g=Car0(c2(1),d2(1))-7;

                    end

                    if Car0(c2(1),d2(1))>14

                        g=Car0(c2(1),d2(1))-14;

                    end

                        rectangle('Position',Rect(v,:),'EdgeColor',color(g,:),'LineWidth',1);

                    text(Rect(v,1),Rect(v,2),num2str(Car0(c2(1),d2(1))),'color','r');

                    end

            end

....................................................

A164

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168