学习opencv 使用反向块投影搜寻图像中的物体的位置 cvCalcBackProjectPatch()
来源:互联网 发布:d5 1dx2知乎 编辑:程序博客网 时间:2024/05/01 18:05
步骤:
1.使用一幅只包含小物体的图片(图片大小和物体一样大即可, 不需要向上一篇同样大),计算其二维直方图 (HSV空间中的 h(亮度)和 s (饱和度) 二维直方图 (还可以和图像的梯度和(或)梯度角度结合起来,查找纹理相似 和(或) 颜色相似
2.输入一幅待搜索的图片, 转化为HSV空间 ,只取h 和 s 分量
3. 设置搜索块大小和物体大小相同(即和第1步中图片大小相同) ,使用cvCalcBackProjectPatch反向块投影 和图片result
4.在result中取最大值所在位置,即可得到物体在输入图片中的位置了。 (或者设定一个阈值)
示例程序如下:
第二步输入图像即待搜索的图像如下:
在我的E7200 CPU , 1GB内存 上大概运行了20秒内吧,将size内的数应该可以再适当改的更小此,速度就会提高更多了
结果如下(见图中红色小圆圈标记出来):
若待搜索的图片里有多个此物体,也是可以通过这种方法找出来的
产于cvCalcBackProjectPatch的大概意义 ,
按我的理解的话,应该是通过块窗口搜索图像,比较窗口中对应像素的二维直方图与给定直方图的差异,若完全相同,那当然就越匹配
对于不同的相关度方法,越匹配,其值由相关度方法而定,
如本程序使用的是
即越相似,则值越接近1. 反之则趋于0
其实使用的时候还可以将图像的梯度考虑进去求解,
如求出图像的梯度+色彩的多维直方图,这样就能得搜索到一定纹理特征和颜色特征的物体了。
ps:此方法搜索是通过统计学特征相似度!和模板匹配法是不同的,各有个的用途
如果只是为了检测某个不变的实物,,还不如使用模板匹配函数,更快
- 学习opencv 使用反向块投影搜寻图像中的物体的位置 cvCalcBackProjectPatch()
- 学习opencv 使用反向块投影搜寻图像中的物体的位置 cvCalcBackProjectPatch
- 学习opencv 使用反向块投影搜寻图像中的物体的位置 cvCalcBackProjectPatch
- 使用反向块投影搜寻图像中的物体 cvCalcBackProjectPatch
- 学习opencv,使用反向块投影搜索图像中物体的位置cvCalcBackProjectPatch
- cvCalcBackProjectPatch() 基于块的反向投影
- opencv中直方图的反向投影之cvCalcBackProjectPatch
- opencv学习笔记(三十一)基于块的反向投影
- OpenCV学习笔记(2):直方图的反向投影
- OpenCV入门(二十四)-- 图块的反向投影
- OpenCV 反向投影, 基于块的反向投影 和 模板匹配
- opencv学习笔记(三十)反向投影
- OpenCV之灰度直方图反向投影(图像相似性检测)
- OpenCV之彩色直方图反向投影(图像相似性检测)
- OpenCV之彩色直方图反向投影(图像相似性检测)
- OpenCV之灰度直方图反向投影(图像相似性检测)
- OpenCV学习笔记--反向投影
- opencv学习之反向投影
- 黑马程序员_面试之懒汉式和饿汉式小结
- JSP与Servlet之间的值传递种种
- 使用JNI在C中调用java代码
- 11-26 dedeCMS之addonshop数据表解释
- android 解析json数据格式
- 学习opencv 使用反向块投影搜寻图像中的物体的位置 cvCalcBackProjectPatch()
- linux下自动获取并安装软件包 apt-get 的命令介绍
- 应用层HTTP数据包的截获与还原技术的实现
- 【OpenCV入门指南】第一篇 安装OpenCV
- redmine邮箱配置
- 网络存储(调用WebService)java.lang.NoClassDefFoundError: org.ksoap2.serialization.SoapObject
- xcodebuild批量打包的一些心得
- 使用JNI在java中调用C代码
- LZW数据压缩算法的原理分析