位置: IT常识 - 正文

数字图像处理课程设计-疲劳检测系统(数字图像处理课后题答案)

编辑:rootadmin
数字图像处理课程设计-疲劳检测系统 文章目录数字图像处理课程设计-疲劳检测系统前言一、课程设计任务二、设计框图三、准备工作四、任务流程4.1视频预处理4.2图片分割五、结果六、项目总结数字图像处理课程设计-疲劳检测系统前言

推荐整理分享数字图像处理课程设计-疲劳检测系统(数字图像处理课后题答案),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:数字图像处理课程设计题目,数字图像处理课程设计题目,数字图像处理课后题答案,数字图像处理课后题答案,数字图像处理课程设计,数字图像处理课后题答案,数字图像处理课后题答案,数字图像处理课后题答案,内容如对您有帮助,希望把文章链接给更多的朋友!

此系统基于MATLAB设计,核心思想是PERCLOS算法.

参考文章MATLAB疲劳检测系统 - 知乎

需要源码的,私信或者留下邮箱

一、课程设计任务

应用数字图像处理相关知识和技术实现某一应用,如人脸识别、动物识别、水果识别等综合性任务,题目自选。

本文在matlab R2018b开发环境下,实现人脸检测系统。

疲劳检测可以应用于大巴车司机,货车司机疲劳驾驶监测,现在很多情况下大巴车或者货车等司机都由于休息不好,疲劳上路,这就给安全造成了及其大的隐患。如果有一套系统,可以实时接入车辆摄像头,摄像头对准司机,当检测到司机疲劳状态的时候,则提醒后台并且语音提醒,以做出正确决策,避免车祸等悲剧的发生。该系统也可以应用于上课学生专注度分析,进行疲劳预警。

二、设计框图

三、准备工作开发环境:windows 10,matlab R2018b制图软件:visio 2013素材示意:人脸图像/视频 四、任务流程4.1视频预处理首先将彩色视频video.avi读入,将图像分帧。obj = VideoReader(uigetfile('*.avi','选择视频'));%输入视频位置setappdata(0,'obj',obj);%设置全局变量Show_Frames=read(obj,1);%显示第一帧作为封面axes(handles.axes1);imshow(Show_Frames);set(handles.listbox1,'String','分帧开始...');prompt={'输入图片名是几位数:'};defans={'2'};%默认两位数p=inputdlg(prompt,'输入位数',1,defans);numzeros=str2num(p{1}); nz = strcat('%0',num2str(numzeros),'d');numFrames = obj.NumberOfFrames;% 帧的总数for k = 1 :5 % 读取前5帧 numFramesframe = read(obj,k);%读取第几帧id=sprintf(nz,k);imwrite(frame,strcat('video_images/',id,'.jpg'),'jpg');% 保存帧endset(handles.listbox1,'String','分帧结束');

利用MATLAB函数rgb2gray转换成灰度图像。

去除视频黑边,定位有效图像区域。

将结果输出到指定路径images下。

function [Irect, rect] = GetValideImage(Img, flag)% 获取有效图像区域if nargin < 2 flag = 1;end% 灰度化if ndims(Img) == 3 I = rgb2gray(Img);else I = Img;end% 去除视频黑边,定位有效图像区域tol = 1000;sz = size(I);cs = sum(I, 1);c = find(cs > tol);cmin = min(c);cmax = max(c);rect = [cmin 1 cmax-cmin sz(1)];% 图像切割,获取有效区域图像Irect = imcrop(Img, rect);% 显示中间处理过程图像if flag figure; subplot(2, 2, 1); imshow(Img, []); title('原图像'); subplot(2, 2, 2); imshow(I, []); title('灰度图像'); subplot(2, 2, 3); imshow(Img, []); title('有效区域图像标记'); hold on; rectangle('Position', rect, 'EdgeColor', 'r', 'LineWidth', 2); hold off; subplot(2, 2, 4); imshow(Irect, []); title('有效区域图像');end4.2图片分割数字图像处理课程设计-疲劳检测系统(数字图像处理课后题答案)

4.2.1 人脸定位

读入images路径下所有jpg图像。

利用MATLAB函数rgb2hsv将RGB颜色转换为HSV。

