资源简介
本方法主要使用了图像的颜色特征和尺度不变特征SIFT以及加速鲁棒特征SURF对候选区域进行筛选,并结合火焰的运动特性来判断。系统由以下三部分构成:1)提取火焰候选区域;2)构建视觉词典,通过颜色纹理特征对候选区域进行分类;3)时间维度上验证。
相比于现有的火焰检测算法,本方法能够更加高效准确地检测出视频中的火焰。另外,我们收集并发布了目前为止最大的火焰检测数据集。我们相信这对于火焰检测领域的科研和实际应用都是很有帮助的。
代码片段和文件信息
/***************************************************************************
函数名称:DetectByColor
函数描述:用颜色特征(LAB直方图)来判断
入参:无
输出:无
历史:
修改人 修改日期 修改原因
李若冰 2010/09/17 重写
***************************************************************************/
LHINT32 DetectByColor(LHFlameDetect* pstFlameDetect BlobSeq* tempSeq)
{
LHINT32 i ii jj k m n result sbin = LAB_BINS / 3;
LHINT32 size[] = {LAB_BINS / 3} delBlobs[MAX_MAX_CARED_BLOB_NUM] delBlobNum = 0;
float range1[] = {0 255}/* range2[] = {0 180}*/;
float *ranges1[] = {range1}/* *ranges2 = {range2}*/;
double tt;
LHRect blobRect;
IplImage* rgbImg *blobImg *labImg *lImg *aImg *bImg;
IplImage* lPlane[1];
IplImage* aPlane[1];
IplImage* bPlane[1];
CvHistogram* lHist *aHist *bHist;
struct svm_node* nodes;
if(pstFlameDetect->uiframeCount <= MAX_FG)
return LHSUCCESS;
rgbImg = cvCreateImage(cvSize(frame_WIDTH frame_HEIGHT) IPL_DEPTH_8U 3);
for(i = 0; i < frame_HEIGHT; i++)
{
m = i * frame_WIDTH;
n = m * 3;
for(jj = 0; jj < COLOR_frame_WIDTH; jj += 3)
{
rgbImg->imageData[n + jj] = pstFlameDetect->stFlameModuleIn.pColorImage->Image[n + jj + 2];
rgbImg->imageData[n + jj + 1] = pstFlameDetect->stFlameModuleIn.pColorImage->Image[n + jj + 1];
rgbImg->imageData[n + jj + 2] = pstFlameDetect->stFlameModuleIn.pColorImage->Image[n + jj];
}
}
nodes = (struct svm_node*)malloc(sizeof(struct svm_node) * (LAB_BINS + 1));
for(k = 0; k < tempSeq->uiBlobNum; k++)
{
blobRect = tempSeq->stBlobs[k].stRect;
blobImg = cvCreateImage(cvSize(blobRect.w blobRect.h) IPL_DEPTH_8U 3);
labImg = cvCreateImage(cvSize(blobRect.w blobRect.h) IPL_DEPTH_8U 3);
lImg = cvCreateImage(cvSize(blobRect.w blobRect.h) IPL_DEPTH_8U 1);
aImg = cvCreateImage(cvSize(blobRect.w blobRect.h) IPL_DEPTH_8U 1);
bImg = cvCreateImage(cvSize(blobRect.w blobRect.h) IPL_DEPTH_8U 1);
lPlane[0] = lImg;
aPlane[0] = aImg;
bPlane[0] = bImg;
lHist = cvCreateHist(1 size CV_HIST_ARRAY ranges1 1);
aHist = cvCreateHist(1 size CV_HIST_ARRAY ranges1 1);
bHist = cvCreateHist(1 size CV_HIST_ARRAY ranges1 1);
cvGetSubRect(rgbImg (CvMat*)blobImg cvRect(blobRect.x blobRect.y blobRect.w blobRect.h));
cvCvtColor(blobImg labImg CV_BGR2Lab);
cvSplit(labImg lImg aImg bImg 0);
cvCalcHist(lPlane lHist 0 0);
cvNormalizeHist(lHist 1.0);
cvCalcHist(aPlane aHist 0 0);
cvNormalizeHist(aHist 1.0);
cvCalcHist(bPlane bHist 0 0);
cvNormalizeHist(bHist 1.0);
for(i = 0 ii = 0; i < LAB_BINS; i++)
{
if(i < sbin)
tt = cvQueryHistValue_1D(lHist i);
else if(i >= sbin && i < sbin * 2)
tt = cvQueryHistValue_1D(aHist i % sbin);
else
tt = cvQueryHistValue_1D(bHist i % sbin);
if(tt != 0)
{
nodes[ii].index = i + 1;
nodes[ii].value = tt;
ii++;
}
}
nodes[ii].index = -1;
result = svm_predict
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2014-01-07 19:53 fireDetect-v1.0\
目录 0 2014-01-07 19:53 fireDetect-v1.0\bin\
文件 7600640 2010-09-09 10:49 fireDetect-v1.0\bin\cv200d.dll
文件 4448768 2010-09-09 10:57 fireDetect-v1.0\bin\cvaux200d.dll
文件 14321152 2010-09-09 10:44 fireDetect-v1.0\bin\cxcore200d.dll
文件 3303424 2010-09-09 10:51 fireDetect-v1.0\bin\highgui200d.dll
文件 2055680 2014-01-04 13:13 fireDetect-v1.0\bin\VideoAnalyze.dll
文件 2680 2014-01-04 13:13 fireDetect-v1.0\bin\VideoAnalyze.lib
文件 190976 2013-12-23 21:51 fireDetect-v1.0\bin\VideoAnalyzeTest.exe
文件 0 2014-01-04 15:55 fireDetect-v1.0\bin\WiteLog.log
目录 0 2014-01-07 19:53 fireDetect-v1.0\FireProtection\
文件 27992 2014-01-02 18:17 fireDetect-v1.0\FireProtection\ALL_BUILD.vcproj
文件 21858 2011-06-11 14:36 fireDetect-v1.0\FireProtection\backup.c
目录 0 2014-01-07 19:53 fireDetect-v1.0\FireProtection\CMakeFiles\
文件 45 2010-11-25 16:39 fireDetect-v1.0\FireProtection\CMakeFiles\ALL_BUILD.rule
文件 51 2014-01-02 18:18 fireDetect-v1.0\FireProtection\CMakeFiles\generate.stamp
文件 155 2014-01-02 18:17 fireDetect-v1.0\FireProtection\CMakeFiles\generate.stamp.depend
文件 703 2011-05-09 17:08 fireDetect-v1.0\FireProtection\CMakeLists.txt
文件 1090 2014-01-02 18:17 fireDetect-v1.0\FireProtection\cmake_install.cmake
文件 1232735 2011-06-11 11:49 fireDetect-v1.0\FireProtection\CSLBPCodebook.c
文件 2044914 2011-06-11 11:56 fireDetect-v1.0\FireProtection\CSLBPModel.c
目录 0 2014-01-07 19:53 fireDetect-v1.0\FireProtection\FireProtection.dir\
目录 0 2014-01-07 19:53 fireDetect-v1.0\FireProtection\FireProtection.dir\Debug\
文件 13268 2014-01-04 13:13 fireDetect-v1.0\FireProtection\FireProtection.dir\Debug\BuildLog.htm
文件 10402 2014-01-02 18:18 fireDetect-v1.0\FireProtection\FireProtection.dir\Debug\HSVscore.obj
文件 134235 2014-01-02 18:18 fireDetect-v1.0\FireProtection\FireProtection.dir\Debug\LABModel.obj
文件 40354 2014-01-02 18:18 fireDetect-v1.0\FireProtection\FireProtection.dir\Debug\LHCreateBGImage.obj
文件 84388 2014-01-04 13:13 fireDetect-v1.0\FireProtection\FireProtection.dir\Debug\LHFlameDetect.obj
文件 42441 2014-01-02 18:18 fireDetect-v1.0\FireProtection\FireProtection.dir\Debug\LHSmoke.obj
文件 356045 2014-01-02 18:18 fireDetect-v1.0\FireProtection\FireProtection.dir\Debug\SURFCodebook.obj
文件 167642 2014-01-02 18:18 fireDetect-v1.0\FireProtection\FireProtection.dir\Debug\SURFModel.obj
............此处省略47个文件信息
评论
共有 条评论