【跌倒检测】居家老人跌倒检测及预警系统【含GUI Matlab源码 13113期】

💥💥💥💥💥💥💥💥💞💞💞💞💞💞💞💞💞Matlab武动乾坤博客之家💞💞💞💞💞💞💞💞💞💥💥💥💥💥💥💥💥
🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀
在这里插入图片描述
🔊博主简介:985研究生,Matlab领域科研开发者;

🚅座右铭:行百里者,半于九十。

🏆代码获取方式:
优快云 Matlab武动乾坤—代码获取方式

更多Matlab图像处理仿真内容点击👇
Matlab图像处理(进阶版)

⛳️关注优快云 Matlab武动乾坤,更多资源等你来!!

⛄一、跌倒检测

1 跌倒行为分析
尽管跌倒的概念是常识,但是很难准确去描述跌倒,因此很难指定跌倒的检测手段。1987年,Kellogg预防老年人跌倒国际工作组将跌倒定义为“无意倒地,或不是由于遭受猛烈打击、失去意识、突然出现中风或癫痫发作等原因造成的突然处于较低水平的物体上”[5]。这一定义在许多跌倒检测的研究中已经被广泛使用。

跌倒是瞬间动作,因为人体摔倒时有一个快速跌落的过程,人体的中心点会从一个较高的位置快速下降到地面或者接近地面的高度,人体的高度、加速度等特征数据会快速的改变。因此通常研究人员会将高度、加速度、角速度等数据信息作为检测特征从而应用到其研究当中去。

2 跌倒检测指标
跌倒检测指标指的是在跌倒检测算法中选择用来区分跌倒和非跌倒活动的变量。用于定义跌倒检测指标的运动学度量通常分为两类:平移度量和旋转度量。在平移度量中,身体躯干的速度和加速度是跌倒检测系统研究中最为被广泛使用的两个检测指标。另外,头部的加速度和上臂的加速度也用于定义跌倒检测指标。而通过旋转度量定义的跌倒检测指标则包括人体胸部的角速度、腰部和躯干的加速度以及躯干和大腿的节段方向。

在现有的跌倒检测研究中,大多数研究者都使用一种运动学方法来定义跌倒检测的数据指标,只有少量的研究使用到的运动学方法不止一种。特别是,Nyan等人[6]实现了用与逻辑来链接选定的运动学测量值,只有当所有选定的运动学测量值都超出预定义的阈值时,才认为可以检测到跌倒。Hu和Qu[7]则是使用躯干的垂直速度和小腿前部速度的线性组合作为跌倒检测指标。线性组合被认为是使跌倒检测实施变得容易的最简单的一种数据组合形式。结果表明,与使用单一运动学方法相比,这种组合方法改善了跌倒检测性能,提高了系统的准确性。

从不同的实现方法来看,跌倒检测技术大致分为以下三种:计算机视觉、场景传感器和可穿戴式设备,接下来将分别讨论每一类方法的系统原理以及各自的特点。

3 基于计算机视觉的跌倒检测技术
3.1 系统原理

基于计算机视觉的方法主要是通过安装在用户生活环境中的图像或视频采集设备来对人体的运动行为进行数据采集,然后通过图像或视频处理来进行人体行为识别,从而判断是否发生了跌倒事件。

Chong等人[8]提出一种结合了超像素聚类的Horprasert算法进行背景建模和背景分割的方法,利用边界框和近似椭圆的运动量化对所提出的方法提取的前景进行了两种不同的跌倒检测方法测试,结果表明,在改善了原始的Horprasert分割处理速度的同时还降低了复杂度。魏振钢[9]等人提出一种基于计算机视觉的包含一个两级检测过程的人体跌倒检测算法,通过形态学操作对提取的前景块绘制矩形边界,根据矩形宽高比从中筛选出所有可能是跌倒的行为。

