Low-resolution image processing with a quadcopter

Fig. 1.1

Unmanned aerial vehicles (UAV) have become an increasingly important technology that supports people's daily life and military activities. One of most common tasks that an UAV should be able to do is image processing. Image processing enables UAV's to make decisions in real time based on the environment. For example, an UAV can use its camera to detect the objects below, which makes drone delivery a possibility.

With the accessibility of a programmable minidrone (Parrot Mambo) to one of our team members, our team is particularly interested in experimenting with image processing with the minidrone's camera. With the limited resolution of the drone's camera (160 by 120 pixels), we decided to start with the simplest tasks. In particular, we have three broad goals in this project: red color detection, circle detection, and chessboard coordinates determination. The source code for our algorithms can be found in this GitHub repository.

Hover.mp4

Vid. 1.1

For red color detection, our objective is to develop an algorithm that reads an image as input and outputs

  1. a logical value (0 or 1) indicating whether there is a significant presence of the red color in the image and

  2. a processed version of the input image showing only the identified red pixels in the input image.

Theoretically, the methodology in our algorithm is general enough to handle any color of our choice (hence why we sometimes refer to our algorithm as "color detection" instead of "red color detection"), but for the sake of concrete illustration, we focus on the red color.

We note that this relatively simple task is our starting point of the project and is meant to help us get familiar with how colors are represented in the digital realm. However, there are still numerous applications of the algorithm we developed. Our color detection algorithm can be used to isolate objects of a particular color, determine whether an image has a significant presence of a certain color, and quantify the "distance" between two colors.

Fig 1.2

For circle detection, our objective is to develop an algorithm that reads an image as input and outputs

  1. the number of identified circles in the image and

  2. an image showing the exact locations of the identified circles (if the image contains at least one circle).

This algorithm could potentially facilitate autonomous landing. In the case of our minidrone, we can have the drone fly around and land as soon as it sees a circle below. In the case of drone delivery, on the other hand, we could, for example, have the customer put some sort of circular sign on the ground so that when the drone hovers over it and sees it, it will land exactly there and deliver the product to the customer.

Fig 1.3

For chessboard coordinates determination, our objective is to develop an algorithm that reads an image as input and outputs either

an image in which the exact coordinates are labeled on top of each chess square on the chessboard (if the input image contains an identifiable chessboard) or

an all-black image indicating the absence of an identifiable chessboard in the input image (if the input image does not contain an identifiable chessboard).

In some sense, this task is the culmination of our project because it involves concepts and techniques from the previous two tasks and requires the most sophisticated algorithms. Our chessboard coordinates determination algorithm consists of four stages: segmentation of the chessboard, segmentation of the connected squares, separation of the connected squares, and determination of coordinates.

The successful completion of this task would provide a starting point for performing more advanced processing with chessboard images, such as counting the number of pieces on the board and identifying the individual chess pieces with their coordinates.

Fig 1.4