实现原理:
1、 训练阶段
一张背景图像,包含目标物体的训练图像。
将背景图像和训练图像归一化,归一化公式:int(rgb/8)*8 + 8/ 2
统计归一化后每个像素出现的个数。
遍历训练图像中统计出来的像素,如果这个像素值在训练图像中的个数大于其在背景图像中个数的10倍, 则将该像素添加到训练模板中。最终得到的模板是m个像素值。如苹果训练出来的结果是:
<ObjectSignatureData>
<Colors>
<ObjectColorData>
<ObjectColor>255036001000</ObjectColor> //像素值
</ObjectColorData>
<ObjectColorData>
<ObjectColor>255034001000</ObjectColor>
</ObjectColorData>
<ObjectColorData>
<ObjectColor>255034001104</ObjectColor>
</ObjectColorData>
<ObjectColorData>
<ObjectColor>255031001000</ObjectColor>
</ObjectColorData>
<ObjectColorData>
<ObjectColor>255042001180</ObjectColor>
</ObjectColorData>
<ObjectColorData>
<ObjectColor>255049001060</ObjectColor>
</ObjectColorData>
<ObjectColorData>
<ObjectColor>255048001060</ObjectColor>
</ObjectColorData>
</Colors>
<ObjectName>苹果</ObjectName>
</ObjectSignatureData>
2、 识别阶段
指定一张待识别图像,进行归一化操作,统计各个像素出现的个数。
遍历训练得到的模板,如果模板中的像素在识别图像中存在,则match++;一个模板遍历完成后,如果match/模板中像素个数 > 0.8, 则该识别图像中包含模板中训练的图像。