3.2 系统特点
基于计算机视觉的方法最大的特点就是设备安装简单,视觉直观。但是由于二维成像需要统一的背景,会受到难以将主题与背景分离的困扰,因此它们要么性能差,要么需要具有静态背景的固定式摄像机进行背景替换,另外视频监控设备也会受到室内环境的约束,存在一定的监控死角,还存在泄露个人隐私等问题。因此,越来越多的趋势是使用深度相机,最常见的是提取3D骨骼数据,并跟踪头部和臀部等身体部位,通过人体部位跟踪或关节偏移量、关节定位可自动获取骨骼数据,这样能够有效地解决传统摄像头的缺点,极大的保护用户的个人隐私不被泄露,同时深度图像数据的获取相对不容易受到室内环境的干扰。Bian等人[10]开发了一个两级系统,先从分割出的身体部位通过插值提取出人体关节的三维坐标,再基于提取的关节轨迹随时间变化的位置,使用SVM分类器检测关节的位置。这种方法的局限性在于高度依赖于头部位置和预定义的阈值。杨张振[11]提出一种基于Kinect体感设备对人体摔倒行为进行判断识别的方法,通过设置在人体活动范围里的Kinect来获取人体骨骼节点的图像和位置信息,以两肩的三维坐标为参考目标,结合肩膀的相对位移变化和位移向量的方向夹角对跌倒事件进行综合判断。Kwolek等人[12]所使用的系统还合并了微软的Kinect和加速度计,其中模糊系统合并传感器数据以确定是否发生了跌倒。

⛄二、部分源代码

function varargout = GUI(varargin)
% GUI MATLAB code for GUI.fig
% GUI, by itself, creates a new GUI or raises the existing
% singleton*.
%
% H = GUI returns the handle to a new GUI or the handle to
% the existing singleton*.
%
% GUI(‘CALLBACK’,hObject,eventData,handles,…) calls the local
% function named CALLBACK in GUI.M with the given input arguments.
%
% GUI(‘Property’,‘Value’,…) creates a new GUI or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before GUI_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to GUI_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE’s Tools menu. Choose “GUI allows only one
% instance to run (singleton)”.
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help GUI

% Last Modified by GUIDE v2.5 02-Mar-2023 11:24:08

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct(‘gui_Name’, mfilename, …
‘gui_Singleton’, gui_Singleton, …
‘gui_OpeningFcn’, @GUI_OpeningFcn, …
‘gui_OutputFcn’, @GUI_OutputFcn, …
‘gui_LayoutFcn’, [] , …
‘gui_Callback’, []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT

% — Executes just before GUI is made visible.
function GUI_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to GUI (see VARARGIN)

% Choose default command line output for GUI
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes GUI wait for user response (see UIRESUME)
% uiwait(handles.figure1);

% — Outputs from this function are returned to the command line.
function varargout = GUI_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;

% — Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
[filename,pathname] = uigetfile(‘*.avi’,‘选择视频’);
handles.filename = filename;
guidata(hObject,handles);

% — Executes on button press in pushbutton2.
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)
global Bili;
A=[];
B=imread(‘46.jpg’);
B=rgb2gray(B);
B=medfilt2(B); %中值滤波
fileName = handles.filename;
obj = VideoReader(fileName); %读取录制的视频
vidFrames=read(obj); %读取所有帧图像
numFrames=get(obj, ‘NumberOfFrames’);%总帧数
for k = 63:250 %帧数循环,人为选取33帧作为背景帧
mov(k).cdata=vidFrames(:,:,:,k);
mov(k).cdata=rgb2gray(mov(k).cdata);
mov(k).cdata=medfilt2(mov(k).cdata);
R=imabsdiff(mov(k).cdata,B);
z=im2bw(R,graythresh®);
z=bwmorph(z,‘erode’,3); % 3次腐蚀处理掉噪点
P = bwmorph(z,‘dilate’,3); %3次膨胀膨胀
P= bwareaopen(P,50);
axes(handles.axes1); imshow(vidFrames(:,:,:,k));title(‘原视频’)
axes(handles.axes2);imshow§;title(‘人体异常行为检测’)
x=sum(P(😃);
s=x/(480640);
if s>=0.03
[m1,n1] = find(P == 1);
%第一级检测,角度
top1= min(m1);%纵向
bottom1= max(m1);
left1= min(n1);%横向
right1= max(n1);
height1=bottom1-top1+1;%纵向高;
width1 = right1-left1+1;%横向宽
rectangle(‘Position’,[left1,top1,width1,height1],‘EdgeColor’,‘r’);
line([left1,right1],[top1,bottom1],‘color’,‘r’,‘LineWidth’,1);%标记对角线
line([left1,right1],[bottom1,top1],‘color’,‘r’,‘LineWidth’,1);
tan=(bottom1-top1)/(right1-left1);
tan=atan(tan);
J=tan
180/pi;
set(handles.edit2,‘string’,J);
%第二级检测,质心高度比Rz

⛄三、运行结果

在这里插入图片描述
在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]郑杨娇子,张上.人体跌倒检测技术研究分类综述[J].长江信息通信. 2021,34(01)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值