Abstract:
The invention employs state-of-the-art computer graphics to advance the field of computer vision. The invention uses model-generated graphics in image processing: match image frames rendered by a graphics engine to those from a camera, in real-time, frame by frame, pixel by pixel. An a priori model of the world is required, but the benefit is very accurate position and pose of the camera for every frame.

Description:
This invention uses state-of-the-art computer graphics to advance the field of computer vision. 
     Graphics engines, particularly those used in real-time, first person shooter games, have become very realistic. The fundamental idea in this invention is to use graphics engines in image processing: match image frames generated by a real-time graphics engine to those from a camera. 
     BACKGROUND OF THE INVENTION 
     There are two distinct tasks in vision or image processing. On the one hand there is the difficult task of image analysis and feature recognition, and on the other there is the less difficult task of computing the 3D world position of the camera given an input image. 
     In biological vision, these two tasks are intertwined together such that it is difficult to distinguish one from the other. We perceive our position in world coordinates by recognizing and triangulating from features around us. It seems we can not triangulate if we don&#39;t identify first the features we triangulate from, and we can&#39;t really identify unless we can place a feature somewhere in the 3D world we live in. 
     Most, if not all, vision systems in prior art are an attempt to implement both tasks in the same system. For instance, reference patent number U.S. Pat. No. 5,801,970 comprises both tasks; reference patent number U.S. Pat. No. 6,704,621 seems to comprise of triangulation alone, but it actually requires recognition of the road. 
     SUMMARY OF THE INVENTION 
     
         
         
           
             If the triangulation task can indeed be made separate from and independent of the analysis and feature recognition tasks, then we would need half as much computing resources in a system, such as a computer, that does not perform the latter task. By taking advantage of current advances in graphics computer processing, this invention allows for triangulation of the camera position without the usual scene analysis and feature recognition. It utilizes an a priori, accurate model of the world within the field of vision. The 3D model is rendered onto a graphics surface using the latest graphics processing units. Each frame coming from the camera is then searched for a best match in a number of candidate renderings on the graphics surface. The count of rendered images to compare to is made small by computing the change in camera position and angle of view from one frame to another, and then using the results of such computations to limit the next possible positions and angles of view to render the a priori world model. 
           
         
       
    
     The main advantage of this invention over prior art is the mapping of the real world onto a world model. One application for which this is most suited is robotic programming. A robot that is guided by an a priori map and that knows its position in that map is far more superior to one that is not so guided. It is superior with regards to navigation, homing, path finding, obstacle avoidance, aiming for point of attention, and other robotic tasks. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a diagram of an embodiment of the invention showing how camera motion in the real world is tracked in a 3D model of the world. 
         FIG. 2  is an illustration of either the rendering surface or the camera frame divided into areas. 
         FIG. 3  is a high level Flowchart of the algorithm described below. 
     
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     In  FIG. 1  a diagram of a preferred embodiment of the invention is shown. An a priori model of the world  100  is rendered using currently available advanced graphics computer processor  101  onto rendered images  102 ,  103 , and  104 . This invention can be implemented in software (as in a computer program product), or partially in software and hardware, or hardware only. The model is an accurate but not necessarily complete model of the real world  110 . The purpose of the invention is to track the position and view angle of the camera  309  that produces frames  107  and  108  at time t and t+1, respectively. Frames  107  and  108  serve as the primary real-time input to the apparatus. Optical flow vectors are calculated from frames  107  and  108  using state-of-the-art methods. From those optical flow vectors, an accurate heading and camera view angle can be derived in a way that is robust against noise and outliers, according to prior art. Next probable positions are then hypothesized around a point that lies on the line defined by the current heading, at a distance from the current position determined from current speed ( 105 ). The probable candidate positions N are rendered into N candidate images  102 ,  103 , and  104  by the graphics processor or processors  101 . Each rendered image is then compared to the current camera frame and the best matching image selected ( 106 ). From the selected image, the most accurate position, instantaneous velocity, view angle, and angular velocity of the camera can also be selected from the candidate positions. 
     Dynamic, frame-by-frame triangulation (or tracking) is accomplished in this invention using the following steps, the Flowchart for which is shown in  FIG. 3 . In the following descriptions of steps, for every video frame coming from the camera, there is a hypothesized set of possible frames rendered by the graphics processor to compare to. In this invention, such comparisons are the most expensive computationally. The video frame is equal in both vertical and horizontal resolution to the rendered image. Each frame and each rendered image is divided into a number of rectangular areas which may overlap one another by a number of pixels, as shown in  FIG. 2 . 
     1. Start with a frame from the camera and a known, absolute world position P(t), view angle V(t), zero velocity u(t)=0, and zero angular velocity w(t)=0 of the camera at the instant of time ‘t’ when that frame is taken. Calculate the discrete Fast Fourier Transform (FFT) of all areas (Cs) in this frame, and extract the phase components of the transform, PFC(a, t) in area ‘a’ at time ‘t’. 
     2. Take the next frame. Calculate all PFC(a, t+1), the phase component of FFT in area ‘a’ at time ‘t+1’. 
     3. Compute the phase differences between PFC(a, t) and PFC(a, t+1), and then perform an inverse FFT transform on the phase difference matrix in order to obtain the phase correlation surface. If the camera neither panned nor moved from ‘t’ to ‘t+1’, then the phase correlation surface for each area would indicate a maximum at the center of that area ‘a’. If it moved or panned, then the maximum would occur somewhere other than the center of each area. Calculate the optical flow vector for each area OP(a, t+1), which is defined as the offset from the center to the maximum point in the phase correlation surface. (If there are moving objects in an area of the scenery, each moving object would cause an extra peak in the phase correlation surface, but as long as the two areas from subsequent frames being compared are dominated by static objects like buildings or walls or the ground, then those other peaks should be lower than the peak that corresponds to camera position and/or view angle change.) 
     4. From all such OP(a, t+1) and using absolute position P(t), view angle V(t), current velocity u(t), and current angular velocity w(t), calculate a range of all possible absolute camera positions (vectors Pi(t+1)) and view angles (unit vectors Vi(t+1)) at time t+1. Pi may be chosen to lie within the line of motion (instantaneous heading), which is easily determined from OP(a, t+1) as detailed in Chapter 17 of the reference book titled “Robot Vision” by B. K. P. Horn published in 1986 by The MIT Press. 
     5. Hypothesize a small number (say N) of possible camera positions Pi(t+1) and view angles Vi(t+1) to render using the a priori model. This results in N image renderings Mi(a, t+1). Calculate the FFT of each Mi(a, t+1) and extract the phase components of the transform, PFMi(a, t+1). 
     6. The best match to the camera frame at t+1 is that Mi each of whose area PFMi(a, t+1) phase differences with PFC(a, t+1) results in an inverse FFT transform which is a 2D graph with maximum nearest the center, all areas considered. From this the best possible position P(t+1) and view angle V(t+1) are also selected. The instantaneous velocity is then determined as u(t+1)=P(t+1)−P(t), together with the instantaneous angular velocity w(t)=V(t+1)−V(t). 
     7. Throw away the previous time t calculations and frames and make t+1 the current time by copying over P(t+1) to P(t), V(t+1) to V(t), u(t+1) to u(t), w(t+1) to w(t), and PFC(a, t+1) to PFC(a, t). Jump back to Step 2. 
     As long as the field of view of the camera is dominated by static entities (static with respect to world coordinates, with less area of the image taken up by moving entities), then dynamic triangulation or tracking is possible. The peak in the phase correlation surface corresponds to camera motion as long as the camera frames and thereby the areas are dominated by static entities. This is well-known in prior art, as detailed in reference article titled “Television Motion Measurement for DATV and other Applications” by G. A. Thomas published in 1987 by the British Broadcasting Corporation (BBC). 
     ALTERNATIVE EMBODIMENTS 
     In an alternate embodiment of the invention, the computational cost of Steps 5 and 6 are amortized over K frames, and the resulting correction propagated to a future frame. For example, if a reference frame is chosen for every 5 camera frames (K=5), then the first frame is a reference frame, and Steps 5 and 6 can be done within the time interval from the first frame sample to the fifth (t+1 to t+5). Meanwhile, all other steps (Steps 1 through 4 and 7) are performed on all samples, using uncorrected values for P and V for all sample frames. On the fifth frame, when the best match for the first frame is finally selected, the error corrections are applied. The same error corrections can be applied to all five values of P and V, and because by t+5 all previous values of P and V have been discarded, only P(t+5) and V(t+5) need be corrected. 
     In another embodiment of the invention, the computational cost of Steps 5 and 6 is dealt with by using a plurality of low-cost gaming graphics processors, one for each hypothesized camera location. 
     In still another embodiment, instead of computing for the phase correlation surface between the camera frame and a rendered image, in Steps 5 and 6, the sum of squares of the differences in luminance values can be computed instead (called “direct method” in prior art). The best match is the rendered image with the least sum of squares. 
     What have been described above are preferred embodiments of the invention. However, it is possible to embody the invention in specific forms other than those of the preferred embodiments described above. For instance, instead of square or rectangular areas ‘a’, circular areas may be used instead. 
     An exemplary application of the invention is tracking the position and view angle of the camera. However, one skilled in the art will understand and recognize that an apparatus or method of operation in accordance with the invention can be applied in any scenario wherein determination of object position, navigation, or homing are of necessity. The preferred embodiments are merely illustrative and should not be considered restrictive in any way. The scope of the invention is given by the appended claims, rather than by the above description, and all variations and equivalents which fall within the spirit of the claims are intended to be included therein.