在Camshift算法应用跟踪中原理是应用根据目标颜色特征与背景颜色特征差异大,形成跟踪。所以我们需要统计目标颜色特征,以及背景颜色特征,利用颜色直方图统计颜色特征,再通过反向投影图得到颜色概率分布图。我们在实验中会看到反向投影图是一个灰度图,当目标的颜色与背景不一样时候,跟踪效果最好(目标是白色,背景是黑色)。其中在Cvinrange函数中Vmax,vmin,smin中作用就是调整数值,使目标颜色特征与背景特征不一样,不同情况,值是不一样。当你设置的数值比较合适时候,跟踪效果特别好 图像的反向投影图是用输入图像的某一位置上像素值(多维或灰度)对应在直方图的一个bin上的值来代替该像素值,所以得到的反向投影图是单通的。用统计学术语,输出图像象素点的值是观测数组在某个分布(直方图)下的概率。 其中b(xi)表示在位置xi上像素对应的直方图第b(xi)个bin,直方图共m个bin,qu表示第u个bin的值。
还是以例子说明
(1)例如灰度图像如下
Image= 0 1 2 3 4 5 6 7 8 9 10 11 8 9 14 15 (2)该灰度图的直方图为(bin指定的区间为[0,3),[4,7),[8,11),[12,16))
Histogram= 4 4 6 2(3)反向投影图 Back_Projection= 4 4 4 4 4 4 4 4 6 6 6 6 6 6 2 2 例如位置(0,0)上的像素值为0,对应的bin为[0,3),所以反向直方图在该位置上的值这个bin的值4。 1.反向投影的作用是什么?
假设我们有一张100x100的输入图像,有一张10x10的模板图像,查找的过程是这样的: 3.反向投影的结果是什么? 反向投影的结果包含了:以每个输入图像像素点为起点的直方图对比结果。可以把它看成是一个二维的浮点型数组,二维矩阵,或者单通道的浮点型图像。 4.特殊情况怎么样? 如果输入图像和模板图像一样大,那么反向投影相当于直方图对比。如果输入图像比模板图像还小,直接罢工~~。
原理:反向投影是一种记录给定图像中的像素点如何适应直方图模型像素分布的方式。 所谓反向投影就是首先计算某一特征的直方图模型,然后使用模型去寻找图像中存在的该特征。 假设你已经通过下图得到一个肤色直方图(Hue-Saturation), 旁边的直方图就是 模型直方图 ( 代表手掌的皮肤色调).你可以通过掩码操作来抓取手掌所在区域的直方图: 我们要做的就是使用 模型直方图 (代表手掌的皮肤色调) 来检测测试图像中的皮肤区域。以下是检测的步骤
使用统计学的语言, BackProjection 中储存的数值代表了测试图像中该像素属于皮肤区域的 概率 。比如以上图为例, 亮起的区域是皮肤区域的概率更大(事实确实如此),而更暗的区域则表示更低的概率(注意手掌内部和边缘的阴影影响了检测的精度)。 |
|