Abstract:
The present invention relates to methods for dynamically displaying images on a display window of a digital display device such as a digital picture frame. These methods include the steps of: processing the source image into a canvas image having canvas pixels as a function of the source image characteristics; upon the canvas image meeting one or more conditions for the panning of an image, selecting a panning velocity for the canvas image; defining a viewing window with respect to the canvas image wherein said viewing window having a viewing image, said viewing image is to have a plurality of viewing pixels; calculating the viewing pixels for said viewing image; displaying said viewing image for said viewing window on said display window; redefining said viewing window with respect to the canvas image as a function of said panning velocity; and repeating the calculating and displaying steps for said viewing window. These methods allow for the dynamic display of images with special effects on a digital display device as a function of the properties of the image (e.g. a panoramic image). They also provide for the smooth panning of digital images at velocities that are accurate up to fractional pixels per unit time.

Description:
FIELD OF INVENTION 
       [0001]    This invention relates to methods for displaying of images, and in particular, to methods for displaying images having certain characteristics (e.g. a panoramic image) on digital display devices such as digital picture frames. 
       BACKGROUND 
       [0002]    Digital display devices (“DDDs”) such as digital picture frames (“DPFs”) allow the digital display of a collection of photos or images. The advancement in the mass production of LCDs resulted in the lowering of the cost of the LCDs and therefore of the DDDs as well. As DDDs become more and more popular, particular problems associated with DDDs are becoming apparent and require customized solution. There are several factors to consider with respect to DDDs, for example image quality, ease of setup, ease of use, and image presentation. 
         [0003]    Ideally, DDDs should be able to accept source images from a variety of capture devices or external images. These source images may also have a variety of properties such as having a variety of heights, widths, aspect ratios, and resolutions. When the properties of the source image do not conform with the properties of the DDD such as the size of a display window, the DDD needs to have the capability of processing the source image and displaying the resulting digital image. For example, if the provided image has an image size of 1024×768 pixels and the particular DDD has a display window size of 720×480 pixels, the provided image need to be resized before it can be properly displayed on the display window of the DDD. At present, most DDDs only allow for the limited processing of the original image. They may be able to reduce the resolution of the original image to conform to the resolution of the DDD. They may also be able to perform limited resizing by reducing the size of the image such that the entire source image fits into the display window of the DDD, or in the alternative, crop the original digital image such the only a portion of the source image is displayed. 
         [0004]    However, these types of resizing methods do not allow the DDD to display the digital image adequately. For example,  FIG. 1  illustrates a panoramic image that may be formed with a digital camera where side-by-side images of a panoramic view are taken and are stitched together to form the larger image. The width of this type of images is often much greater than its height (or, for a vertical scenery, the height is much longer than its width). These types of source images cannot be displayed satisfactorily with the traditional resizing capability of the DDDs.  FIG. 2   a  illustrates the resulting image produced by some of the resizing methods of the prior art. In order to fit the width of the entire source image into the width of the display window, the entire image has to be decreased significantly such that most of the display window is not used, where the height of the reduced image is much less than the height of the display window. Many details of this reduced source image are not adequately displayed in this reduced format. 
         [0005]      FIG. 2   b  illustrates a second type of resizing method of the prior art. In this type of resizing methods, only a small portion of the image is displayed. Again, this type of resizing methods is unsatisfactory because the display fails to properly display the effect of panoramic view of the source image. 
         [0006]    Therefore, it is desirable to provide methods for displaying digital images on the display window of a DDD that would take into account the special properties of a digital image. 
       SUMMARY OF INVENTION 
       [0007]    An object of this invention is to provide methods for dynamically displaying digital images having special characteristics with special effects on a digital display device. 
         [0008]    Another object of this invention is to provide methods for automatically adjusting the mode of display of a digital image as a function of the properties of that digital image. 
         [0009]    Another object of this invention is to provide methods for the smooth panning of a digital image at velocities that are accurate up to fractional pixels per unit time. 
         [0010]    Another object of this invention is to enable the viewing of images of unlimited sizes and resolutions on digital display devices with display windows that are limited in size and resolution. 
         [0011]    The present invention relates to methods for dynamically displaying a source image on a display window of a digital display device, wherein the source image having source image characteristics, comprising the steps of: processing the source image into a canvas image having canvas pixels as a function of the source image characteristics; upon the canvas image meeting one or more conditions for the panning of an image, selecting a panning velocity for the canvas image; defining a viewing window with respect to the canvas image wherein said viewing window having a viewing image, said viewing image is to have a plurality of viewing pixels; calculating the viewing pixels for said viewing image; displaying said viewing image for said viewing window on said display window; redefining said viewing window with respect to the canvas image as a function of said panning velocity; and repeating the calculating and displaying steps for said viewing window. 
         [0012]    An advantage of the methods of this invention is that they can dynamically display digital images having special characteristics with special effects on a digital display device. 
         [0013]    Another advantage of the methods of this invention is that they can automatically adjust the mode of display of a digital image as a function of the properties of that digital image. 
         [0014]    Another advantage of the methods of this invention is to provide for the smooth panning of digital images at velocities that is fractional pixels per unit time. 
         [0015]    Another advantage of the methods of this invention is that they enable the viewing of images of unlimited sizes and resolutions on a digital display device with a display window that is limited in size and resolution. 
     
    
     
       DESCRIPTION OF DRAWINGS 
         [0016]    The foregoing and other objects, aspects and advantages of the invention will be better understood from the following detailed description of preferred embodiments of this invention when taken in conjunction with the accompanying drawings in which: 
           [0017]      FIG. 1  illustrates a panoramic image that may be properly displayed using the methods of this invention. 
           [0018]      FIG. 2   a  is an illustration of a prior art method for displaying the panoramic image of  FIG. 1 . 
           [0019]      FIG. 2   b  is an illustration another prior art method for displaying the panoramic image of  FIG. 1 . 
           [0020]      FIGS. 3   a  through  3   e  illustrate the moving of the viewing window for displaying the image of  FIG. 1  using methods of this invention. 
           [0021]      FIGS. 4   a  through  4   e  illustrate the images as selected by the viewing windows (as illustrated by  FIGS. 3   a  through  3   e ) during the different time periods over the canvas using the methods of this invention. 
           [0022]      FIGS. 5   a  through  5   e  illustrate the image displayed by the display window of the digital display device during the different time periods using the methods of this invention. 
           [0023]      FIGS. 6   a  through  6   f  illustrate the panning of an image using a method of this invention. 
           [0024]      FIG. 7  illustrates a flowchart for a preferred method of the present invention. 
           [0025]      FIGS. 8   a - 8   b  illustrate the moving of the viewing pixels by a pixel unit. 
           [0026]      FIGS. 9   a - 9   b  illustrate the moving of fractional viewing pixels to a position that does not coincide with a canvas pixels. 
           [0027]      FIGS. 10   a - 10   b  illustrate the positions and canvas pixels on a canvas that may be used to calculate the viewing image characteristics at position (a,b). 
       
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
       [0028]    The presently preferred methods of the present invention provide methods for displaying an image as a function of the properties of that image and for a particular digital display device (such as a digital picture frame). 
       Terminology Used 
       [0029]    In the discussions herein, the following terminology may be used, and it shall be understood that the methods and embodiments of the present invention are not to be limited by the definition of the terminology provided below: 
         [0030]    Source image. The image obtained from a source. Sources may include a capturing device such as a camera or a storage device. 
         [0031]    Canvas and canvas image. The canvas image is the image obtained after the source image has been prepared for use in a DDD. The canvas image is defined by the canvas pixels. The canvas image characteristics between the canvas pixels, herein referred to as canvas positions, are virtual positions that can be defined.  FIG. 8   a  is a representation of a canvas having n rows in the “y” (second) dimension and m columns of pixels in the “x” (first) dimension that are represented by the dark circles. The location of each pixel maybe characterized by two integers, depicting the x and y position of that pixel. The point “a” in  FIG. 9   b  is not on any canvas pixels and therefore is a virtual canvas position; the image characteristics of the canvas at position “a” is not given and would need to be calculated (if so desired). 
         [0032]    Canvas properties. Any parameter relating to the canvas or canvas image is a canvas property. Examples of canvas properties may be the width, height, or aspect ratio of the canvas, or the characteristics of the canvas image. 
         [0033]    Viewing window. A viewing window is a portion of the canvas that is to be displayed by the display window at any one time during panning. The characteristics of the viewing image within the viewing window are defined by a set of viewing pixels. Depending on the location of the viewing window, the viewing pixels may or may not to be calculated. A viewing pixel is illustrated in the drawings described herein as a small rectangle. (□) 
         [0034]    Viewing properties. Any parameter relating to the viewing window is a viewing property. Examples of viewing properties may be the width, height, or aspect ratio of the viewing window, or the characteristics of the viewing image within the viewing window. 
         [0035]    Pij. The characteristics of a pixel of an image, either a canvas image or a viewing image, is represented as Pij where i and j refers to the position of the pixel in the image. For example, P00 may refers to the image characteristic at the pixel (0,0) while Pab refers to the image characteristics at position (a,b). 
         [0036]    Display window. A display window may be the window of the DDD that displays a display image as defined by a viewing widow. 
         [0037]    Display properties. Display properties may be any parameter relating to the display window including but nor limited to the height and width of the display window. 
         [0038]    “x” dimension. The dimension that defines the width of the image, also referred to herein as the first dimension. 
         [0039]    “y” dimension. The dimension that defined the height of the image, also referred to herein as the second dimension. 
         [0040]    Panning. Panning may mean the moving of the viewing window having a viewing image at panning velocity. 
         [0041]    In a presently preferred method of the present invention, a first step is to determine the conditions that trigger panning of an image. With pre-determined conditions, the DDD may be programmed such that panning automatically occurs once these conditions are triggered. The conditions for triggering panning may differ. In one preferred method, all images are to be panned. In another preferred method, the conditions for panning may depend on the size, aspect ratio, height or width of the canvas and the display window. (In the discussions herein, the term aspect ratio is used in the same manner as is commonly used in the field of image processing or display.) For example, if the horizontal dimension (the first dimension) is the dimension for the width of the canvas or the width of the display window, one criteria for triggering panning in the horizontal direction may be that the aspect ratio of the canvas divided by the aspect ratio of the display window is greater than 2. Similarly, if the vertical dimension (the second dimension) is the dimension for the height of the canvas, the criteria for the triggering of the panning in the vertical direction may be that the aspect ratio of the canvas divided by the aspect ratio of the display window is less than one-half (½). 
         [0042]    The preparing of the source image to form the canvas image may include one or more of the following: obtaining or downloading the source image from a capture device or external storage; obtaining the properties of the source image, such as its width, height, aspect ratio, width/height, or height/width; decoding, if necessary, the source image into an internal format that the DDD may use; decoding, if necessary, a high resolution image to a lower resolution image in order to reduce the storage size; resizing the image; storing information relating to the decoded image and the source image in the buffer memory of the DDD. The decoded image is referred to as the canvas image and may be stored in the buffer. In preferred embodiments, this canvas may have the same aspect ratio as the source image. For example, if the source image is a 100×1000 (JPEG/BMP), after decoding and preparation, the canvas can be a 50×500 image having the internal format of the DDD. 
         [0043]    After preparation and selection of a particular canvas image to display, the selected canvas image is then examined in order to decide if it meets one or more of the conditions for panning. If the image is not to be panned, then the display of the image may follow the traditional methods for statically display of a digital image. The canvas image may be processed for static display. This processing may involve resizing the canvas such that the entire or selected portions of the canvas are displayed in the display window.  FIGS. 6   a  though  6   f  illustrate a preferred method for panning where the velocity of panning may be two dimensional. 
         [0044]    If the image is determined to be dynamically displayed, then the velocity of panning, i.e., the direction of the panning as well as the speed of the panning, need to be determined. The panning velocity may be a function of many parameters, including canvas properties, display properties, viewing properties, and time. For example, the panning velocity may be a sinusoidal function of time. It may also depend on the position of the viewing image on the display window. For example, the panning velocity may be slower if only one part of the viewing image is displayed and the panning velocity may be increased as the area of the viewing image displayed is increased. 
         [0045]    In another example, the direction of panning may be determined by the height, width or aspect ratio of the canvas and the display window. For example, if the canvas image is that of a panoramic view such as that illustrated in  FIG. 1  where the canvas width is much greater than its height, one preferred method for panning is to pan in the “x” dimension. The speed of the panning may be determined by the width of the canvas. It may also be determined based upon the general characteristics of the image (e.g. a portrait shot or a group shot, an indoor shot or an outdoor shot), the number of contrasting items, the number of colors, the number of identified distinct items. The panning velocity may be two dimensional; i.e., the viewing window may move both in the “x” dimension and the ‘Y’ dimension. Also, the panning velocity for an image may also vary with time, the position of the viewing window with respect to a canvas parameter or other parameters, including parameters relating to other canvas images or the display window. The panning velocity may even be generated randomly. 
         [0046]    The canvas image illustrated in  FIG. 1  and whose panning is illustrated in  FIGS. 3   a - 3   e  is an example where the panning is in the x dimension such that effect of the panning is to sweep across the entire width of the canvas of a panoramic image. However, even with this simple example, the panning velocity does not have to be constant. For example, the panning velocity may start at a certain speed when only a small portion of the viewing window is shown but decreases its speed as more and more of the viewing window is displayed such that a viewer has more time to look at or examine the display. 
         [0047]    As described above, the panning velocity may be dependent of the size of the canvas image, viewing image or display window. It may even be dependent on the properties of the viewing image that is currently being displayed in the display window. For example, the panning velocity may be inversely proportional to the brightness of an image or a portion of an image that is currently on display such that the panning velocity is reduced and the image moves slower across the display window when an image is brighter. 
         [0048]    However, in other preferred embodiments, the panning velocity and speed may be nonlinear and/or object based. The panning velocity may be object based when it depends on the properties of an object or a number of objects within the viewing image (“objects”) that are being displayed in the display window. The panning velocity is nonlinear when it varies during panning of an image. When this variation is dependent on objects, then, the panning velocity is non-linear and is object based. For example, the panning velocity may be reduced when faces in a panoramic school graduation picture are being displayed while the panning velocity may be increased when the buildings within that picture are being displayed. 
         [0049]    The different modes of presentation created by panning or moving an image at a variable velocity may be infinite, limited only by the creativity of the DDD maker. As another example, a digital image that is not a panoramic image and that can fit into a part of the display can be panned at a two-dimensional velocity for presentational effect such that it may look as if it is slowly entering the display window from the edge of the display window, floats around the window for a while, and then leave the display window at some other edge. In this example, the panning velocity may be set to be time dependent or dependent on the position of the viewing image on the display screen. An example of such a display is illustrated by  FIGS. 6   a  through  6   f.    
         [0050]    Another method of display may have an image slowly entering the display window as the previous image is slowly leaving the display window from some other location of the display window. The panning velocity of this method of display may not only be time dependent but may also depend on the panning velocity of the previous image and the position of the previous image on the canvas. 
         [0051]    The viewing window is a portion of the canvas and formed by selecting a portion of the canvas as the viewing window. The size of the viewing window may depend on multiple factors such as the height or width of the canvas and/or the panning speed. In one preferred method, the viewing window is cropped such that it has the same aspect ratio as the display window. Another preferred method is to display an image such that the image is maximized for display on the display window at any one time. To do so, given a panning velocity, the viewing window may be selected such that the dimension of the image that is not being panned is maximized for display. For example, if the image is of a panoramic view such that its width is much larger than its height, the image may be panned in the x direction as indicated by  FIGS. 3   a  through  3   e . Yet another method is to set the height of the viewing window to be the height of the canvas such that, after resizing, the viewing window ( 301 ) is selected such that the display window displays the entire height of the image in its display window while the width of the image is being panned at the defined panning velocity.  FIGS. 3   a  through  3   e  illustrate the movement of the viewing window as the entire canvas is being panned while  FIGS. 4   a  through  4   e  illustrate the viewing window during panning.  FIGS. 5   a  through  5   e  illustrate the viewing image as displayed by the display window ( 302 ). 
         [0052]    The example illustrated by  FIGS. 6   a  through  6   e  show another method for selecting the size of the viewing window for an image. Here, the viewing window is the size of the entire canvas. However, it is sized for display such that it only occupies a part of the screen but the panning velocity is set such that the image floats slowly from the top corner of the display window and leaves from the bottom corner. 
         [0053]    With the size of the viewing window determined, the initial position to begin panning may need to be selected by selecting a particular viewing window. In a preferred embodiment, the panning starts on an edge or corner of the canvas. For example, if it is decided that the panning is to be from left to right for a panoramic image, then, in the preferred embodiment, the first viewing window may be positioned at the left end of a canvas. 
         [0054]    Once this viewing window is selected, the characteristics of the viewing image will then have to be calculated. If the viewing pixels in this viewing window coincide with the canvas pixels, i.e., in situations where the viewing pixels of the viewing window coincide with the canvas pixels (or the panning velocity are in integer multiples of the canvas pixels per unit time), then the viewing pixels of a viewing image can be easily determined, where they may simply equal to the corresponding canvas pixels of the canvas image. 
         [0055]    However, if the viewing pixels for a viewing image fall on virtual canvas positions (e.g. in between canvas pixels), then the viewing pixels may have to be estimated or calculated. The methods for calculating the viewing pixels are described below. 
         [0056]    Processing of the viewing image for display may also occur, sometimes during the determination of the viewing image characteristics. Processing may involve resizing or zooming by cropping the canvas and the viewing window appropriately. After processing, this processed viewing image is then displayed by the display window. 
         [0057]    In order to provide smooth panning of the viewing image, it may be desirable to pan at less than a whole pixel per unit time. If the panning velocity is (a, b) pixels per unit time, i.e., if the panning speed is “a” pixels (or first pixels) per unit time in the x (first) dimension and “b” pixels (or second pixels) per unit time in the y (second) dimensions, then after the defined unit of time, the viewing window may be moved “a” (first) pixels in the x dimension and “b” (second) pixels in the y dimension. The characteristics of the new viewing image corresponding to the new viewing window is calculated, the new viewing image is processed, and displayed as previously described. These steps are repeated until the panning for this image is completed. 
         [0058]      FIG. 7  illustrates a flowchart showing the general steps for a preferred method of the present invention. After determining the conditions for panning ( 800 ), the source image is prepared for that DDD ( 802 ) and converted into a canvas image. Using one or more pre-defined conditions for panning, whether this canvas image should be panned can then be decided ( 806 ). If the image is not to be panned, then it can be processed for display in the display window ( 820 ). If the canvas image is to be panned, then the panning velocity and the size of the viewing window may then be determined ( 808 ). A viewing window is selected ( 810 ) and the viewing pixels then may be calculated. In addition, the viewing image may also be processed for display and this processing may occur while the viewing image is being calculated. After the calculating and processing step(s), the viewing image is moved at a distance determined by the panning velocity; and the whole process of calculating, processing, and displaying is repeated for the canvas image until the panning for that image is completed. 
       Determination of Viewing Image 
       [0059]    One method of panning is based upon the moving of the viewing window at multiples of pixels per unit time. Thus, for example, as illustrated in  FIG. 8   a , if a viewing window is defined on viewing pixels (□) that coincides with a two dimensional set of canvas pixels () defined by the corner pixels (0,0), (n,0), (0,m) and (n,m), then, if the panning velocity is one pixel per unit time in the x direction, then, after a unit of time, the viewing pixels of the viewing window would be moved to the viewing pixels that coincides with the two dimensional set of canvas pixels defined by the corner pixels (1,0), (n+1,0), (1,m), (n+1,m). See  FIG. 8   b . Since the viewing pixels coincides with canvas pixels where the characteristics of the canvas image at the canvas pixels are defined, then, the characteristics of the viewing image at the viewing image can be simply determined to be equal to, or a function of the characteristics of the canvas image at the corresponding canvas pixels. 
       Determination of Viewing Pixels 
       [0060]    One of the advantages of the preferred methods of the present invention is that the viewing window can be moved more than just multiples of pixels; they can be moved a fractional of pixels per unit time. That is, the viewing window may be moved in fractional pixels per unit time. This added refinement in the movement of viewing window and the panning velocity allows for much smoother panning and presentation of the images. In a preferred method, the viewing window can be moved to the accuracy of 1/16 th  or 1/64 th  of a pixel per unit time. For example, in one preferred method, if the unit of time used for panning is 30 milliseconds the viewing image may be panned at 1/64 th  of a pixel every 30 millisecond, that may provide a much smoother panning of the image. 
         [0061]      FIGS. 9   a  and  9   b  illustrates the moving of a viewing windows of 1¼ pixels per unit time. In the example in  FIG. 9   a , the viewing window is defined on viewing pixels that coincides with a two dimensional set of canvas pixels defined by the corner canvas pixels (0,0), (n,0), (0,m) and (n,m) that are shown as black circles. If the panning velocity is 1¼ pixels per unit time in the x dimension (first dimension), then, after a unit of time, the viewing window would be moved to the viewing pixels that are on canvas positions and that does not coincides with any canvas pixels. Since the viewing pixels that are on canvas positions where the characteristics of the image is not defined, the image characteristics on these viewing pixels has to be determined or estimated based on the characteristics of the canvas image characteristics on surrounding canvas pixels. 
         [0062]    Interpolation, either non-adaptive or adaptive interpolation algorithms, may be used for this estimation or determination. Non-adaptive algorithms that may be used include: nearest neighbor, bilinear, bicubic, spline, sinc, and lanczos methods. For example, a bicubic algorithm may assume that, in two dimensions, the surrounding 4×4 pixels may contribute to the characteristics at the viewing pixel in question. These different methods use different numbers of surrounding canvas pixels for calculating the respective viewing pixel. Depending on the quality of the image desired, these interpolation methods may use from 0 to 256 or more adjacent pixels during interpolation. The more adjacent pixels that are used, the more accurate these algorithms may be in approximating or estimating the true image characteristics. However, the more adjacent pixels that are used, the longer the processing time is required for calculating or estimating the viewing image. Therefore, as a compromise between processing time and quality of the viewing image, a preferred method here uses the bicubic method of interpolation. 
         [0063]    Adaptive algorithms may also be used. They apply special algorithms, sometimes on a pixel-by-pixel basis when the presence or an edge is detected in order to minimize the interpolation artifacts in the regions that are most apparent. 
         [0064]    Interpolation uses the characteristics of the canvas image at surrounding pixels to estimate the viewing image for viewing pixels that do not coincide with the canvas pixels. Different interpolation algorithms give different weight to the surrounding canvas pixels in influencing the characteristics of the viewing image. They may use different filters that put different relative weight on the surrounding pixels for use to calculated to the viewing image characteristics. Filters that can be used may include the box, tent, Gaussian, catmull-rom and sinc. Preferred method uses a tent or triangular filter and a catmull-rom filter. 
         [0065]    For example, in a one dimensional bicubic estimation, i.e., an estimation that only takes into account the canvas image in one dimension such as that illustrated in  FIG. 10   a , the characteristics of the viewing image at the viewing pixel (a,0) is calculated as a weighted sum of the canvas image characteristics P00, P10 at the canvas pixels (0,0) and (1,0) to the left of the viewing pixel and the canvas image characteristics P20 and P30 at the canvas pixels (2,0) and canvas pixels (3,0). 
         [0066]    The weight or influence of the characteristics of each of the pixel can vary depending on the filter chosen that may define the desired sharpness of the characteristics of the viewing image. Once the sharpness, and thus the weight of each of the canvas pixels, is determined, the coefficients, a reflection of the weight for that coefficient can then be determined and pre-calculated in a table. The viewing image characteristics P(a,0) is then a sum of the coefficients over the canvas pixels used for the respective method of interpolation where a filter that defines the sharpness of the viewing image may be selected. Different filters may be used to produce the desired effect for the transitions of the viewing images. Once the filter is selected, the coefficients, i.e., the weighing of the different surrounding pixels, can be determined, and the resulting characteristics is the sum of the surrounding pixels weighed by their coefficients. 
         [0067]    The following illustrates how coefficients can be obtained for the example illustrated in  FIG. 9   a  using a triangular (tent) filter where the position of the viewing pixel is specified to an accuracy of 1/64 pixel. A triangular (tent) filter F(x) may be defined as: 
         [0000]    
       
         
           
             
               
                 
                   
                     
                       F 
                        
                       
                         ( 
                         x 
                         ) 
                       
                     
                     = 
                   
                 
                 
                   0 
                 
                 
                   
                     
                       for 
                        
                       
                           
                       
                        
                       x 
                     
                     &lt; 
                     
                       - 
                       1 
                     
                   
                 
               
               
                 
                   
                       
                   
                 
                 
                   
                     1 
                     + 
                     x 
                   
                 
                 
                   
                     
                       for 
                        
                       
                           
                       
                       - 
                       1 
                     
                     &lt; 
                     x 
                     &lt; 
                     0 
                   
                 
               
               
                 
                   
                       
                   
                 
                 
                   
                     1 
                     - 
                     x 
                   
                 
                 
                   
                     0 
                     &lt; 
                     x 
                     &lt; 
                     1 
                   
                 
               
               
                 
                   
                       
                   
                 
                 
                   0 
                 
                 
                   
                     x 
                     &gt; 
                     1 
                   
                 
               
             
             . 
           
         
       
     
         [0068]    The following 64 sets of coefficients are generated where Phase (i) provides for the coefficient of a viewing pixel on a canvas position that is (i/64 th  of a pixel) from its neighboring canvas pixel. 
         [0069]    Phase0: 0, 128, 0, 0, 
         [0070]    Phase1: 0, 126, 2, 0, 
         [0071]    Phase2: 0, 124, 4, 0, 
         [0072]    Phase3: 0, 122, 6, 0, 
         [0073]    Phase4: 0, 120, 8, 0, 
         [0074]    Phase5: 0, 118, 10, 0, 
         [0075]    Phase6: 0, 116, 12, 0, 
         [0076]    Phase7: 0, 114, 14, 0, 
         [0077]    Phase8: 0, 112, 16, 0, 
         [0078]    Phase9: 0, 110, 18, 0, 
         [0079]    Phase10: 0, 108, 20, 0, 
         [0080]    Phase11: 0, 106, 22, 0, 
         [0081]    Phase12: 0, 104, 24, 0, 
         [0082]    Phase13: 0, 102, 26, 0, 
         [0083]    Phase14: 0, 100, 28, 0, 
         [0084]    Phase15: 0, 98, 30, 0, 
         [0085]    Phase16: 0, 96, 32, 0, 
         [0086]    Phase17: 0, 94, 34, 0, 
         [0087]    Phase18: 0, 92, 36, 0, 
         [0088]    Phase19: 0, 90, 38, 0, 
         [0089]    Phase20: 0, 88, 40, 0, 
         [0090]    Phase21: 0, 86, 42, 0, 
         [0091]    Phase22: 0, 84, 44, 0, 
         [0092]    Phase23: 0, 82, 46, 0, 
         [0093]    Phase24: 0, 80, 48, 0, 
         [0094]    Phase25: 0, 78, 50, 0, 
         [0095]    Phase26: 0, 76, 52, 0, 
         [0096]    Phase27: 0, 74, 54, 0, 
         [0097]    Phase28: 0, 72, 56, 0, 
         [0098]    Phase29: 0, 70, 58, 0, 
         [0099]    Phase30: 0, 68, 60, 0, 
         [0100]    Phase31: 0, 66, 62, 0, 
         [0101]    Phase32: 0, 64, 64, 0, 
         [0102]    Phase33: 0, 62, 65, 0, 
         [0103]    . . . 
         [0104]    Phase63: 0, 2, 126, 0. 
         [0105]    The coefficients herein listed are normalized to 128. That is the characteristics using these coefficients may have to be divided by 128 to obtain the normalized characteristics. 
         [0106]    Other filters can also be used. For example, the catmulll-spline filter is defined as: 
         [0000]    
       
         
           
             
               
                 
                   
                     F 
                      
                     
                       ( 
                       x 
                       ) 
                     
                   
                   = 
                 
               
               
                 0 
               
               
                 for 
               
               
                 
                   x 
                   &lt; 
                   
                     - 
                     2 
                   
                 
               
             
             
               
                 
                     
                 
               
               
                 
                   0.5 
                   * 
                   
                     ( 
                     
                       4 
                       + 
                       
                         
                           x 
                           * 
                         
                          
                         
                           ( 
                           
                             8 
                             + 
                             
                               x 
                                
                               
                                 ( 
                                 
                                   5 
                                   + 
                                   x 
                                 
                                 ) 
                               
                             
                           
                           ) 
                         
                       
                     
                   
                 
               
               
                 
                     
                 
               
               
                 
                   
                     - 
                     2 
                   
                   &lt; 
                   x 
                   &lt; 
                   
                     - 
                     1 
                   
                 
               
             
             
               
                 
                     
                 
               
               
                 
                   0.5 
                   * 
                   
                     ( 
                     
                       2 
                       + 
                       
                         
                           x 
                           * 
                         
                          
                         
                           
                             x 
                             * 
                           
                            
                           
                             ( 
                             
                               
                                 - 
                                 5 
                               
                               - 
                               
                                 3 
                                 * 
                                 x 
                               
                             
                             ) 
                           
                         
                       
                     
                     ) 
                   
                 
               
               
                 
                     
                 
               
               
                 
                   
                     - 
                     1 
                   
                   &lt; 
                   x 
                   &lt; 
                   0 
                 
               
             
             
               
                 
                     
                 
               
               
                 
                   0.5 
                   * 
                   
                     ( 
                     
                       2 
                       + 
                       
                         
                           x 
                           * 
                         
                          
                         
                           
                             x 
                             * 
                           
                            
                           
                             ( 
                             
                               
                                 - 
                                 5 
                               
                               + 
                               
                                 3 
                                 * 
                                 x 
                               
                             
                             ) 
                           
                         
                       
                     
                     ) 
                   
                 
               
               
                 
                     
                 
               
               
                 
                   0 
                   &lt; 
                   x 
                   &lt; 
                   1 
                 
               
             
             
               
                 
                     
                 
               
               
                 
                   0.5 
                   * 
                   
                     ( 
                     
                       4 
                       + 
                       
                         x 
                          
                         
                           ( 
                           
                             
                               - 
                               8 
                             
                             + 
                             
                               x 
                                
                               
                                 ( 
                                 
                                   5 
                                   - 
                                   x 
                                 
                                 ) 
                               
                             
                           
                           ) 
                         
                       
                     
                   
                 
               
               
                 
                     
                 
               
               
                 
                   1 
                   &lt; 
                   x 
                   &lt; 
                   2 
                 
               
             
             
               
                 
                     
                 
               
               
                 0 
               
               
                 
                     
                 
               
               
                 
                   x 
                   &gt; 
                   2 
                 
               
             
           
         
       
     
         [0107]    As a compromise between processing time and accuracy, another preferred method uses the bicubic method of interpolation.  FIG. 10   a  is an example of a one dimensional bicubic interpolation that estimate the viewing image at the viewing pixel “0,a” that is indicated by the darkened square as a function of the canvas image characteristics at the two canvas pixels P00 and P01 to its left and two canvas pixels to its right P02, and P03. If Chi is the horizontal (x dimension) coefficient for the ith column, then: 
         [0000]        Pa 0 =Ch 0 *P 00 +Ch 1 *P 10 +Ch 2 *P 20 +Ch 3 *P 30. 
         [0108]    For example, if the triangular filter described above is used and the fractional part of “a” is ¼ or 4/16 away from (0,1), the coefficients from phase 16 can then be chosen such that 
         [0000]        P 0 a =(0 *P 00+96* P 10+32* P 20+0* P 30)/128=96 *P 10+32 *P 20. 
         [0109]    The characteristics of the image at (0,a) using other filter coefficients or using other interpolative methods utilizing different number of canvas pixels can be similarly obtained. 
         [0110]    Likewise, a two dimension interpolation can be obtained using a two-step one dimensional interpolation process to obtain the viewing image characteristics P(ab) at canvas position (a, b) as a function of N*M canvas pixels if those pixels are selected for filtering. For example, for a bicubic interpolation, i.e., for N=4 and M=4 where, as illustrated in  FIG. 10   b , the characteristics are first determined at four intermediate canvas positions (a,0), (a,1), (a,2), and (a,3) such that the image characteristics at the corresponding positions are: 
         [0000]        P 0 b=Cv 0 *P 00 +Cv 1 *P 01 +Cv 2 *P 02 +Cv 3 *P 03 
         [0000]        P 1 b=Cv 0 *P 10 +Cv 1 *P 11 +Cv 2 *P 12 +Cv 3 *P 13 
         [0000]        P 2 b=Cv 0 *P 20 +Cv 1* P 21 +Cv 2 *P 22 +Cv 3 *P 23 
         [0000]        P 3 b=Cv 0* P 30 +Cv 1 *P 31 +Cv 2 *P 32 +Cv 3 *P 33 
         [0111]    Where Cvi is the vertical weighing or filtering coefficients at row “i”. These coefficients may be pre-calculated and stored in a table. 
         [0112]    The above for image characteristics may again be combined with the corresponding Chi, the horizontal weighing or filtering coefficients at column “i” to obtain the image characteristics at (a,b) such that: 
         [0000]        Pab=Ch 0 *P 0 b+Ch 1 *P 1 b+Ch 2 *P 2 b+Ch 3 *P 3 b    
         [0113]    The filtering or weighing coefficients Chi and Cvi are dependent on the fractional pixel value of a and b. The size of the source image, the ratio of the sharpness/blurriness desired, and other factors may dictate the desired fractional resolution between two pixels or the fractional accuracy of the positions needed. In the preferred methods where the positions within the canvas are accurate up to 1/64 of a pixel, i.e., where the fractional resolution between two pixels is 64 steps, there may be 64 table items for each Chi or Cvi. If a tent filter is used, then these coefficients may be derived from the coefficients listed herein in this specification. 
         [0114]    While the present invention has been described with reference to certain preferred embodiments or methods, it is to be understood that the present invention is not limited to such specific embodiments or methods. Rather, it is the inventor&#39;s contention that the invention be understood and construed in its broadest meaning as reflected by the following claims. Thus, these claims are to be understood as incorporating not only the preferred methods described herein but all those other and further alterations and modifications as would be apparent to those of ordinary skilled in the art.