《国家级大学生创新训练项目中期进展报告》由会员分享,可在线阅读,更多相关《国家级大学生创新训练项目中期进展报告(14页珍藏版)》请在金锄头文库上搜索。
1、国家级大学生创新训练项目中期进展报告项目编号: 201310611072 项目名称: 视频监控中的火灾检测报警系统研究 项目负责人: 单嘉琦 学院年级专业: 通信工程11级电子信息工程 联系电话: 15111966851项目组成员: 雷 博 唐圆圆指导教师: 印 勇 教务处制填表日期:2013年12月6日 填写说明一、中期进展报告要按照重庆大学“国家级大学生创新训练项目”管理办法的相关要求,逐项认真填写,填写内容必须实事求是,表达明确严谨。空缺项要填“无”。二、格式要求:需签字部分由相关人员以黑色钢笔或水笔签名。均用A4纸双面打印,于左侧装订成册。三、报告书填写内容应言简意赅,思路清晰,论证充
2、分,字迹清楚,一律用计算机输入打印。一、项目组成员工作情况项目组成员姓名项目中的分工完成情况指导教师评价指导教师签名单嘉琦火焰颜色算法设计完成唐圆圆OPENCV编程实现完成雷 博MFC界面设计完成二、项目研究进展情况说明第一阶段:2013.072013.9进一步细化研究项目的设计流程,明确小组成员的分工。熟练掌握OpenCV软件的应用,熟练掌握其丰富的视频图像处理算法,并能够理解及分析其处理结果。在学习Opencv软件中,主要有以下几个过程:1)熟悉OpenCV软件的库函数并掌握其使用方法。主要的库函数有highgui.h 、cxcore.h、cv.h和ml.h库函数。2)学习并掌握在Open
3、CV软件编程环境中创建图片窗口,基于视屏图片处理算法编写程序实现从计算机磁盘中读取图片并显示在图片窗口中。理解在OpenCV软件平台上处理图像的基本方式,通过参数设置能够控制图片显示为彩色、黑白等各种标准。3)学习基于MFC基础的程序,为设计人性化的显示界面打下基础。第二阶段 2013.102013.12小组成员开始基于火灾的各种特征设计相应的算法,并运用OpenCV软件实现成员的设想。针对火焰的颜色模块儿,小组成员提出了基于RGB三色模型的算法。在正确实现算法的基础上,小组成员设计MFC窗口,实现运行程序能在该窗口下显示加载的图片。基于算法实现对有火焰的视屏进行处理,观察视频运算的结果。当视
4、屏中有火焰时,视屏会会立即中断播放来代替报警。主要过程如下:1)用RGB三色模型都火焰颜色进行分析。学习各种资料,理解RGB模型下各种颜色的数值表示。根据实验项目中对火焰颜色的要求,确定火焰颜色的RGB数值波动范围,写出相应的限制条件。2)根据小组成员设计的算法编写OpenCV程序,运用代码实现限制条件的设置。运行程序对案例图片进行处理,主要效果是将有火焰的区域全变成RGB模型下的“0”,即黑色;没有火焰部分变成白色。对比处理前后颜色观察处理后的到的效果。在此基础上优化程序,实现单张包含火焰的图片的处理。3)基于2)中的程序在MFC中实现代码的正常运行,并在MFC窗口加载处理前后的图片。4)基
5、于对单张火焰图片处理的程序,编写程序实现在OpenCV平台上连续对视频中的每一帧图片进行火焰识别。当在视频中发现火焰并持续较短时间,视频马上暂停,以此代替报警。三、已取得的阶段性成果(条文列述,可附照片)一、设计RGB通道和YCrCb通道下火焰颜色模型:(1)在三维通道下根据三通道参数的约束关系确定火焰颜色的范围,简要列出两种通道下主要约束条件表达式如下:(2)根据算法设计对图像逐点扫描,并将满足约束条件部分二值化为黑色,其余部分设为白色的程序,附上程序如下:2.1 RGB通道下程序: void sv(IplImage* img)for(int y=0;yheight;y+)uchar* pt
6、r=(uchar*)(img-imageData+y*img-widthStep);for( int x=0;xwidth;x+)if (ptr3*x/3+ptr3*x+1/3+ptr3*x+2/3100&ptr3*x/-3+ptr3*x+1/-3+ptr3*x+2/-3-200&ptr3*x/2-ptr3*x+2/-215&ptr3*x/-2-ptr3*x+2/-2-120) %实现约束条件 ptr3*x=ptr3*x+1=ptr3*x+2=0;else ptr3*x=ptr3*x+1=ptr3*x+2=255;2.2 YCrCb通道下程序:#include cv.h #include hi
7、ghgui.h #include #include #include int main(int argc,char* argv)IplImage *image=0,*img=0, *yuv=0;int i,j;int height,width,step,channels; uchar* data;CvMat* pFrMat=NULL;CvScalar scalar1; int VECT=0;char* filename=argc=2?argv1:(char*)fire2.jpg;image=cvLoadImage(filename,-1);if(!image) printf(Could not
8、 load image filen);yuv=cvCreateImage(cvGetSize(image),8,3);img=cvCreateImage(cvGetSize(image),8,3);cvNamedWindow(SourceImage,CV_WINDOW_AUTOSIZE);cvNamedWindow(ResultImage,CV_WINDOW_AUTOSIZE);cvShowImage(SourceImage,image);cvCvtColor(image,yuv,CV_BGR2YCrCb);height = yuv-height;width = yuv-width;step
9、= yuv-widthStep;channels = yuv-nChannels;data = (uchar *)yuv-imageData;printf(Processing a %dx%d image with %d channelsn, height, width, channels);IplImage *plane0=0,*plane1=0,*plane2=0;plane0=cvCreateImage(cvGetSize(image),8,1);plane1=cvCreateImage(cvGetSize(image),8,1);plane2=cvCreateImage(cvGetSi
10、ze(image),8,1);cvCvtPixToPlane(yuv,plane0,plane1,plane2,0);cvNamedWindow(Image0,CV_WINDOW_AUTOSIZE);cvNamedWindow(Image1,CV_WINDOW_AUTOSIZE);cvNamedWindow(Image2,CV_WINDOW_AUTOSIZE);cvShowImage(Image0,plane0);cvShowImage(Image1,plane1);cvShowImage(Image2,plane2); cvWaitKey();cvDestroyWindow(Image0);
11、cvDestroyWindow(Image1);cvDestroyWindow(Image2); for(i=0;iheight;i+) for(j=0;jdatai*step+j*channels+2&datai*step+j*channels+0scalar1.val0&datai*step+j*channels+1datai*step+j*channels+2&datai*step+j*channels+1scalar1.val1&datai*step+j*channels+2VECT) if(data0data2 & data0scalar1.val0 & data1data2 & d
12、ata1scalar1.val1 & data2VECT)img-imageDatai*img-widthStep+j*img-nChannels+0=255;img-imageDatai*img-widthStep+j*img-nChannels+1=255;img-imageDatai*img-widthStep+j*img-nChannels+2=255;elseimg-imageDatai*img-widthStep+j*img-nChannels+0=0;img-imageDatai*img-widthStep+j*img-nChannels+1=0;img-imageDatai*i
13、mg-widthStep+j*img-nChannels+2=0;cvShowImage(ResultImage,img); cvWaitKey();cvDestroyWindow(SourceImage);cvDestroyWindow(ResultImage);二、利用MFC设计界面友好的工程现在主要实现了在MFC下加载图像,用按键控制图像处理。其结果如下:三、收集火焰图像、视频素材,对设计算法验证部分实验图像和结果如下:四、初步提出对视频火焰监控算法思想检验若连续N帧图像一定面积图像符合火焰颜色模型,则判定发生火焰,中断视频播放(用中断视频来代替响铃)代码如下:#include highgui.hint sv(IplImage* img)int a,c=0,d=0;for(int y=0;yheight;y+)uchar* ptr