新疆水库项目斜坡检测项目架构模型 v1.0.0
项目名称:大坝斜坡异常监控系统(Hydropower dam monitoring)
项目分类:开发/科研/合作
项目撰写:乔金明
立项时间:2020-07-01 00:00:00
工作部门:南京理工大学科技园
项目背景及意义(简)
- 本项目基于新疆水库大坝斜坡异常图像检测需求进行立项,项目核心软件基于python进行图像异常情况监控检测,本篇主要介绍软件开发架构与相关模块执行流程,通过对监控图像结果处理分析,主要进行:
- 坝体斜坡是否存在异常物体与其他需求指定异常行为
- 山体岩石或者土层面变化所导致的隐患问题与其他需求指定异常行为
- 水库本身异常情况与其他需求指定异常行为
- 项目基于BS模型对外提供api进行图像异常检测分析,主干流程为:接受源->源处理->原始图像处理->图像基本处理->图像二次处理->图像深度处理->图像状态反馈->图像处理分析->处理结果->生成报告->反馈源,项目通过黑盒模式以监控输入流进行数据获取,以需求报告流进行信息反馈,中间以日志,缓存,sql等形式进行桥接,最终实现对于的监控图像异常检测分析。
系统概要
- 系统主要分为五大模块,分别为:系统总控处理模块、**图像处理模块、日志监控预警模块、数据库模块、服务器模块,其中系统总控,图像处理,日志监控为核心core,故整个系统可以概述为三部分,使用MVC模式,基于Django框架开发
- 实际应用流程为:水库监控器(或者平台)将数据流发送至当前系统,系统由总控发布指令启动日志与图像分析,输入流(图像或者视频)需要经过core多次处理,每次处理结果同数据库交互,处理结果最终生成报告交由服务模块处理,进行结果流响应或者分析结果渲染
系统底层框架
- 系统底层框架使用Django框架进行搭建,服务模式使用net进行映射,数据应用关系型数据库(mysql或者postsql),开发平台基于Unix系统(ubuntu或者centos),大文件进行介质存储(oss或者磁盘),开发模式基于MVC,对外提供api进行交互,对内进行数据访问交互,深度封装
- 输入为监控视频或者图像流,输出为分析报告或者需求指定的其他反馈模式,其中图像分析模块作为中心和主要代码篇幅,进行utils封装并通过黑白盒测试用例,测试用例与项目共同打包封装
数据库模块设计
- 数据库采用关系型数据库,需要经过调研与验证,确保符合范式要求,确认好数据模式与数据库说明文档后,数据库即保持不变,除必要增加相外不进行修改操作,文件存储使用介质进行存储,云端oss或者本地磁盘,主要用于输入流数据存储
- 数据库的原则为避免重复分析数据,数据以sha1进行唯一标识映射,数据交互主要节点为:输入流数据映射存储,图像基本处理映射存储,图像状态映射存储,图像二次映射存储,图像深度映射存储,图像分析结果映射存储,日志标识映射存储,其中日志映射标识作为全局交互行为
日志监控预警模块
- 系统开发core部分,尤其是图像分析模块,需要进行实时日记与异常记录,同时若警告达到一定阈值进行通信报警,调试部署当以日志为主,部署运行后整体将不会对代码进行二次查看,代码将以二进制字节码形式部署
- 日志将活动与整个项目的五大模块,即项目运行时生命周期不会停止,其系统优先级也为最高,主要包括:BS,SQL,IMAGE三大日志记录模式
图像处理模块(四判断五处理)
- 图像处理模块作为本项目的重点,也是难度最高与决定最终项目运行成果的一部分,为保证图像对比检测准确,整个流程采用阶梯分析,初始图片会被赋予异常因子,若因子数字达到一定阈值将进行异常输出,分析对比将采用窗口滑动分析模式,初始正常源状态,在设置的n帧图片内(图片具有时间标识),#进行低值异常因子滑动,当滑动到某一阶段时异常因子升高#,则进行异常图像再处理,最终分析异常报告同时还原异常图像,其主要流程为:
- 获取输入源,若输入源为视频,则进行同类型图片帧处理,若输入源为图像,则进行统一类型转换,否则返回错误信息
- 输入:上步已经处理为同一类型的长度为n的窗口图片,对图片进行预处理,经历阵列获取->灰度变换->向量变换->直方图处理->幂律变换->滤波处理,目的是将图片处理成数学层次上的归一化,最终进行图片大小映射,处理成比例像素相同的图像,输出:归一化后的数学图像矩阵
- 输入:上步归一化后的数学图像矩阵,进行图像状态检测,基于图像亮度->色彩分布->噪音分布->坐标定位->时间角度->已分析图像参数进行异常因子定位,如果异常因子平滑,则转向第一步继续执行,否则将数学图像矩阵带上标签继续向下执行,标签包括:阴影区域(100%-0%,坐标范围),配准角度,噪音分布曲线集合,造成异常因子起伏重要参数等,输出:归一化后的数学图像矩阵与标签集合(整体变换的图像)
- 输入:上步归一化后的数学图像矩阵与标签集合,进行图像二次处理,包括对于阴影检测消除->边缘探测->图像配准->噪音消除->卷积变换->图层分割等处理,处理参数转换后,检测异常因子是否恢复,是则转向第一步继续执行,否则进行因子判断,是否异常可以定位,是则生成报告反馈输出源,否则进行下一步处理,输出:二次处理数学图像矩阵与二次分析标签集合(局部变换的图像,主要对图象进行各种加工以改善图象的视觉效果、或突出有用信息,并为自动识别打基础,通过编码以减少对其所需存储空间、传输时间或传输带宽的要求)
- 输入:上步的二次处理数学图像矩阵与二次分析标签集合,进行图像再处理,包括对于图像分割合并->粒子减除->聚类分割->特征抽取->深度算子对比等,使用统计学或者形态学算法进行分类,抽取,扭曲比对等处理,检查异常因子情况,同理,可确认则进行输出处理,不可确认则进行下一步处理,输出:再处理数学图像矩阵与再分析标签集合(矩阵处理的图像,主要对图像中感兴趣的目标进行检测分割和测量,以获得它们的客观信息,从而建立对图像中目标的描述)
- 输入:上步的再处理数学图像矩阵与再分析标签集合,进行人眼视觉模拟分析->深度学习->神经网络->卷积对抗->无监督式学习等机器学习层面的分析,此步将确认最终结果,根据因子与参数进行输出或者继续处理,输出:深度处理后的数学图像矩阵与深度处理标签集合(视觉层面的图像处理,进一步研究图像中各目标的性质和它们之间相互的联系,并得出对图像内容含义的理解及对原来客观场景的解释,从而指导和规划行动)
- 输入:视觉层面处理图像矩阵,进行图像复原,进行图像合并与最终处理图像再现,同时进行报告输出,输出:已处理的图像与最终分析报告
- 结束,进行窗口滑动持续执行
- 注:阶梯分析随阶梯升高难度也越大越难以校验,但是对于低阶梯的精度要求也越高,五处理每一个处理阶段都可以进行单独模块分析开发,因为输入均为矩阵,只有最后处理的结果是图像或者其他可视化输出
- 续:问题汇总与相应处理模块或者增加相应处理模块(根据会议补充)