Ram Cherukuri, MathWorks
Image processing and computer vision applications have emerged as some of the key domains for embedded applications. Image sensors in your phones, PDAs, cameras, and smart cameras are examples of this, and we have more in store with the development of advanced driver assistance systems for automotive applications.
More and more sophisticated algorithms for new functionality and better performance drive this competitive space. So, in addition to using better hardware architectures such as DSPs, FPGAs and GPUs, it is necessary to have efficient software implementation to meet the large computational demands within the memory, size, and power constraints of embedded platforms.
You can begin your design by using ideal floating point to develop robust algorithms such as noise filtering, edge detection, and position tracking, to name a few. For efficient implementation that meets the hardware constraints, you can convert your algorithm to single precision or fixed point that significantly reduces the hardware resources consumed, such as memory. You need to ensure this conversion translates to numerical behavior comparable to the ideal behavior within tolerance, while meeting the constraints of the embedded platform.
This video highlights such a design and implementation workflow using a simple laser detection example and shares some best practices in converting your designs to single precision or fixed point.