% 颜色空间转换hsv = rgb2hsv(Img);h = hsv(:, :, 1);s = hsv(:, :, 2);v = hsv(:, :, 3);% 区域数据范围hsp = [0.01 0.5];ssp = [0.1 0.85];vsp = [0.25 0.85];sz = size(h);根据HSV对肤色定位,提取人脸区域。% 初始化模板mask = zeros(sz);% 肤色定位for i = 1 : sz(1) for j = 1 : sz(2) if h(i, j) > hsp(1) && h(i, j) < hsp(2) && ... s(i, j) > ssp(1) && s(i, j) < ssp(2) && ... v(i, j) > vsp(1) && v(i, j) < vsp(2) mask(i, j) = 1; end endend% 形态学处理mask = logical(mask);mask = imclose(mask, strel('disk', 15));mask = imopen(mask, strel('disk', 15));mask = imfill(mask, 'holes');% 提取人脸区域[L, num] = bwlabel(mask);stats = regionprops(L);Ar = cat(1, stats.Area);[Ar, ind] = sort(Ar, 'descend');bw = mask;bw(L ~= ind(1)) = 0;

4.2.2人眼定位

先对图像预处理,利用MATLAB函数rgb2gray转换成灰度图像。利用函数medfilt2对图像中值滤波,利用灰度积分find进行投影。% 灰度化if ndims(Img) == 3 I = rgb2gray(Img);else I = Img;end% 中值滤波I = medfilt2(I, [5 5]);% 灰度积分投影sz = size(I);[r, c] = find(I > 0);rmin = min(r);rmax = max(r);cs = sum(I, 1);rs = sum(I, 2);[maxcs, indmaxcs] = max(cs);[maxrs, indmaxrs] = max(rs);对人眼区域定位。% 人眼区域定位cstart = max(sz(2)-indmaxcs-35, 8);csend = min(indmaxcs + 15, sz(2)-20);rstart = max(indmaxrs-40, 25);rsend = indmaxrs;rect = [cstart rstart csend-cstart rsend-rstart];裁掉多余的区域。% 人眼区域裁剪Im = imcrop(Img, rect);if flag figure; subplot(2, 2, 1); imshow(Img, []); title('原图像'); subplot(2, 2, 2); imshow(I, []); hold on; rectangle('Position', rect, 'EdgeColor', 'r'); hold off; title('灰度图像'); subplot(2, 2, 3); plot(1:sz(2), cs); title('列投影曲线'); subplot(2, 2, 4); plot(rs, 1:sz(1)); title('行投影曲线');end

4.2.3人眼精确定位

图像预处理,利用MATLAB函数rgb2gray对图像进行灰度化。利用函数graythresh进行二值化。提取图像边缘。% 获取精确人眼区域if nargin < 2 flag = 1;end% 灰度化if ndims(Img) == 3 I = rgb2gray(Img);else I = Img;end% 二值化th = max(graythresh(I)*0.4, 0.1);bw = im2bw(I, th);% 提取边缘bwe = edge(bw, 'canny');% 填孔处理bwd = imfill(bwe, 'holes');bwf = bwd;bwf = imdilate(bwf, strel('square', 3));bwf = imfill(bwf, 'holes');% 去掉边缘噪声[L, num] = bwlabel(bwf);stats = regionprops(L);Ar = cat(1, stats.Area);[Ar, ind] = sort(Ar, 'descend');if num > 2 for j = 3 : num bwf(L == ind(j)) = 0; endend提取定位结果。% 提取定位结果rect1 = stats(ind(1)).BoundingBox;rect2 = stats(ind(2)).BoundingBox;rect1(2) = rect1(2) - 2;rect2(2) = rect2(2) - 2;rect{1} = rect1;rect{2} = rect2;

4.3疲劳检测

利用PERCLOS算法,计算人眼在单位时间内闭合所占比。data = cat(1, Nv.nv);Nmin = min(data);Nmax = max(data);rate = (data-Nmin)./(Nmax-Nmin);set(handles.listbox3,'string',rate)pause(5) %%%%每间隔2s时间处理下一帧图像输出结果, 计算的perclos值与tol做比较判断是否疲劳tol = 0.4; %%%归一化判断标准status = '正常';for i = 1 : N if rate(i) < tol && isequal(status, '正常') status = '疲劳'; start = i; end if rate(i) < tol && isequal(status, '疲劳') && i - start > 1 status = '睡着'; start = i; end if rate(i) < tol && isequal(status, '睡着') && i - start > 2 status = '疲劳'; start = i; end if rate(i) > tol status = '正常'; end Nv(i).status = status;end五、结果

