发明名称 基于部件的目标检测方法
摘要 本发明公开一种基于部件的目标检测方法,主要解决现有技术中目标部件检测算法计算复杂度高、应用范围窄、以及目标空间结构不够准确的问题。其方法步骤为:(1)标记训练图像;(2)构建目标空间结构;(3)统计空间结构模型参数;(4)统计表观模型参数;(5)传送模型参数;(6)采集被检测图像;(7)初始化目标检测的参数;(8)获得中心部件位置坐标;(9)判断是否第一次记录中心部件位置坐标;(10)获得近似部件位置坐标集合;(11)获得最终部件位置坐标集合;(12)显示检测结果。本发明准确地表示了目标空间结构,提高了检测速度,扩展了目标部件检测算法的应用范围。
申请公布号 CN102750532B 申请公布日期 2014.12.17
申请号 CN201210202366.8 申请日期 2012.06.06
申请人 西安电子科技大学 发明人 赵恒;张春晖;梁继民;刘俊廷;曹凯;刘而云
分类号 G06K9/32(2006.01)I 主分类号 G06K9/32(2006.01)I
代理机构 陕西电子工业专利中心 61205 代理人 田文英;王品华
主权项 一种基于部件的目标检测方法,通过训练图像标记模块、模型构建模块、图像采集模块、目标检测模块和检测结果显示模块五个模块完成以下具体步骤: (1)标记训练图像 在因特网上收集包含待检测目标的训练图像和不包含待检测目标的背景图像,训练图像标记模块对每张训练图像中的n个部件进行标记,获得训练图像中n个部件的位置坐标; (2)构建目标空间结构 2a)模型构建模块从训练图像标记模块读取所有训练图像中n个部件的位置坐标以及所有的训练图像和背景图像; 2b)模型构建模块使用互信息熵计算公式计算两两部件之间位置的互信息熵; 2c)将互信息熵作为边的权值,以n个部件为节点,模型构建模块采用prim算法构造最大生成树; 2d)模型构建模块在最大生成树中寻找包含叶子节点的所有三节点子图构成集合; 2e)在三节点子图集合中,模型构建模块寻找节点之间互信息熵之和最大的三节点子图,得到最紧密三节点子图; 2f)模型构建模块计算最紧密三节点子图的补图,并将补图加入到最大生成树中; 2g)模型构建模块搜索加入补图之后的最大生成树中是否还存在叶子节点,如果存在,执行步骤2d),如果不存在,则最大生成树更新已经完成,执行步骤2h); 2h)模型构建模块给完成更新的最大生成树的边任意指定方向,得到由节点集和有向边集组成的目标空间结构; (3)统计空间结构模型参数 3a)对于每两个在目标空间结构中相邻的部件,模型构建模块计算在所有训练图像中与它们对应位置坐标的差向量并组成差向量矩阵; 3b)对于每两个在目标空间结构中相邻的部件,模型构建模块将它们对应的差向量矩阵的列作向量的平均运算得到均值向量; 3c)对于每两个在目标空间结构中相邻的部件,模型构建模块使用协方差矩阵的计算方法计算它们对应位置坐标的差向量的协方差矩阵; (4)统计表观模型参数 模型构建模块使用训练图像和背景图像对各个部件区域的局部特性进行统计,得到表观模型参数; (5)传送模型参数 模型构建模块向目标检测模块传送空间结构模型参数和表观模型参数; (6)采集被检测图像 图像采集模块获取图像模拟信号,并将图像模拟信号转换成数字信号图像作为后续待处理的被检测图像; (7)初始化目标检测的参数 7a)目标检测模块从模型构建模块中读取空间结构模型参数和表观模型参数; 7b)目标检测模块在n个部件中任意选定一个部件作为中心部件,其它部件作为外围部件; 7c)目标检测模块将中心部件放置在被检测图像中任意位置,设定初始的温度参数,将中心部件位置坐标代入能量公式中,得到当前能量值; (8)获得中心部件位置坐标 8a)目标检测模块将迭代次数初始化为0; 8b)目标检测模块将迭代次数增加1,判断迭代次数是否大于迭代上限,如果是,则执行步骤8j),否则执行步骤8c); 8c)目标检测模块使用蒙那卡罗方法产生一个符合二维高斯分布的二维向量; 8d)目标检测模块将产生的二维向量跟中心部件的位置坐标相加得到新的中心部件位置坐标,将新的中心部件的位置坐标代入能量公式,得到一个新的能量值; 8e)目标检测模块使用新能量值减去当前能量值,得到能量变化值; 8f)目标检测模块判断能量变化值是否小于等于零,如果是,执行步骤8i),否 则,执行步骤8g); 8g)目标检测模块使用蒙那卡罗方法在[0,1]区间内产生一个均匀分布的随机数; 8h)目标检测模块判断是否满足保持条件,如果是,中心部件位置坐标保持原值,执行步骤8b),否则,执行步骤8i); 8i)目标检测模块使用步骤8d)得到的新的中心部件位置坐标值对中心部件位置坐标进行赋值,使用步骤8d)得到的新的能量值对当前能量值进行赋值,执行步骤8b); 8j)记录更新的中心部件位置坐标和当前能量值; (9)判断是否第一次记录中心部件位置坐标 目标检测模块判断是否是第一次执行此(9)步骤,如果是,执行步骤8a),否则,执行步骤10a); (10)获得近似部件位置坐标集合 10a)目标检测模块判断第一次记录的当前能量值是否小于第二次记录的当前能量值,如果是,选择第一次记录的中心部件位置坐标作为近似中心部件位置坐标,否则,选择第二次记录的中心部件位置坐标作为近似中心部件位置坐标; 10b)目标检测模块计算所有外围部件与中心部件对应位置坐标差向量的均值向量; 10c)目标检测模块将均值向量分别与近似中心部件位置坐标相加,得到近似外围部件位置坐标; 10d)目标检测模块将近似外围部件位置坐标和近似中心部件位置坐标组合构成近似部件位置坐标集合; (11)获得最终部件位置坐标集合 11a)目标检测模块使用步骤10d)得到的近似部件位置坐标集合对部件位置坐标集合进行赋值,初始化迭代次数为0,设定初始步长为7; 11b)目标检测模块将初始步长与迭代次数相除,得到当前步长,并将迭代次数增加1; 11c)目标检测模块对目标函数进行求导,得到目标函数关于当前部件位置坐标集合的梯度向量,判断梯度向量的2范数是否小于门限,如果是,则执行步骤11f), 否则,执行步骤11d); 11d)目标检测模块将当前步长与梯度向量相乘,得到更新向量; 11e)目标检测模块将部件位置坐标集合与更新向量相减,得到更新的部件位置坐标集合,执行步骤11b); 11f)重新初始化迭代次数为0; 11g)目标检测模块将迭代次数增加1,判断迭代次数是否大于20,如果是,则执行步骤11l),否则,求得目标函数关于当前部件位置坐标集合的梯度向量,并将当前部件位置坐标集合代入目标函数计算当前目标函数值; 11h)目标检测模块在梯度向量中查找绝对值最大的位,判断此位是否在之前的循环中被选中过,如果是,找到次大的位,否则,执行步骤11i); 11i)目标检测模块判断被选中的位的梯度绝对值是否大于等于阈值,如果是,执行步骤11j),否则执行步骤11l); 11j)目标检测模块判断梯度向量中被选中位的值是否大于0,如果是,则部件位置坐标集合中被选中位的值减去1,未选中位的值保持原值,得到更新的部件位置坐标集合,否则,部件位置坐标集合中被选中的位的值加上1,未选中位的值保持原值,得到更新的部件位置坐标集合; 11k)目标检测模块将更新的部件位置坐标集合代入目标函数计算新目标函数值,判断新目标函数值是否大于步骤11g)中得到的当前目标函数值,如果是,则将更新的部件位置坐标集合赋值给当前部件位置坐标集合,将新目标函数值赋值给当前目标函数值,执行步骤11g),否则,部件位置坐标集合和当前目标函数值保持原值,执行步骤11g); 11l)目标检测模块选择当前部件位置坐标集合作为最终部件位置坐标集合; (12)显示检测结果 检测结果显示模块从目标检测模块读取最终部件位置坐标集合,完成检测结果的显示。 
地址 710071 陕西省西安市太白南路2号