Filter for blobs that fit on a circle

Using RANSAC to find combinations of blobs that fit on a circle.

Taking ~1ms per iteration of blob detection and filteration.

Signed-off-by: Milind Upadhyay <milind.upadhyay@gmail.com>
Change-Id: I231e921135aca217a8715c7a7421829eb557119f
diff --git a/y2022/vision/camera_reader.cc b/y2022/vision/camera_reader.cc
index f466c8b..e9688ea 100644
--- a/y2022/vision/camera_reader.cc
+++ b/y2022/vision/camera_reader.cc
@@ -58,11 +58,12 @@
       cv::Mat::zeros(cv::Size(image_mat.cols, image_mat.rows), CV_8UC1);
   cv::Mat ret_image =
       cv::Mat::zeros(cv::Size(image_mat.cols, image_mat.rows), CV_8UC3);
+  cv::Point centroid;
   BlobDetector::ExtractBlobs(image_mat, binarized_image, ret_image,
-                             filtered_blobs, unfiltered_blobs, blob_stats);
-  // TODO(milind): use actual centroid
+                             filtered_blobs, unfiltered_blobs, blob_stats,
+                             centroid);
   TargetEstimateT target = TargetEstimator::EstimateTargetLocation(
-      blob_stats[0].centroid, CameraIntrinsics(), CameraExtrinsics());
+      centroid, CameraIntrinsics(), CameraExtrinsics());
 
   auto builder = target_estimate_sender_.MakeBuilder();
   builder.CheckOk(builder.Send(TargetEstimate::Pack(*builder.fbb(), &target)));