One of the most intriguing things about Optical Flow is the calculation of Focus of Expansion or FoE. FoE is the point where all flow vectors converge when a camera moves in a forward direction. It often indicates the direction where a camera is heading or aimed at, and is also regarded as the same point where flow vectors diverge from when the camera moves backwards. FoE plays a key role in most computer vision applications, including self-driving cars, guided missiles, obstacle detection and in robotics. To succeed in its applications, FoE should be calculated in real-time consistently at a fairly accurate level. The following is a demonstration of my algorithm for this, where I estimate the FoE using a probabilistic approach. This calculates the FoE for a single camera that has an inconsistent motion model.
The red circle signifies the FoE in question below.
Here I first obtain a set of sparse flow vectors as described in here. The flow vectors are obtained at frame rate using the Lucas Kannade method and when the number of flow vectors fall below a minimum threshold, flow vectors are re-calculated. Then the algorithm seeks the linear functions for those flow vectors (normalized) and then finds the intersection points for those linear functions. In the ideal case, these intersection points must coincide with each other as it theoretically represents the FoE, but due to the error, they don’t. Therefore we need to filter out the error. To do this, intersection points are arranged into a histogram and then the maximum bin will be taken out. Intersection points that fit inside the maximum bin are further filtered out through a Discrete Kalman Filter in order to estimate (or predict) the most likely intersection point (i.e. FoE).
It’s been a while since I last blogged as I kept receiving piles and piles of work. I do realize now, that research is not a leisurely activity although it may seem like, for a person who is looking from outside. Apart from usual activities of experiments & literature surveys, doing tutorials, marking assignments, writing conference papers, and making presentations are enough to crush a PhD student to his limits. Nevertheless all these implications help in testifying one’s potential for research and the love for science. So I thought of putting all that matters aside and write a post for the sake of contributing to the scientific knowledge. In particular I’d like to share some of the work I did in my research while taking a short break off from my studies.
Marker-less Augmented Reality has been my primary source of curiosity from the day I started my PhD journey. With my research I am exploring the ways in which we can apply AR into HRI (Human-Robot Interactions) and further improve the collaborative patterns between the man and the robot. Consequently I came up with a state-of-the-art interface based on a well- known marker-less AR platform named PTAMM (Parallel Tracking and Multiple Mapping). The interface that I brought up has the capability for marking an arbitrary point in space persistently with a virtual object (AR object). What does the term persistence mean? Suppose you have an AR object that can be clearly seen through your camera. Now you change the camera perspective, move the camera to a different location and return to your AR object from a different direction. At this instance you must still see the AR object persistently anchored at its original location. The idea may look simple but systems with such a functionality are still rare, even at the existence of powerful AR frameworks (i.e. PTAM, PTAMM). This is what I describe as Persistent Augmented Reality. My AR interface provides the capability to appear an AR object persistent over time and space, no matter in which direction you change the camera. See the video below. But how does it work? What are the concepts? are the questions that you might wonder at this point.
Continue reading “Parallel Tracking And Global Mapping”
It’s known that the Turing machine was the first theoretical model of modern day computers. But it’ll be a fruitful effort to find out why? The fascinating thing was it’s still capable of computing most of the existing computer operations including basic arithmetic (addition, subtraction, etc…) into much complex algorithms. Therefore it’s worth digging down deep into this idea and see how it relates to (or how it does) computer operations.
The bare roots of Turing Machines go back into the theory of computation. During the early decades of 1900’s there’s been an increasing demand for a machine capable of computing. Obviously this was a part of several military projects run by allied groups for gaining victory over the war. So that, this signifies the necessity for defining the science behind computing. Generally, the computational theory consists of three parts.
Continue reading “Turing Machines – A Review”