OpenCV混合高斯模型函数说明_第1页
OpenCV混合高斯模型函数说明_第2页
OpenCV混合高斯模型函数说明_第3页
OpenCV混合高斯模型函数说明_第4页
OpenCV混合高斯模型函数说明_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 OpenCV 混合高斯模型函数注释说明 一 cvaux h define CV BGFG MOG MAX NGAUSSIANS 500 高斯背景检测算法的默认参数设置 define CV BGFG MOG BACKGROUND THRESHOLD 0 7 T 背景高斯分布权重之和阈值 define CV BGFG MOG STD THRESHOLD 2 5 2 5 99 define CV BGFG MOG WINDOW SIZE 200 学习率 1 win size define CV BGFG MOG NGAUSSIANS 5 k 5个混合高斯模型 define CV BGFG MOG WEIGHT INIT 0 05 初始权重 define CV BGFG MOG SIGMA INIT 30 初始标准差 define CV BGFG MOG MINAREA 15 f define CV BGFG MOG NCOLORS 3 颜色通道数 CV BG STAT MODEL FIELDS 的宏定义 define CV BG STAT MODEL FIELDS int type type of BG model CvReleaseBGStatModel release CvUpdateBGStatModel update IplImage background 8UC3 reference background image IplImage foreground 8UC1 foreground image IplImage layers 8UC3 reference background image can be null int layer count can be zero CvMemStorage storage storage for foreground regions CvSeq foreground regions foreground object contours 高斯背景模型参数结构体 typedef struct CvGaussBGStatModelParams int win size 等于 1 alpha int n gauss 高斯模型的个数 double bg threshold std threshold minArea bg threshold 高斯分布权重之和阈值 std threshold 2 5 minArea double weight init variance init 权重和方差 CvGaussBGStatModelParams 高斯分布模型结构体 typedef struct CvGaussBGValues int match sum double weight double variance CV BGFG MOG NCOLORS double mean CV BGFG MOG NCOLORS CvGaussBGValues typedef struct CvGaussBGPoint 2 CvGaussBGValues g values CvGaussBGPoint 高斯背景模型结构体 typedef struct CvGaussBGModel CV BG STAT MODEL FIELDS CvGaussBGStatModelParams params CvGaussBGPoint g point int countFrames CvGaussBGModel 二 cvbgfg gaussmix cpp cvCreateGaussianBGModel 功能 高斯背景模型变量bg model初始化赋值 CV IMPL CvBGStatModel cvCreateGaussianBGModel IplImage first frame CvGaussBGStatModelParams parameters CvGaussBGModel bg model 0 高斯背景状态模型变量 CV FUNCNAME cvCreateGaussianBGModel BEGIN double var init CvGaussBGStatModelParams params 高斯背景状态模型参数变量 int i j k n m p 初始化参数 如果参数为空 则进行初始化赋值 if parameters NULL params win size CV BGFG MOG WINDOW SIZE 学习率 1 200 0 005 params bg threshold CV BGFG MOG BACKGROUND THRESHOLD 判断是否为背景点的阈 值0 7 params std threshold CV BGFG MOG STD THRESHOLD 标准阈值2 5 params weight init CV BGFG MOG WEIGHT INIT 权重值0 05 params variance init CV BGFG MOG SIGMA INIT CV BGFG MOG SIGMA INIT 方差30 30 params minArea CV BGFG MOG MINAREA params n gauss CV BGFG MOG NGAUSSIANS 高斯模型个数 else params parameters 3 if CV IS IMAGE first frame 如果第一帧不是图像 则报错 CV ERROR CV StsBadArg Invalid or NULL first frame parameter CV CALL bg model CvGaussBGModel cvAlloc sizeof bg model 申请内存空间 memset bg model 0 sizeof bg model bg model type CV BG MODEL MOG CV BG MODEL MOG高斯背景模型 bg model release CvReleaseBGStatModel icvReleaseGaussianBGModel 释放内存的函数指针 bg model update CvUpdateBGStatModel icvUpdateGaussianBGModel 更新高斯模型的函数指针 bg model params params 申请内存空间 CV CALL bg model g point CvGaussBGPoint cvAlloc sizeof CvGaussBGPoint first frame width first frame height 256 256 CV CALL bg model background cvCreateImage cvSize first frame width first frame height IPL DEPTH 8U first frame nChannels CV CALL bg model foreground cvCreateImage cvSize first frame width first frame height IPL DEPTH 8U 1 CV CALL bg model storage cvCreateMemStorage 初始化 var init 2 params std threshold params std threshold 初始化方差 CV CALL bg model g point 0 g values CvGaussBGValues cvAlloc sizeof CvGaussBGValues params n gauss first frame width first frame height 128 128 n 表示像素点的索引值 p 表示当前像素对应颜色通道的首地址 g point 对应像素点 g values 对应高斯模型 variance 和 mean 对应颜色通道的方差和均值 for i 0 p 0 n 0 i height i 行 for j 0 j width j n 列 bg model g point n g values bg model g point 0 g values n params n gauss 每个像素点 的第一个高斯模型的地址 每个像素对应n gauss个高斯分布模型 初始化第一个高斯分布模型的参数 bg model g point n g values 0 weight 1 取较大权重 此处设置为1 bg model g point n g values 0 match sum 1 高斯函数被匹配的次数 for m 0 m nChannels m 对各颜色通道的方差和均值赋值 bg model g point n g values 0 variance m var init 初始化较大的方差 bg model g point n g values 0 mean m unsigned char first frame imageData p m 4 赋值为当前像素值 初始化剩下的高斯分布模型的参数 for k 1 k g point n g values k weight 0 各高斯分布取相等且较小权重值 此处取0 bg model g point n g values k match sum 0 for m 0 m nChannels m bg model g point n g values k variance m var init 初始化较大的方差 bg model g point n g values k mean m 0 赋值0 p first frame nChannels bg model countFrames 0 END if cvGetErrStatus release bg model release else cvFree bg model 0 return CvBGStatModel bg model icvUpdateGaussianBGModel 功能 对高斯背景模型变量bg model进行更新 static int CV CDECL icvUpdateGaussianBGModel IplImage curr frame CvGaussBGModel bg model int i j k int region count 0 CvSeq first seq NULL prev seq NULL seq NULL bg model countFrames 5 for i 0 i height i 行 for j 0 j width j 列 int match CV BGFG MOG MAX NGAUSSIANS double sort key CV BGFG MOG MAX NGAUSSIANS const int nChannels curr frame nChannels 通道数目 const int n i curr frame width j 像素索引值 const int p n curr frame nChannels 像素点颜色通道的首地址 A few short cuts CvGaussBGPoint g point const CvGaussBGStatModelParams bg model params bg model params double pixel 4 int no match for k 0 k imageData p k no match icvMatchTest pixel nChannels match g point 判断高斯背景模型更新帧数是否达到设置值win size 初始更新阶段和一般更新阶段在更新处理过程中是不同的 其中定义初始更新阶段为帧数小于win size if bg model countFrames bg model params win size 一般更新阶段 icvUpdateFullWindow pixel nChannels match g point if no match 1 icvUpdateFullNoMatch curr frame p match g point else icvUpdatePartialWindow pixel nChannels match g point if no match 1 icvUpdatePartialNoMatch pixel nChannels match g point icvGetSortKey nChannels sort key g point icvInsertionSortGaussians g point sort key CvGaussBGStatModelParams icvBackgroundTest nChannels n p match bg model foreground filtering 6 filter small regions cvClearMemStorage bg model storage cvMorphologyEx bg model foreground bg model foreground 0 0 CV MOP OPEN 1 cvMorphologyEx bg model foreground bg model foreground 0 0 CV MOP CLOSE 1 cvFindContours bg model foreground bg model storage for seq first seq seq seq seq h next CvContour cnt CvContour seq if cnt rect width cnt rect height params minArea delete small contour prev seq seq h prev if prev seq prev seq h next seq h next if seq h next seq h next h prev prev seq else first seq seq h next if seq h next seq h next h prev NULL else region count bg model foreground regions first seq cvZero bg model foreground cvDrawContours bg model foreground first seq CV RGB 0 0 255 CV RGB 0 0 255 10 1 return region count icvMatchTest 功能 将当前像素与个高斯分布进行匹配判断 如果匹配成功 则返回相应高斯分布的索引值 static int icvMatchTest double src pixel int nChannels int match const CvGaussBGPoint g point const CvGaussBGStatModelParams bg model params int k 7 int matchPosition 1 for k 0 k n gauss k match k 0 高斯分布匹配标识数组初始化置0 for k 0 k n gauss k double sum d2 0 0 double var threshold 0 0 for int m 0 m g values k mean m src pixel m sum d2 d d var threshold g point g values k variance m 方差 difference STD LIMIT STD LIMIT or difference 2 std threshold bg model params std threshold var threshold 匹配方程为 或者 2 22 11ti t ID 11ti t ID if sum d2 win size 学习率 for int k 0 k n gauss k 若match k 0 则权重 的更新公式 1 若match k 0 则权重 的更新公式 1 g point g values k weight 8 g point g values k weight learning rate weight double match k g point g values k weight if match k 更新匹配的高斯分布的参数 参数学习率 double learning rate gaussian double match k g point g values k weight double bg model params win size for int m 0 m g values k mean m 均值 更新公式为 1 t I g point g values k mean m g point g values k mean m learning rate gaussian tmpDiff 方差更新公式为 2 2 22 1 t I g point g values k variance m g point g values k variance m learning rate gaussian tmpDiff tmpDiff g point g values k variance m icvUpdateFullNoMatch 功能 当前像素点与所有高斯分布都不匹配时 需要将比值最小的高斯分布替换为新的高斯分布 权值 小 方差大 其余的高斯分布保持原来的均值和方差 但权值需要减小 static void icvUpdateFullNoMatch IplImage gm image int p int match CvGaussBGPoint g point const CvGaussBGStatModelParams bg model params int k m double alpha int match sum total 0 new value of last one g point g values bg model params n gauss 1 match sum 1 将新的高斯分布的match sum置 为1 get sum of all but last value of match sum for k 0 k n gauss k match sum total g point g values k match sum 设置新的高斯分布的参数 g point g values bg model params n gauss 1 weight 1 double match sum total 给新的高 9 斯分布设置一个较小的权值 即1 0 match sum total for m 0 m nChannels m first pass mean is image value g point g values bg model params n gauss 1 variance m bg model params variance init 初始化一个较大的方差 g point g values bg model params n gauss 1 mean m unsigned char gm image imageData p m 将当前像素值作为均值 更新其余高斯分布的参数 alpha 1 0 1 0 bg model params win size for k 0 k n gauss 1 k 更新权值的公式为 1 g point g values k weight alpha if match k 对于匹配的高斯分布 权值更新公式为 1 g point g values k weight alpha icvUpdatePartialWindow 功能 更新各高斯分布的权重值 对于匹配上的高斯分布要增大权值 其余的减小权值 如果存在匹配上 的高斯分布 还要更新其均值和方差 static void icvUpdatePartialWindow double src pixel int nChannels int match CvGaussBGPoint g point const CvGaussBGStatModelParams bg model params int k m int window current 0 for k 0 k n gauss k window current g point g values k match sum window current为k个高斯分布函数的match sum值之和 for k 0 k n gauss k g point g values k match sum match k 修正匹配的高斯分布函数k的match sum值 double learning rate weight 1 0 double window current 1 0 increased by one since sum g point g values k weight g point g values k weight learning rate weight double match k g point g values k weight 修正每个高斯 分布的权值 10 if g point g values k match sum 0 for m 0 m g values k mean m g point g values k mean m g point g values k mean m learning rate gaussian tmpDiff g point g values k variance m g point g values k variance m learning rate gaussian tmpDiff tmpDiff g point g values k variance m icvUpdatePartialNoMatch static void icvUpdatePartialNoMatch double pixel int nChannels int match CvGaussBGPoint g point const CvGaussBGStatModelParams bg model params int k m new value of last one g point g values bg model params n gauss 1 match sum 1 get sum of all but last value of match sum int match sum total 0 for k 0 k n gauss k match sum total g point g values k match sum for m 0 m g values bg model params n gauss 1 variance m bg model params variance init g point g values bg model params n gauss 1 mean m pixel m for k 0 k n gauss k 更新所有高斯分布的权值 g point g values k weight double g point g values k match sum double match sum total 11 icvGetSortKey 函数功能 计算各个高斯分布 weight sqrt variance sum 的值 后面将对该值进行排序 该值越大则表示背景的可能性就越大 static void icvGetSortKey const int nChannels double sort key const CvGaussBGPoint g point const CvGaussBGStatModelParams bg model params int k m for k 0 k n gauss k Avoid division by zero if g p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论