top of page

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 🥲)

Screenshot from 2025-01-05 01-14-31.png

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

Figure_1.png
Screenshot from 2025-01-05 03-30-00.png

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!!!

image_screenshot_05.01.2025.png
bottom of page