opencv 直方图反向投影


       直方图反向投影式通过给定的直方图信息,在图像找到相应的像素分布区域,opencv提供两种算法,一个是基于像素的,一个是基于块的。

使用方法不写了,可以参考一下几个网站:

直方图反向投影参考1

直方图参考2

 

测试例子1:灰度直方图反向投影

灰度直方图反向投影

效果图:

 2
第一个图为源图像,中间的那个小图像是产生用于反向投影的直方图的图像,最后的用直方图均衡化后的结果图像,可以看到,苹果的像素位置几被找到了。

 

测试例子2:彩色直方图反向投影测试

彩色图像直方图反向投影

测试结果:

 QQ截图20120620142552

手的肤色位置基本找到了,但是有一个问题,在做直方图反向的时候,直方图分级是16等分,并不是256等分,下图是32等分和8等分的图像效果:

4      32等分 5 8等分

程序里面使用了SHV分量,也算是肤色检测的一个实例,里面的颜色区分很明显,所有采用大一点的区域统计,能更好的找到肤色的位置,如果采用很细的颜色区分,光照的影响也会考虑进去了。

测试例子3:基于块的直方图投影

这种方法速度很慢,模版图像别弄的太大了。

基于块的图像直方图反向投影


测试图像:

当模版图像小雨目标的时候,作为区域检测器,测试如下:可以找到手区域

6

当模版等于目标的时候,测试如下:输出图像,较亮的部分就是人的头部大致位置

7

基于块的反向,速度太慢了。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM