Introduction
Doing image processing and especially blob analysis it is often required to check some objects' shape and depending on it perform further processing of a particular object or not. For example, some applications may require finding only circles from all the detected objects, or quadrilaterals, rectangles, etc. The article will describe some basic techniques, which may allow detecting such shapes like circles, triangles and quadrilaterals (plus their subtypes, like rectangle, rhombus, rectangled triangle, etc.). Note: most of the code snippets provided in the article are based on the AForge.NET framework, but can be easily implemented using any other library providing similar image processing routines.
Prerequisites
Before we go into shape analysis, we need to locate objects we are going to check and their edge pixels, since they will be used as the input for shape analysis algorithms we are going to discuss. First thing to note is that we'll suppose our input images contain objects of different colors on a black background. If the background is not black, then it should be turned into black using, for example, some color filters, before we start with described below steps. Here is a sample source image we are going to process and detect shapes of objects on it: