В настоящее время я пытаюсь построить автономный дрон, используя ROS на моем Rapsberry Pi который работает Ubuntu MATE 16.04 LTS. Решение проблемы компьютерного зрения по распознаванию красных кругов на данный момент. Поскольку по своей природе дрон не стабилен (так как имеется внутренний ПИД-регулятор, стабилизирующий дрона), и из-за условий освещения дрон часто обнаруживает тот же круг, но очень нестабильно. Около 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
избавиться от шума. Однако этого недостаточно.
Задача ещё не решена.
Других решений пока нет …