Robotics Engineer
Computer Vision
Plant Segmentation
I was a member of the Stem Identification subteam of team PhoenixBot (winner of Farm Robotics Challenge 2024). My job was to effectively segment plants into clusters without knowing the number of clusters there are. Relevant skills used in this project are:​
​
-
OpenCV: HSV thresholding and masking
-
DBSCAN: tuning parameters eps and min_samples
-
ROS2: subscribes to image topics and publishes array of clusters (custom messages)
​
My methodology for this project is shown below. (github is private 🥲)

Thresholding
Given an image, I isolated the green areas of the image using the HSV thresholding function cv2.inrange(). A mask is then created by applying the "bitwise and" logic between the image and the green areas.
​
Future improvement: Otsu Thresholding
Segmentation
To segment the points, I used the DBSCAN algorithm. I chose this algorithm as it clusters points that are "near" each other based on the epsilon parameter. A problem we eventually ran into was that the algorithm fails when plants and weeds overlapped each other.
​
Future improvement: YOLOv8 Segmentation


Optimization
DBSCAN's algorithm has a complexity of O(n log n). To make it run faster, I decided to compress the image to a smaller dimension. Yes, I will lose some data points. But, after testing, it does not change the segmentation results significantly while decreasing segmentation speed by approximately 30 times.
Final Result!!!