GUI界面

输入视频,分帧处理,分割图像

输出结果 六、项目总结

使用图像预处理技术得到灰度分配较为均匀的图像,然后分别利用水平和垂直灰度积分投影曲线结合人脸的结构特征找到眼睛的位置坐标,实现了准确的眼睛定位,通过perclos技术技术眨眼率,根据先验值得到是否疲劳。完成了疲劳检测系统的设计。

通过本次项目设计,不仅熟练应用了MATLAB的基本函数,也学到了PERCLOS算法。

PERCLOS算法(Percentage of Eyelid Closure Over the Pupil Time的缩写,意为单位时间里眼睛闭合时间所占的百分比)

PERCLOS原理: F=t 3 −t 2 t 4 −t 1 \frac{t~3~-t~2~}{t~4~-t~1~}t 4 −t 1 t 3 −t 2 ​*100%

F是一的话就是睁眼;连续N帧后便可获取关于01之间的序列,然后分析0在该序列中所占比例来描述疲劳状态。

本文链接地址:https://www.jiuchutong.com/zhishi/299185.html 转载请保留说明!

上一篇:React初体验-Hello React的组件化方式-React入门小案例(react+go)

下一篇:HTML+CSS+JS网页设计期末课程大作业 京剧文化水墨风书画(html+css+js网页设计期末作业付源码)

  • 拼多多桌面物流提醒怎么关闭(拼多多桌面物流弹窗怎么关闭)

    拼多多桌面物流提醒怎么关闭(拼多多桌面物流弹窗怎么关闭)

  • oppo reno4和reno3的区别(oppo reno4和reno3哪个性价比高)

    oppo reno4和reno3的区别(oppo reno4和reno3哪个性价比高)

  • 美团付款方式怎么更改(美团付款方式怎么更改支付宝)

    美团付款方式怎么更改(美团付款方式怎么更改支付宝)

  • iphone8plus和iphonese2对比(iphone8plus和iphonese2参数对比)

    iphone8plus和iphonese2对比(iphone8plus和iphonese2参数对比)

  • 腾讯会议可以开摄像头吗(腾讯会议可以开小窗口吗)

    腾讯会议可以开摄像头吗(腾讯会议可以开小窗口吗)

  • qq自动回复算不算火花(qq自动回复算不算回复)

    qq自动回复算不算火花(qq自动回复算不算回复)

  • 微信怎么发几十张照片(微信怎么发几十张照片给某个人)

    微信怎么发几十张照片(微信怎么发几十张照片给某个人)

  • 机顶盒怎么连接到笔记本电脑(机顶盒怎么连接电视)

    机顶盒怎么连接到笔记本电脑(机顶盒怎么连接电视)

  • iphonexr没有指纹锁吗(苹果xr没有指纹识别)

    iphonexr没有指纹锁吗(苹果xr没有指纹识别)

  • ios13.3.1什么时候更新(苹果13.3.1什么时候正式更新)

    ios13.3.1什么时候更新(苹果13.3.1什么时候正式更新)

  • bm37电池是什么机型(电池型号bm3a)

    bm37电池是什么机型(电池型号bm3a)

  • 电脑怎么新建文档(电脑怎么新建文档打字)

    电脑怎么新建文档(电脑怎么新建文档打字)

  • 如何为文档制作目录(如何为文档制作一个封面页)

    如何为文档制作目录(如何为文档制作一个封面页)

  • 运算器能储存信息吗(运算器能储存信号吗)

    运算器能储存信息吗(运算器能储存信号吗)

  • 苹果序列号lla是什么版本(苹果序列号ll是什么版本)

    苹果序列号lla是什么版本(苹果序列号ll是什么版本)

  • win10怎么分盘(win10怎么分盘分配空间)

    win10怎么分盘(win10怎么分盘分配空间)

  • 什么情况下是对方正在输入(什么情况下是对偶)

    什么情况下是对方正在输入(什么情况下是对偶)

  • oppo 新机reno 充电一次需要多长时间(oppo reno 充电)

    oppo 新机reno 充电一次需要多长时间(oppo reno 充电)

  • iphone怎么修改图片格式(iphone怎么修改图片上的文字)

    iphone怎么修改图片格式(iphone怎么修改图片上的文字)

  • bios网卡启动设置在哪(bios中网卡设置)

    bios网卡启动设置在哪(bios中网卡设置)

  • 微信里怎样做电子稿(微信里怎样做电子档发给老师)

    微信里怎样做电子稿(微信里怎样做电子档发给老师)

  • excel如何画线条(excel里面画线条哪里调出来)

    excel如何画线条(excel里面画线条哪里调出来)

  • h1芯片和w1芯片的区别(h1芯片和w1芯片哪个好)

    h1芯片和w1芯片的区别(h1芯片和w1芯片哪个好)

  • vue组成部分:前端后端调用方法传参(实操基础版)(vue中是如何划分的,每个区域的作用是什么)

    vue组成部分:前端后端调用方法传参(实操基础版)(vue中是如何划分的,每个区域的作用是什么)

  • 毕业设计-基于深度学习的医学影像分割(毕业设计基于51单片机多功能电子钟的设计)

    毕业设计-基于深度学习的医学影像分割(毕业设计基于51单片机多功能电子钟的设计)

  • Dedecms移动端网站手机网站的搭建(dedecms建站)

    Dedecms移动端网站手机网站的搭建(dedecms建站)

  • 应收保险公司赔款计入
  • 小规模未开票收入如何填写申报表增值税
  • 开普票需要公对公转账吗
  • 国际货运代理可以开免税吗
  • 支付给外包公司的工资备注怎么写
  • 收入与成本不配合
  • 入账成本会计分录
  • 小企业会计制度科目表
  • 开房屋租金发票需要带什么资料
  • 房地产开发精装房是国家规定吗
  • 不含税劳务报酬怎么交税的
  • 发生检测费用时怎么入账
  • 小规模购买金税盘可以全额抵扣吗
  • 固定资产转为投资性房地产折旧
  • 餐饮 专票
  • 开票软件服务费不交会怎么样
  • 互联网合同要交社保吗
  • 佣金增值税
  • 印花税的计税金额
  • 研发产品样品对我出售账务处理
  • 学校购货合同
  • 企业电子印章申请流程海口
  • 进项税额能抵扣的几种情形
  • 支付机器设备修理费
  • 公司作为二房东怎么给别人开发票
  • 付企业网银年服费怎么付
  • macbook怎么和ipad
  • 印花税不足1元 需要计提吗
  • 管理人员预借差旅费会计分录怎么写
  • 购进材料用于在建工程进项税
  • 违建罚款了还算违建吗
  • 非货币性资产交换和债务重组的区别
  • 目前光学变焦最大支持多少倍
  • 票据行为包括哪4点
  • 经营出租的固定资产折旧计入哪里
  • 增值税按简易计价方式
  • 事业单位在建工程会计账务处理
  • wordpress.org
  • 电子承兑汇票支付流程
  • 公司外部人员的差旅费入什么科目
  • vue中的provide/inject
  • 兼职人员需要
  • 服务费开票税收分类
  • ❤️国庆假期快到了,用python写个倒计时程序,助你熬到假期!❤️
  • 企业所得税会计利润总额计算公式
  • 哪些税种影响当期损益
  • 其他权益工具账面价值
  • 区分好坏
  • 房屋租赁怎么干
  • 企业资金占用费利率
  • 企业应如何合理安排筹资期限的组合方式,优化资金结构
  • 税控盘反写是不是说明税都已经成功申报了
  • 实收资本未实缴是否罚款
  • 股东如何收回投资款
  • 经营范围之外的业务
  • 异地预缴增值税多交了怎么办,可以退吗
  • 公对公转账后对方拒绝开发票
  • 投资其他公司做什么科目
  • 盈余公积必须提折旧吗
  • 什么叫商业会计
  • win10怎么设置pdf默认打开方式是wps
  • ubuntu系统怎么修改ip地址
  • windows定时关机计划
  • linux中修改命令
  • win7中Windows Time时间服务错误1060怎么办?
  • cocos2dx schedule
  • 炉石传说代码怎么导入
  • Windows下的写字板功能是
  • config_system_switchs
  • 背包 ui
  • javascript判断语句
  • python自动发邮件内容
  • android全局异常捕获并弹框提示
  • Android alertDialog 动态添加edittext无法弹出键盘解决方案
  • jquery写网页
  • android软件开发实例
  • 公司向境外汇款限额
  • 玉林税务局班子成员
  • 税务登记证用来干嘛
  • 审计报告的数据真实性
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设