风机桨叶故障诊断(一) 样本的获取

来源:互联网 发布:原画网络班有哪些 编辑:程序博客网 时间:2024/04/27 18:55
风机桨叶故障诊断(一) 样本的获取
     今天团队接了个新项目,做一个风机桨叶故障诊断系统。虽然马上就是准备考研的关键期了,可是一想到这是我学习了机器学习后遇到的第一个实际项目,我觉得参与进来,也帮导师分担些压力。项目不可能进展的一帆风顺,这个系列文章也并不是教学性质的,我这些日子会根据项目的情况,将一步步的进展,想法都记录在博客中,也作为技术的积累。如果有什么错误欢迎大家指正。
步入正题,项目需求是这样的,驾驶汽车在风力发电厂中巡视一遍,车顶安装摄像头,沿途拍下所有的风机。我们的软件对高清摄像机拍摄下的图片/视频进行处理,识别出图像中的风机桨叶,然后对桨叶是否存在故障进行诊断。
经过最初的分析,我们发现这个问题还是十分棘手的,提供的条件也十分苛刻。首先,我们拿到的可以用来训练识别算法的样本只有短短的几个视频,其次,由于风机处于高速旋转中,而且离地面的距离较远,拍到的图像不能做到很清晰,故障往往在图像中只能体现成一个小黑点。就如下图所示

故障相对于图像来说十分小,再加上训练样本的不足,我们一时间没有想出很好的识别方法(我和老师确实是纠结了好几天了)。不过万事开头难,如果不一步步的去尝试,永远不知道行不行,所以我决定先把样本的问题解决了,然后从要识别的桨叶入手,分析一下有什么特点,做做预处理,看看会得到什么结果。还有就是提一下,我打算不管最后软件用什么语言实现,先用matlab进行前期的分析和实验。
首先获取样本,我们拿到手的资源就仅仅是两个模拟现场巡视拍摄下的视频,那么准备工作的第一步就是从视频中抽取一部分帧的图像出来,作为我们最基本的可以提取样本的图像库。
我是每隔25帧,对于我的视频来说是1秒抽取出一张图像,matlab实现如下:
function [  ] = ProcessVideo( )%处理视频,每一秒提取一帧并保存%% 从视频里面分割图片clc;clear;%% 读取视频video_file='F:\风机桨叶故障诊断项目\视频\视频2.avi';video=VideoReader(video_file);frame_number=floor(video.Duration * video.FrameRate)%% 分离图片for i=1:25:frame_number    image_name=strcat('F:\风机桨叶故障诊断项目\视频2截图\',num2str(i));    image_name=strcat(image_name,'.jpg');    I=read(video,i);                               %读出图片    imwrite(I,image_name,'jpg');                   %写图片    I=[];endend

这样,我们再人工的剔除一些没用的图片(比如十分模糊的,只有背景的),就得到我们可以用来提取样本的风机图像库了,如下图所示。


第一步工作完成!明天继续~
希望我的博客对大家有所帮助,欢迎提问和指正。转载请注明出处
如果您也是学生,欢迎关注我们华电LSGO软件技术团队微信公众平台
0 0