opencv2 反向投影直方图检测特定图像内容

 什么是backproject?

反向投影:opencv docs给出的概念是“一种记录给定图像中的像素点如何适应直方图模型像素分布的方式。简单的讲, 所谓反向投影就是首先计算某一特征的直方图模型,然后使用模型去寻找图像中存在的该特征。


第一句讲的是backproject的算法实质,但是不好理解,第二句好理解,但是只是重点讲了backproject的应用。 两句都提到了直方图的概念。

从图像到直方图,这个过程比较好理解。

而backproject正是反过来,由直方图到形成图像,算法步骤有点类似于直方图均衡化,只不过,直方图均衡化是将图像结果中的每个像素的值由一个地方搬到一个新地方(我对直方图均衡化的直观理解),而backproject是直接取直方图中的值,即以灰度为例,某种灰度值在整幅图像中所占面积越大,其在直方图中的值越大,backproject时,其对应的像素的新值越大(越亮),反过来,某灰度值所占面积越小,其新值就越小。


而backproject更常用的用途是:查找指定特征,正是第二句话的描述。 此时,backproject的基本过程是:

1. 拿到 特征图像 (或模板图像)

2. 得到 特征图像的直方图

3. 拿到源图像,依据源图像的每个像素的值,在特征图像的直方图中找到对应的值,然后将直方图的值赋给新的图像,backproject算法就完成了。


一幅图像的反向投影利用了其原始图像(或目标区域)的直方图,将该直方图作为一张查找表来找对应像素点的像素值,即将目标图像像素点的值设置为原始图像(或目标区域)直方图上对应的bin值。该bin值代表了(目标区域)上该像素值出现的概率。从而得到一幅图像的概率值。从而我们可以通过这幅概率图可以得知在这幅图像中,目标出现可能出现的位置。


以上都是摘自网络,个人理解蓝色字的说的在理。我的理解是:只需要生成模版的直方图,(得到的直方图需要归一化normalize处理),然后在大图中的像素对应的换成直方图的概率值。最后得到的大图只是个概率图,然后可以进行阈值化处理!  这里得到的概率图。。。。。。这里的实现过程我也模糊,还有应用于彩色图像

代码本来想贴在这的,可是看到大神的博客,都封装成类了,

http://blog.csdn.net/thefutureisour/article/details/7554716

有问题啊!看这个http://www.tuicool.com/articles/U32iUn2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值