Line Judge But You Can Actually Use It
This project aims to build a line judge system similar to the ones we see from tennis tournaments, but much simpler, less costly, and more efficient. This project contains both hardware and software components.
Hardware components
- Camera.
Software components
Camera feed input.
This component takes live video feed from the camera and passes it to the next processing step. Low latency and high throughput are crucial for this component since it directly affects the effectiveness of the entire pipeline.
We take advantage of the
MediaDevices.getUserMedia()API from JavaScript to build this component.Real-time video feed is also displayed on screen for easy inspection.
Object detection.
In short, we want to detect the location of the ball. For this project, we simply use a threshold-based object detector, which works well for this purpose.
We only proceed if the ball is detected in the video feed.
Ground contact detection.
Given the location of the ball, this component answers the question "Did the ball touch the ground?" Because we control the placement of the device, we can simply place the camera perpendicular to the ground such that any contact with the ground is a contact with a certain y-axis in the video feed. In practice, a soft threshold can be used.
We only proceed if ground contact is detected.
Line judge.
Given the location of the ball, this component answers the question "Is the ball out of bounds?" We place the camera perpendicular to the line (in addition to being perpendicular to the ground) such that this question can be answered by a simple comparison with a point on the x-axis.
Feedback.
We provide the result of the line judge component in a user interface that displays either "In" or "Out" in real time, as our judgment.
Screenshots
Example results captured from real-time display are shown below. Because actual tennis balls and courts are unavailable, we use a ping pong ball for demonstration. Note that the whiteboard and the marked line in the background are for viewing purposes only; our system does not depend on their existence.
Log in or sign up for Devpost to join the conversation.