【目标检测】基于matlab的运动目标检测系统【源码93期】

一、简介

基于matlab的运动目标检测系统,在MATLAB中实现运动目标检测通常涉及对视频序列中的连续帧进行处理,以识别和提取出移动的目标。下面简要介绍几种常用的算法及其在MATLAB中的实现方法。

帧间差分法原理:基于连续视频帧之间的差异来检测运动物体。如果场景中没有运动目标,则连续帧之间的差异很小;而当有运动目标时,连续帧之间会有明显的差异。

混合高斯模型原理:利用统计方法建立背景模型,通过比较当前像素点与背景模型的匹配程度来检测运动目标。

ViBe算法原理:基于像素点邻域的背景建模方法,通过比较当前像素点与其邻域像素点的相似性来检测运动目标。

二、部分源码

function pushbutton2_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
videoName = get(handles.edit1, 'String');
videoSource = vision.VideoFileReader(videoName,...
    'ImageColorSpace', 'RGB', 'VideoOutputDataType', 'uint8');
videoInfo = info(videoSource);
videoRate = videoInfo.VideoFrameRate;
waitTime = 1.0/videoRate;
frame_last = rgb2gray(step(videoSource));
count = 1
global exit_flag;
global pause_flag;
exit_flag = false;
pause_flag = false;

while ~isDone(videoSource) && ~exit_flag
    if pause_flag
        uiwait(handles.figure1);
    end
    frame = step(videoSource);
    frame_now = rgb2gray(frame);
    frame_now = medfilt2(frame_now);
    frame_diff = abs(frame_now - frame_last);
    fgMask = imbinarize(frame_diff);
    fgMask = imopen(fgMask, strel('rectangle', [3, 3]));
    fgMask = imfill(fgMask, 'holes');
    frame_last = frame_now;
    axes(handles.axes1);
    imshow(frame);
    axes(handles.axes2);
    imshow(fgMask);
    pause(waitTime - 0.02);
    count = count + 1
end
release(videoSource);


% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton3 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global exit_flag;
exit_flag = true;


% --- Executes on button press in pushbutton4.
function pushbutton4_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton4 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global pause_flag;
pause_flag = true;
 

三、运行结果

四、matlab版本

MATLAB R2019a

五、学习与交流

文中不足之处请大家多多指教,学习与交流可以联系企鹅:3752243968
文中部分源码仅供参考,若需要全部代码可以私信

  • 24
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值