opencv中不稳定点集转换到稳定点集
2015-12-18 16:10
232 查看
这里只是一个项目的简要内容,
在机器视觉中,很多内容都会有不同程度的抖动和不确定性
特别是在实时检测到的物体上,在帧与帧之间通常差别不大也会有很大区别,这个主要是摄像头造成的
可以用二值化的方式查看,会发现处理后的图像边缘有闪烁,那就是摄像头产生的噪点
然后不要小看噪点,对于需要边缘检测的可以试试,比如用canny,
噪点在实时canny的时候会产生变化的边缘长度,从而对检测造成影响
造成的影响可能是在实时检测的某一帧内就检测不到东西了,或者某几帧
这里假设采集到画面通过opencv处理后产生的是一组不稳定的点集,而你需要是一组稳定的点集
这里我用的方式是延迟,用多次判断来减少错误
当然有新的点需要更少的判断,而去掉一个点要多一些判断能有很好的效果,对于短时遮蔽和快速扰动有很好的忽略效果
这里使用了交错判断方式,经过测试,可以发现遮蔽掉部分点,需要一段时间后才能看到点被去掉,而增加一些点可以快速增加,
快速遮蔽点然后撤回,会发现以前点没有影响
在机器视觉中,很多内容都会有不同程度的抖动和不确定性
特别是在实时检测到的物体上,在帧与帧之间通常差别不大也会有很大区别,这个主要是摄像头造成的
可以用二值化的方式查看,会发现处理后的图像边缘有闪烁,那就是摄像头产生的噪点
然后不要小看噪点,对于需要边缘检测的可以试试,比如用canny,
噪点在实时canny的时候会产生变化的边缘长度,从而对检测造成影响
造成的影响可能是在实时检测的某一帧内就检测不到东西了,或者某几帧
这里假设采集到画面通过opencv处理后产生的是一组不稳定的点集,而你需要是一组稳定的点集
这里我用的方式是延迟,用多次判断来减少错误
当然有新的点需要更少的判断,而去掉一个点要多一些判断能有很好的效果,对于短时遮蔽和快速扰动有很好的忽略效果
stationPointArr是绘制用的点,也就是稳定的点集
stationPointTempArr是临时的点,也就是实时产生的点集
int stableValue1 = 0;//等大的稳定数字 int notStableValue1 = 0;//减少产生的不稳定数 int notStableValue2 = 0;//增加产生的不稳定数
//稳定数组里的点 if(stationPointArr.size() == 0)//如果稳定点数组不存在点,那么使用不稳定中的所有点 { stationPointArr = stationPointTempArr; }else { //进行稳定性判断 //假设新旧点集等大 这里可能造成的问题就是消除一个的同时恢复成另一个会造成计算人为未改变 if(stationPointArr.size()==stationPointTempArr.size()) { if(stableValue1 >10) {//如果稳定数值超过10 则认为可以改变 notStableValue1 = 0; notStableValue2 = 0; stableValue1 = 0; } } //假设旧点(用来绘制的点)集比临时的更大 用更长的时间来消除旧的点 if(stationPointArr.size()>stationPointTempArr.size()) { stableValue1 ++; if(notStableValue1<30)notStableValue1++; else { notStableValue1 = 0; stationPointArr = stationPointTempArr; } } //假设新点集更大 用更短的时间来获取新的点 if(stationPointArr.size()<stationPointTempArr.size()) { stableValue1 ++; if(notStableValue2<10)notStableValue2++; else { notStableValue2 = 0; stationPointArr = stationPointTempArr; } } }
这里使用了交错判断方式,经过测试,可以发现遮蔽掉部分点,需要一段时间后才能看到点被去掉,而增加一些点可以快速增加,
快速遮蔽点然后撤回,会发现以前点没有影响
相关文章推荐
- Microsoft Virtual PC虚拟机安装Centos局域网无法ping通问题
- Net4.0的网站在IE10、IE11出现“__doPostBack未定义”的解决办法。
- Linux下的SO_REUSEADDR
- centos7开机后桌面显示指定目录
- Tomcat7 + JRebel6.3.0 + IntelliJ idea 热部署配置过程+错误分析
- 用十条命令在一分钟内检查Linux服务器性能
- 研读:On Making Emerging Trusted Execution Environments Accessible to Developers
- openstack neutron-plugin-openvswitch-agent start 报错
- CentOS 6.0 系统 LAMP(Apache+MySQL+PHP)安装步骤
- HDU 1053 Entropy 哈夫曼树
- Nginx虚拟主机的配置
- Tomcat服务器集群与负载均衡实现
- secureCRT shell终端不能backspace等问题解决
- shell小记:eval
- SublimeText2配置解决代码window下编辑代码提交到linux的格式问题
- TOMCAT访问流程
- 生产环境监控系统Nginx+Nagios+Cacti+Nconf大整合(最新源码安装)【转载】
- linux kill函数用法
- 异常之交叉编译---arm-vfp-linux-gnu/bin/ld: cgic.o: Relocations in generic ELF (EM: 3)
- 在线学习网站