关于如何对检测到的对象进行平均处理的建议

时间:2017-01-31 11:51:56

标签: c++ opencv raspberry-pi ros noise-reduction

背景

我目前正在尝试使用运行 Ubuntu MATE 16.04 LTS Rapsberry Pi 上的 ROS 构建自主无人机。解决现在识别红圈的计算机视觉问题。由于本质上,无人机不稳定(因为有一个内部PID控制器稳定无人机)并且由于照明条件,无人机经常检测相同的圆但是以非常不稳定的方式。大约80%的帧检测到圆圈,而另外20%的帧根本没有。当无人机在20%的时间内检测到随机噪声圈而不是80%的剩余时,这也是相反的。

目的

我想知道是否有一种很好的方法来平均我现在拥有的帧数。通过这种方式,我可以完全摆脱误报和漏报。

相关代码

cv::medianBlur(intr_ptr, intr_ptr, 7); 

strel_size.width = 3; 
strel_size.height = 3; 
cv::Mat strel = cv::getStructuringElement(cv::MORPH_ELLIPSE, 
                    strel_size);
cv::morphologyEx(img_bin, intr_ptr, cv::MORPH_OPEN, strel,
                       cv::Point(-1,-1), 3);

cv::bitwise_not(intr_ptr,intr_ptr);
cv::GaussianBlur(intr_ptr, intr_ptr, cv::Size(7,7), 2, 2);
cv::vector<cv::Vec3f> circles;
cv::HoughCircles(intr_ptr, circles, CV_HOUGH_GRADIENT, 1, 70, 
                        140, 15, 10, 40);

如您所见,我正在执行medianBlur开放形态操作GaussianBlur以消除噪音。但这还不够。

0 个答案:

没有答案