博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OpenCV中Camshitf算法学习(补充)
阅读量:4878 次
发布时间:2019-06-11

本文共 1443 字,大约阅读时间需要 4 分钟。

结合,做一些简单的补充,包括:

  • 实现全自动跟随的一种方法

参考opencv中的相关,可以截取目标物体的图片,由此预先计算出其色彩投影图,用于实际的目标跟随。

1 Mat hsv,mask,hue,hist;2 cvtColor( cut_image, hsv, CV_BGR2HSV );//cut_image为提前截取的目标图片3 inRange( hsv, Scalar( MIN( _hmin, _hmax ), MIN( _smin, _smax ), MIN( _vmin, _vmax ) ),Scalar( MAX( _hmin, _hmax ), MAX( _smin, _smax ), MAX( _vmin, _vmax ) ),mask );4 5 int ch[] = {
0, 0};6 hue.create(hsv.size(), hsv.depth());7 mixChannels(&hsv, 1, &hue, 1, ch, 1);8 calcHist( &hue,1,0,mask,hist,1,&hsize,&phranges);9 normalize(hist, hist, 0, 255, CV_MINMAX);

上述代码计算出了目标物体的色彩投影图 hist,之后利用hist便可以实现目标物体的全自动跟随了

1 cvtColor( sceneImg,hsv,CV_BGR2HSV); 2 inRange( hsv, Scalar( MIN( _hmin, _hmax ), MIN( _smin, _smax ), MIN( _vmin, _vmax ) ),Scalar( MAX( _hmin, _hmax ), MAX( _smin, _smax ), MAX( _vmin, _vmax ) ),mask ); 3  4 Mat backproj; 5 hue.create(hsv.size(), hsv.depth()); 6 mixChannels(&hsv, 1, &hue, 1, ch, 1); 7 calcBackProject( &hue, 1, 0, hist, backproj, &phranges ); 8 backproj &= mask; 9 trackWindow = Rect( 0, 0, 640, 480 );10 trackBox =  CamShift(backproj, trackWindow,11 TermCriteria( CV_TERMCRIT_EPS | CV_TERMCRIT_ITER, 10, 1 ));
  • 缺陷

  camshift能有效解决目标变形和遮挡的问题,对系统资源要求不高,时间复杂度低,在简单背景下能够取得良好的跟踪效果。但当背景较为复杂,或者有许 多与目标颜色相似像素干扰的情况下,会导致跟踪失败。因为它单纯的考虑颜色直方图,忽略了目标的空间分布特性,所以这种情况下需加入对跟踪目标的预测算法。

  由于这个缺点,因此可以利用surf算法进行特征点匹配,从而克服camshif因复杂环境造成的影响,不过surf算法的一个缺陷是不能解决目标物体的变形。由此,最好的解决方法便是 camshift+surf 。或者说利用PCL。
2013.10.25

转载于:https://www.cnblogs.com/steven-blog/p/3388426.html

你可能感兴趣的文章
8-1-组队赛
查看>>
codility: CountTriangles
查看>>
赛斯说
查看>>
python 中的pipe
查看>>
(SQL Analyzer services)定义链接维度
查看>>
squid
查看>>
系统开发管理、架构与设计步步谈随笔索引
查看>>
Java的时间空间复杂度详解
查看>>
有效防止SQL注入漏洞
查看>>
Linux chown命令
查看>>
十、I/O流——4-输入、输出流体系
查看>>
十二、网络编程——4-基于UDP协议的网络编程
查看>>
异常处理与调试6 - 零基础入门学习Delphi55(完)
查看>>
if语句三种形式
查看>>
正则表达式之字符串验证
查看>>
codeblocks如何支持_tmain?可移植代码的编码推荐
查看>>
省市联动 填坑
查看>>
canvas写的一个小时钟demo
查看>>
原来今天是冬至
查看>>
又混了一天班
查看>>