Unmanned aerial vehicles or UAVs with a real-time video feed offer numerous vision applications ranging from civil to military use cases. Many of these applications depend on detection of objects and tracking those objects along the scenes. The feedback from tracking data can also be used to automatically steer UAVs to follow that object or person of interest. In this article we’ll use code example to show how this can be done using CUVI. We will use the following video feed captured via a UAV, courtesy of IVUL lab at kaust.
The above video is captured at a resolution of 1280×720 at 24fps and is increased to 30fps for viewing purpose. In this example, we will track the black SUV across the feed using CUVI’s goodFeaturesToTrack and trackFeatures functionality.
Since its first release back in year 2007 with compute capability 1.0, CUDA has three more architectural releases and eight more compute capabilities which marks the fact that it’s an ever evolving architecture. Although CUDA is forward compatible but every new release comes with its own new features worth using and an increased thread/memory support. As a rule of thumb every new architecture runs the CUDA code faster than previous generation given both cards have same number of cores.
The comparison below gives a list of feature/functionality support between compute capabilities of NVIDIA’s CUDA enabled devices. Note that atomic operations weren’t supported in the first release and since they are so important, NVIDIA now practically compares architectures from 1.1 and later.
OpenCV version 2.2 was released in December last year with GPU support. This GPU module was written in CUDA which means it’s hardware dependent (only NVIDIA CUDA enabled GPUs can make use of this module). It has opened the gateways of GPU accelerated Image Processing and Computer Vision available right in OpenCV. Using it can be a nightmare for most of you so I decided to log my way of making it work which is not very much different from what’s on the documentation with some added steps.
Microsoft has given a complete facelift to the new Visual Studio 2010. A whole bunch of new features and removal of a couple of them. With the new VS 2010, you cannot define custom build rules with .rules file as it was done before. Now there’s a whole new bunch of modules that need to be specified in order to make a set of custom build rules to work with Visual Studio 2010 project. This blog explains the steps involved in making CUDA work on the new Visual Studio 2010.