Abstract:
I describe and claim a system and method for improved keystone correction. The method comprising identifying input values associated with an image projected on the projection surface, the input values including one or more center-points on edges of a distorted projection of the image and including a plurality of corners within the distorted projection of the image, the corners corresponding to an undistorted projection of the image, determining one or more keystone scaling values responsive to the identifying, and predistorting the image responsive to the determining, the predistorted image exhibiting no distortion and aligning with the plurality of corners when projected on the projection surface.

Description:
RELATED APPLICATIONS 
   This application is a continuation-in-part of U.S. patent application Ser. Nos. 10/723,002, filed Nov. 26, 2003, 10/753,833, filed Jan. 5, 2004, and 10/832,488, filed Apr. 26, 2004. U.S. patent application Ser. Nos. 10/723,002 and 10/753,833 claim priority from U.S. provisional patent application 60/443,422, filed Jan. 28, 2003. U.S. patent application Ser. No. 10/832,488 claims priority from U.S. patent application Ser. No. 10/753,833, which claims priority to U.S. provisional patent application 60/443,422 filed Jan. 28, 2003. We incorporate the all of these applications in their entirety. 

   FIELD OF THE INVENTION 
   This invention relates to image projection and, more specifically, to an improved system and method of correcting keystone distortion of projected images. 
   BACKGROUND OF THE INVENTION 
   Projection systems are commonly used in academic, business, and personal environments to project images on screens or walls. The display of these projected images is dependent upon the orientation of the projection systems relative to the screens or walls. For instance, when a projection system is not oriented perpendicularly to a screen, the shape of the image will often appear stretched, deformed, or otherwise misshapen. This distortion of the projected image is often referred to as keystoning, since the shape of distorted image typically resembles a trapezoid or keystone. 
   There are several ways to correct keystone distortion. Projection systems might, for example, include optics that compensate for keystone distortion. These optics, however, are costly and prone to dust collection that degrades the quality of the projected images. Projection systems might also include gauges used to manually adjust the projected image to eliminate or minimize keystone distortion. These manual adjustments however tend to move the projected image off of the screen or wall and are typically time consuming, cumbersome, and generally an unwelcome set up complication. 
   Most projection systems additionally include signal processing circuits, for example, to oppositely distort the image to compensate for keystone distortion prior to projecting the image. These signal processing circuits typically distort the image according to distortion values pre-calculated from 100 or more points of the image. Although this technique may alleviate most, if not all, keystone distortion, it is complicated to set-up or recalibrate the projection system. For example, when the projection system is reoriented or repositioned, the system needs to identify new points of the image and recalculate the distortion values, which often requires floating point processes that exceed real time system capability. These complex pre-calculations result in the lack of real time distortion value calculations, which hinder the incorporation of advance functionality into the projection systems, such as image zoom and lens replacement, and impede projection system mobility. Accordingly, a need remains for a system and method for improved keystone correction. 

   
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The foregoing and other objects, features, and advantages of the invention will become more readily apparent from the following detailed description of embodiments that proceed with reference to the following drawings. 
       FIG. 1  is a diagram of a projection system. 
       FIG. 2  is a block diagram of a projection system. 
       FIG. 3  is a block diagram embodiment of the controller shown in  FIG. 2 . 
       FIG. 4  is a block diagram embodiment of the keystone controller shown in  FIG. 3 . 
       FIGS. 5A-5C  are graphical diagrams illustrating the input values shown in  FIG. 3 . 
       FIG. 6  is a flowchart illustrating operational embodiments of the keystone driver shown in  FIG. 3 . 
   

   DESCRIPTION OF THE INVENTION 
     FIG. 1  is a diagram of a projection system  100  useful with embodiments of the invention. Referring to  FIG. 1 , a projection system  100  includes a projector  102  positioned on a surface  104 . The surface  104  is typically a desk or tabletop. An elevator  120  protrudes from the bottom sides of the projector  102  creating an angle  110  between the surface  104  and the projector  102 . Only one elevator  120  is visible in  FIG. 1  although a person of reasonable skill in the art should understand that a plurality of elevators  120  might be employed in the system  100 . The angle  110  varies depending on the position of the elevator  120 . The elevator  120  tilts the position of the projector  102  relative to the surface  104  such that projected image  118  moves up or down on a projection surface  114 , increasing or decreasing the angle  110 . The projection surface  114  might be a wall, screen, or any other surface capable of displaying a projected image  118 . 
   The projector  102  manipulates image signals  108  it receives from an image source, i.e., a personal computer  106  or the like. A person of reasonable skill in the art should recognize that the projector  102  might receive different types of image signals, e.g., digital or analog signals, from the personal computer  106 . The image signals  108  represent still, partial, or full motion images of the type rendered by the personal computer  106 . 
   The projector  102  casts the image signals  108  onto the projection surface  114 . The resulting projected image  118  centers about a projection axis  116 . An angle  112  exists between the projection axis  116  and the projection surface  114 . The angle  112  changes responsive to changes in the angle  110 . 
   The projected image  118  may be substantially undistorted if the projection axis  116  is perpendicular to the projection surface  114 . That is, the image  118  may be undistorted when the angle  112  is 90 degrees. Likewise, the projected image  118  distorts when the projection axis  116  is not perpendicular to the projection surface  114 . This distortion is termed keystone distortion (or keystoning) because the image may appear wider at the top than at the bottom as shown in the jagged lined image  122 . The projector  102 , however, includes keystone correction functionality to pre-distort the image data  108 , so that the projected image  118  appears undistorted when projected onto projection surface  114 . Embodiments of the projection system  100  and the keystone correction functionality will be discussed below in greater detail. 
     FIG. 2  is a block diagram of a projection system  200  according to an embodiment of the present invention. Referring to  FIG. 2 , the system  200  is capable of projecting an image data  132  on a projection surface  114  ( FIG. 1 ). The system  200  includes a receiver  220  for receiving an analog image data signal  210 , e.g., an RGB signal, from a source  202  (e.g., a computer  106 , a video player  203  such as a VCR, or a DVD player  205 ). The receiver  220  might be an analog-to-digital converter (ADC) or the like. The source  202  might be a personal computer or the like. The receiver  220  converts the analog image data signal  210  into digital image data  108  and provides it to the controller  250 . 
   Likewise, a video receiver or decoder  222  decodes an analog video signal  212  from a video source  204  that reads information stored on a disc  201  such as a CD or a DVD. The video source  204  might be a video camcorder and the like. The decoder  222  converts the analog video signal  212  into digital image data  108  and provides it to the controller  250 . 
   A modem or network interface card (NIC)  224  receives digital data  214  from a global computer network  206  such as the Internet®. The modem  224  provides digital image data  108  to the controller  250 . 
   A Digital Visual Interface (DVI) receiver  226  receives digital RGB signals  216  from a digital RGB source  208 . The DVI receiver  226  provides digital image data  108  to the controller  250 . A person of reasonable skill in the art should recognize other sources and other converters come within the scope of the present invention, such as a tuner  228  that receives a television broadcast signal  218  from an antenna  219  and provides digital image data  108  to the controller  250 , for example. 
   The controller  250  generates projection data  132  by manipulating the digital image data  108 . The controller  250  provides the projection data  132  to projection device  260 . The projection device  260  is any device capable of projecting the projection data  132  to a projection surface  114  ( FIG. 1 ). The optics and electronics necessary to project the projection data  132  are well known to those of reasonable skill in the art. 
   The controller  250  may scale the digital image data  108  for proper projection by the projection device  260  using a variety of techniques including pixel replication, spatial and temporal interpolation, digital signal filtering and processing, and the like. The controller  250  may include a keystone controller  300  to pre-distort the digital image data  108  to correct keystone distortion that would appear when the projection data is displayed by the projection device  260 . Embodiments of the keystone controller  300  will be described below in greater detail. 
   In another embodiment, the controller  250  might additionally change the resolution of the digital image data  108 , changing the frame rate and/or pixel rate encoded in the digital image data  108 . A person of reasonable skill in the art should recognize that the controller  250  manipulates the digital image data  108  and provides projection data  132  to a projection device  260  for image projection. 
   Read-only (ROM) and random access (RAM) memories  240  and  242 , respectively, are coupled to the display system controller  250  and store bitmaps, FIR filter coefficients, and the like. A person of reasonable skill in the art should recognize that the ROM and RAM memories  240  and  242 , respectively, might be of any type or size depending on the application, cost, and other system constraints. A person of reasonable skill in the art should recognize that the ROM and RAM memories  240  and  242  might not be included in the system  200 . A person of reasonable skill in the art should recognize that the ROM and RAM memories  240  and  242  might be external or internal to the controller  250 . Clock  244  controls timing associated with various operations of the controller  250 . A person of reasonable skill in the art should recognize that the projector  102  might house all or part of the projection system  202 , e.g., the controller  250 , clock  244 , RAM  242 , ROM  240 , projection device  260 , as well as the optics and electronics necessary to project the projection data  132 . 
     FIG. 3  is a block diagram embodiment of the keystone controller  300  shown in  FIG. 2 . Referring to  FIG. 3 , the keystone controller  300  includes a keystone corrector  400  to generate the projection image data  132  from the image data  108 . The keystone corrector  400  may pre-distort the image date  108  according to keystone scaling values  312  from a keystone driver  310  to generate the projection image data  132 . The keystone corrector  400  may then provide the projection image data  132  to the projection device  260  ( FIG. 2 ) for display on the projection surface  114  ( FIG. 1 ). 
     FIG. 4  is a block diagram embodiment of the keystone corrector  400  shown in  FIG. 3 . Referring to  FIG. 4 , the keystone corrector  400  includes a vertical scaler  410  and a horizontal scaler  420 . The vertical scaler  410  generates vertically scaled image data  412  by scaling the image data  108  according to vertical scaling values  312 V. The vertical scaler  410  provides the vertically scaled image data  412  to the horizontal scaler  420 . The horizontal scaler  420  horizontally scales the vertically scaled image data  412  according to the horizontal scaling values  312 H to generate the projection image data  132 . Although  FIG. 4  shows the keystone corrector  400  performing vertical scaling prior to the horizontal scaling, in some embodiments the vertical and horizontal scaling may overlap, be performed simultaneously, and/or have their order reversed. 
   Referring back to  FIG. 3 , the keystone driver  310  generates the keystone scaling values  312  according to input values  322 . In some embodiments, the input values  322  may be stored in keystone tables  320 - 1  to  320 -N for at least one configuration of the projection system  200 . For instance, keystone table  320 - 1  may hold input values  322  associated with a first type of lens, or a first zoom position used by the projection device  260  ( FIG. 2 ), while the other keystone tables  320 - 2  to  320 -N may store input values  322  for other lens types or zoom positions. In some embodiments, the keystone driver  310  generates the keystone scaling values  312  according to input values  322  without storing the input values  322  to one or more of the keystone tables  320 - 1  to  320 -N. The input values  322  may include a plurality of corners of the keystone corrected image, and a plurality of centers along the edges of either the keystone corrected image or the distorted image. In some embodiments, the input values  322  may include or identify a rotation angle of the projection system  200 . When the input values  322  identify a rotation angle of the projection system  200 , the keystone driver  310  may determine which keystone table  320 - 1  to  320 -N is associated with the rotation angle of the input values  322  and retrieve the corners and centers responsive to the rotation angle. The key stone driver  310  may dynamically calculate the keystone scaling values  312  from the input values  322 , e.g., the corners and the centers of the edges, as opposed to pre-calculating the keystone scaling values  312 . Although the keystone tables  320 - 1  to  320 -N are shown separately, in some embodiments they may be incorporated into one or more common memory devices. 
     FIGS. 5A-5C  are graphical diagrams illustrating the input values  322  shown in  FIG. 3 . Referring to  FIG. 5A , a projection surface  114  is cast with a distorted image  510  having a plurality of edge-centers  502 , such as a top edge-center, a bottom edge-center, a left edge-center, and a right edge-center. For instance, the top edge-center  502 , located along the upper edge of the distorted image  510 , may indicate a center point of the image between the upper left and right corners. The distorted image  510  may be a projection of the image data  108  that has not been keystone corrected by keystone corrector  400 . 
   A keystone corrected image  520  may be a keystone corrected projection of the distorted image  510 . The keystone corrected image  520  has a plurality of corners  504  that may be within the projection of the distorted image  510 . The input values  322  may include a plurality of the edge-centers  502  associated with the distorted image  510  and a plurality of the corners  504  associated with the keystone corrected image  520 . In some embodiments, the keystone tables  320 - 1  to  320 -N ( FIG. 3 ) may store all four corners  504  of the keystone corrected image  520  and three edge-centers  502  of the distorted image  510 , while in other embodiments the input values  322  may include various combinations of edge-centers  502  and corners  504 . 
   Referring to  FIGS. 5B and 5C , multiple example pre-distorted images  512  and  514  are shown to represent projection image data  132  having undergone pre-distorted by keystone corrector  400 , but not yet projected on a projection surface  114 . Although the pre-distorted images  512  and  514  appear distorted, when projected on the projection surface  114 , the resulting keystone corrected image will appear rectangular or keystone corrected. The pre-distorted images  512  and  514  may be stored in the projection system  200  prior to projection on the projection surface  114 . Referring back to  FIG. 3 , the keystone driver  310  generates keystone scaling values  312  responsive to the input values  322 . The keystone scaling values  312  may include horizontal and vertical scaling values and horizontal and vertical increment values. For instance, the vertical scaling values may identify a height (top-bottom) ratio between the distorted image  510  ( FIG. 5 ) and keystone corrected image  520  ( FIG. 5 ), while the horizontal scaling values may identify a length (left-right) ratio between the distorted image  510  ( FIG. 5 ) and keystone corrected image  520  ( FIG. 5 ). The horizontal and vertical increment values may identify scaling increments applied to the image data  108 , allowing the keystone corrector  400  to maintain the aspect ratio of the image data  108  in the keystone corrected image ( FIG. 5 ). When the aspect ratio of the image data  108  is not maintained during keystone correction, the shape or edges of the keystone corrected image  520  ( FIG. 5 ) will appear correct because the corners are known, but the internal portions may appear distorted or misshapen. 
   By using the input values  322 , the keystone driver  310  may generate the keystone scaling values  312  on-the-fly, or in real time, instead of through complicated pre-calculation as described above. This, in turn, allows the keystone controller  300  to stream keystone scaling values  312  to the keystone corrector  400  and to dynamically switch among the input values  322  within the keystone tables  320 - 1  to  320 -N. Since the keystone controller  300  may store multiple input values  322  in the keystone tables  320 - 1  to  320 -N, the projection system  200  may be reconfigured without undue delay resulting from complicated pre-calculation. The operation of the keystone driver  310  will be described below in greater detail. 
   The keystone controller  300  may include an interface to provide the keystone driver  310  with the input values  322 . The interface  330  may determine the input values  322  automatically, from user input, or both. For instance, the interface  330  may be a graphical user interface (GUI) for receiving user input. In some embodiments, the interface  330  may include automatically receive the input values  322  from a source internal or external to the projection system  200 . The keystone driver  310  may store the input values  322  from the interface  330  to at least one of the keystone tables  320 - 1  to  320 -N for use in generating the keystone scaling values  312 . 
   The interface  330  may also provide orientation data  332  to the keystone driver  310 . The orientation data  332  may correspond to one or more sets of the input values  322 . For instance, the orientation data  332  may identify a set of input values  322  that corresponds to a particular lens or zoom position of the projection system  200 . The keystone driver  310  may store or retrieve sets of input values  322  from the keystone tables  320 - 1  to  320 -N responsive the orientation data  332 . When the keystone driver  310  is retrieving input values  322  for a particular configuration of the projection system  200  ( FIG. 2 ), the orientation data  332  may indicate which keystone table  320 - 1  to  320 -N holds the input values  322 . 
     FIG. 6  is a flowchart  600  illustrating operational embodiments of the keystone driver  310  shown in  FIG. 3 . Referring to  FIG. 6 , in a block  610 , the keystone driver  310  receives input values  322  from an interface  330 . The interface  330  may receive the input values  322  manually, automatically, or semi-automatically. The input values  322  may correspond to a specific configuration of the projection system  200  ( FIG. 2 ), such as the use of a specific lens or zoom position, or an orientation of the projection system  200  ( FIG. 2 ) relative to the projection surface  114  ( FIG. 1 ), or both. In some embodiments, the keystone driver  310  may receive orientation data  332  that indicates which configuration and/or orientation are associated with the input values  322 . In a block  620 , the keystone driver  310  determines keystone scaling values  312  according to the input values  322 . As described above, the input values  322  may include a plurality of corners of a keystone corrected image  520  ( FIG. 5 ) and a plurality of centers along the edges of a distorted image  510  ( FIG. 5 ). The keystone driver  310  may retrieve the input values  322  from a keystone table  320 - 1  to  320 -N to determine the keystone scaling values  312 . For instance, when the input values  322  identify a rotation angle of the projection system  200 , the keystone driver  310  may determine which keystone table  320 - 1  to  320 -N is associated with the rotation angle of the input values  322  and retrieve the corners and centers responsive to the rotation angle. The keystone scaling values  312  may include a vertical scaling value (VerticalScaler), a vertical increment value (VerticalScalingIncrement), a horizontal scaling value (HorizontalScaler), and a horizontal increment value (HorizontalScalingIncrement). As shown below in Equations 1 and 2, the keystone driver  310  may determine the vertical scaling value (VerticalScaler) and vertical increment value (VerticalScalingIncrement) from the input values  322 . 
   
     
       
         
           
             
               
                 InputHeight 
                 = 
                 
                   VerticalScaler 
                   + 
                   
                     
                       
                         OutputHeight 
                         ⁡ 
                         
                           ( 
                           
                             OutputHeight 
                             - 
                             1 
                           
                           ) 
                         
                       
                       2 
                     
                     × 
                     VerticalScalingIncrement 
                   
                 
               
             
             
               
                 Equation 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 1 
               
             
           
           
             
               
                 InputCenter 
                 = 
                 
                   
                     OutputCenter 
                     ⁢ 
                     
                         
                     
                     × 
                     VerticalScaler 
                   
                   + 
                   
                     
                       
                         OutputCenter 
                         ⁡ 
                         
                           ( 
                           
                             OutputCenter 
                             - 
                             1 
                           
                           ) 
                         
                       
                       2 
                     
                     × 
                     VerticalScalingIncrement 
                   
                 
               
             
             
               
                 Equation 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 2 
               
             
           
         
       
     
   
   The InputHeight and InputCenter are associated with the distorted image  510  ( FIG. 5 ), while the OutputHeight and OutputCenter are associated with the keystone corrected image  520  ( FIG. 5 ). For instance, InputHeight may be the height (top-to-bottom) of the distorted image  510 , and the InputCenter may be the height (center-to-bottom or top-to-center) to the center of an edge of the distorted image  510 . The OutputHeight may be the height (top-to-bottom) of the keystone corrected image  520 , and the OutputCenter may be the height (center-to-bottom or top-to-center) to the center of an edge of the keystone corrected image  520 . The keystone driver  310  may derive the InputHeight, OutputHeight, InputCenter and OutputCenter from the input values  322 , e.g., the corners  504  ( FIG. 5 ) of the keystone corrected image  520  and the edge-centers  502  ( FIG. 5 ) of the distorted image  510  or the keystone corrected image  520  ( FIG. 5 ). Since there are two equations, Equations 1 and 2, with two unknowns, the vertical scaling value (VerticalScaler) and vertical increment value (VerticalScalingIncrement), the keystone driver  310  may compute the vertical scaling value (VerticalScaler) and vertical increment value (VerticalScalingIncrement) from Equations 1 and 2. 
   Similarly, as shown below in Equations 3 and 4, the keystone driver  310  may determine the horizontal scaling value (HorizontalScaler) and horizontal increment value (HorizontalScalingIncrement) from the input values  322 . 
   
     
       
         
           
             
               
                 InputLength 
                 = 
                 
                   HorizontalScaler 
                   + 
                   
                     
                       
                         OutputLength 
                         ⁡ 
                         
                           ( 
                           
                             OutputLength 
                             - 
                             1 
                           
                           ) 
                         
                       
                       2 
                     
                     × 
                     HorizontalScalingIncrement 
                   
                 
               
             
             
               
                 Equation 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 3 
               
             
           
           
             
               
                 InputCenter 
                 = 
                 
                   
                     OutputCenter 
                     ⁢ 
                     
                         
                     
                     × 
                     HorizontalScaler 
                   
                   + 
                   
                     
                       
                         OutputCenter 
                         ⁡ 
                         
                           ( 
                           
                             OutputCenter 
                             - 
                             1 
                           
                           ) 
                         
                       
                       2 
                     
                     × 
                     HorizontalScalingIncrement 
                   
                 
               
             
             
               
                 Equation 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 4 
               
             
           
         
       
     
   
   Since Equations 3 and 4 each have two unknowns, the horizontal scaling value (HorizontalScaler) and horizontal increment value (HorizontalScalingIncrement), the keystone driver  310  may compute the horizontal scaling value (HorizontalScaler) and horizontal increment value (HorizontalScalingIncrement) according to the InputHeight, OutputHeight, InputCenter and OutputCenter derived above. 
   In a block  630 , the keystone driver  310  provides the keystone scaling values  312  to the keystone corrector  400 . The keystone corrector  400  generates the projection image data  132  from the keystone scaling values  312 . The keystone corrector  400  includes keystone correction functionality to pre-distort the image data  108  according to the keystone scaling values  312  and thus generate the projection image data  132 . In some embodiments, the keystone corrector  400  may interpolate the vertical scaling value (VerticalScaler), the vertical increment value (VerticalScalingIncrement), the horizontal scaling value (HorizontalScaler), and the horizontal increment value (HorizontalScalingIncrement) to maintain a correct aspect ratio in the keystone corrected image  520  ( FIG. 5 ). In other embodiments, the keystone driver  310  may interpolate the vertical scaling value (VerticalScaler), the vertical increment value (VerticalScalingIncrement), the horizontal scaling value (HorizontalScaler), and the horizontal increment value (HorizontalScalingIncrement) prior to providing the interpolated data to the keystone corrector  400 . 
   Having illustrated and described the principles of our invention, it should be readily apparent to those skilled in the art that the invention may be modified in arrangement and detail without departing from such principles. We claim all modifications coming within the spirit and scope of the accompanying claims.