生活随笔
收集整理的這篇文章主要介紹了
【计算机视觉】森林火灾检测-1
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
轉(zhuǎn)載請注明出處:http://blog.csdn.net/xiaowei_cqu/article/details/7522467
前段時(shí)間做了一個(gè)火災(zāi)檢測的小程序,因?yàn)闀r(shí)間緊,實(shí)現(xiàn)的算法也簡單。只用了兩步處理:運(yùn)動(dòng)檢測和顏色檢測。日后還會(huì)再改進(jìn)~
運(yùn)動(dòng)檢測 其實(shí)就是檢測背景,對背景建模然后提取前景中運(yùn)動(dòng)的物體作為候選火災(zāi)樣本。嘗試了兩種簡單的背景算法:高斯背景建模和背景相減,還是背景相減的效果較好。以下是代碼:
[cpp] ?view plaincopy
?? void ?FireDetector::?CheckFireMove(IplImage?*pImgFrame )?? {?? ????int ?thresh_low?=?80; ?? ?? ????cvCvtColor(pImgFrame,?pImgMotion,?CV_BGR2GRAY);?? ????cvConvert(pImgMotion,?pMatFrame);?? ????cvConvert(pImgMotion,?pMatProcessed);?? ????cvConvert(pImgBackground,?pMatBackground);?? ?? ????cvSmooth(pMatFrame,?pMatFrame,?CV_GAUSSIAN,?3,?0,?0);?? ?????? ????cvAbsDiff(pMatFrame,?pMatBackground,?pMatProcessed);?? ?????? ?????? ?????? ????cvThreshold(pMatProcessed,?pImgMotion,?thresh_low,?255.0,?CV_THRESH_BINARY);?? ?????? ????cvPyrDown(pImgMotion,pyrImage,CV_GAUSSIAN_5x5);?? ????cvPyrUp(pyrImage,pImgMotion,CV_GAUSSIAN_5x5);?? ?????? ????cvErode(pImgMotion,?pImgMotion,?0,?1);?? ????cvDilate(pImgMotion,?pImgMotion,?0,?1);??? ?? ?????? ????int ?pUpdate=0.3; ?? ????cvRunningAvg(pMatFrame,?pMatBackground,?pUpdate,?0);?????????????????????? ????cvConvert(pMatBackground,?pImgBackground);?? }?? 顏色檢測 顏色檢測最初用的是Thou-Ho (Chao-Ho) Chen, Ping-Hsueh Wu, and Yung-Chuen Chiou?于2004年在ICIP發(fā)表的文章《An Early Fire-Detection Method Based on Image Processing》中建立的顏色模型:
其中R、G、B為RGB模型中的顏色分量S為HSI顏色模型中的飽和度;Rt為R分量的閾值經(jīng)試驗(yàn)得到可設(shè)定在55~56之間;St為飽和度的閾值經(jīng)試驗(yàn)得到可設(shè)定在115~135之間。雖然簡單,確很有效。之后自己又增加了些亮度之類的信息,并調(diào)整了閾值。
[cpp] ?view plaincopy
?? void ?FireDetector::CheckFireColor2(IplImage?*RGBimg)?? {?? ????int ?RedThreshold=115;?? ?? ????int ?SaturationThreshold=45;?? ?? ?? ????for ( int ?j?=?0;j?<?RGBimg->height;j++)?? ????{?? ????????for ?( int ?i?=?0;i?<?RGBimg->widthStep;i+=3)?? ????????{?? ????????????uchar?B?=?(uchar)RGBimg->imageData[j*RGBimg->widthStep+i];?? ????????????uchar?G?=?(uchar)RGBimg->imageData[j*RGBimg->widthStep+i+1];?? ????????????uchar?R?=?(uchar)RGBimg->imageData[j*RGBimg->widthStep+i+2];?? ????????????uchar?maxv=max(max(R,G),B);??? ????????????uchar?minv=min(min(R,G),B);??? ????????????double ?S?=?(1?-?3.0*minv/(R+G+B));?? ?????????????? ?????????????? ?????????????? ????????????if (R>RedThreshold&&R>=G&&G>=B&&S>0.20 )?? ????????????????pImgFire->imageData[i/3+pImgFire->widthStep*j]?=?255;?? ????????????else ?? ????????????????pImgFire->imageData[i/3+pImgFire->widthStep*j]?=?0;?? ?????????????? ????????}?? ????}?? }?? 經(jīng)過兩部檢測后的備選像素,大于一定值則判定為火,標(biāo)框并報(bào)警,效果如下:
轉(zhuǎn)載于:https://www.cnblogs.com/alan666/p/8312349.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐 50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀
總結(jié)
以上是生活随笔 為你收集整理的【计算机视觉】森林火灾检测-1 的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔 推薦給好友。