数字图像处理实例,用matlab实现基于视频的车流量统计系统。
y = step(hcsc, image); % 将彩色图像转换成灰度图像
% 采用自动白平衡算法去除灰度突变
y = y-mean(y(:));
fg_image = step(hfdet, y); % 检验背景
% 采用数学形态学,在前景图像中检测变化的联通图像块区域的面积
[area, bbox] = step(hblob, fg_image);
image_out = image;
image_out(22:23,:,:) = 255; % 仅对经过白线后的车辆进行计数
image_out(1:15,1:30,:) = 0; % 将背景置为黑色
Idx = bbox(:,2) > line_row; %选择感兴趣区域.
% 当在感兴趣区域中,联通图像块的比例占整个变化区域的40%以上时,便认为是车辆 ratio = zeros(length(Idx),1);
ratio(Idx) = single(area(Idx,1))./single(bbox(Idx,3).*bbox(Idx,4));
ratiob = ratio > 0.4;
count = int32(sum(ratiob)); % 车辆的数量
bbox(~ratiob,:) = int32(-1);
% 将检测出的车辆圈画出来
image_out = step(hshapeins, image_out, bbox);
% 显示检测汽车的数量
image_out = step(htextins, image_out, count);
step(hVideoOrig, image); % 原始视频
step(hVideoFg, fg_image); % 前景
step(hVideoRes, image_out); % 用方框勾画检测出的车辆
end
%关闭视频文件
release(hvfr);