Abstract:
A method for computing the output values of a first series of input points, given the output values of a second series of input points is disclosed. The method comprises, for each input point of the first series forming a weighted distance measure, for each of the second series of input points, derived from the absolute distance between the first series input point and the second series input point. Next, an error measure function is determined including a summation over each of the second series of input points, of an absolute error between a proposed line or curve and the output value of the second series of points, weighted by the weighted distance measure. The error measure function is then substantially minimized to produce a finalized line or curve. The finalized line or curve is then used to derive an output value at the first series point.

Description:
FIELD OF THE INVENTION 
     The present invention relates to the curve fitting of a series of data points and has particular applications to curved fittings so as to produce suitable color look up tables for a color space re-mapping process. Such a color re-mapping process finds particular application in the re-calibration of color printing and scanning devices. 
     MICROFICHE APPENDIX 
     A single-fiche microfiche Appendix A containing 43 pages is included with this disclosure. 
     BACKGROUND OF THE INVENTION 
     The background of the invention will now be described with reference to the accompanying drawings in which: 
     FIG. 1 is a schematic block diagram of a known color conversion process; and 
     FIG. 2 illustrates various methods utilised in deriving a predetermined set of output values. 
     Referring now to FIG. 1, there is shown a simplified form of a prior art color copying process. Hitherto, an image which is to be copied is placed on a scanner 1 and scanned at a high resolution, commonly 600 dots per inch (dpi). In the full color scanning process, known to those skilled in the art, the scanned values produced for each pixel of the image on scanner 1 includes separate values for the Red, Green and Blue (RGB) color components. Hence, the scanned pixels can be plotted in a three dimensional RGB color space, also known as an additive color space. The scanned pixels are normally printed out on a printer 2, which normally prints an image by utilising multiple color passes. The printer 2, normally works in a subtractive color space such as a Cyan, Magenta and Yellow (CYM) color space, or a Cyan, Yellow, Magenta and blacK (CYMK) color space. In order to transfer color values from RGB space to CYMK or CYM space, it is necessary to determine the corresponding Cyan, Yellow, Magenta and blacK components for each possible Red, Green and Blue value which a pixel of the scanned image can take. As each color component of the input signal can take a large number of values, with common systems utilising eight bit color component values, giving 256 possible levels for each color component, the number of overall combinations of values for input pixels is extremely large (in this example over 16 million values). 
     In order to determine the mapping for any particular RGB--CYMK transfer function, a series of known RGB values can be printed out by the output device or printer 2 and their colormetric CYMK values can be measured using a colorimeter. 
     As the number of possible color points is excessively large, one method of determining a transfer function is to measure the color component values of a predetermined number of points and to derive a table with each entry being a 7 tuple (RGBCYMK) comprising the RGB values and corresponding CYMK values obtained from measurements. Points not in the table can then be derived by means of interpolation. The normal interpolation technique used is linear interpolation and an example of such a system is given in U.S. Pat. No. 3,893,166 by Pugsley, entitled &#34;Color Correcting Image Reproduction Methods and Apparatus&#34;. 
     The predetermined points can be chosen utilising a number of criteria. Firstly, it is desirable that the points cover the whole of the color space. Secondly, the system utilised for interpolation can require the predetermined points to be, for example, evenly spaced within one or other of the color spaces. Alternatively, it can be desirable to increase the number of points where the color transfer function is not well behaved, at the expense of decreasing the number of points where the transfer function is well behaved, thereby giving an overall increase in accuracy for the interpolation process. 
     Unfortunately, the physical color conversion process is known to be a highly non-linear process with the actual color produced by printer 2 being dependent on a large number of factors including the type of inks used, the type of paper used and the type of scanners used to scan the image from scanner 1. Consequentially, given an initial set of sample points, it is unclear how to derive a set of desired predetermined points from the set of sample points. 
     Referring now to FIG. 2, there will now be explained an example of two prior art color conversion processes. As stated previously, the color conversion process is a highly non-linear one and includes interactions between the various color components. Although the process is a multi-dimensional one, FIG. 2 shows a single slice through the multi-dimensional plane for constant green and blue for illustration of a particular transfer function between the Red component of an input image and the required Magenta output component. 
     It is assumed that, for a series of sample points, 30-38, the corresponding Red components 20-28 and corresponding Magenta components 40-48 are measured. This set of sample points can then be plotted on the Red-Magenta axes, and from this series of plots an overall curve or transfer function derived. 
     Unfortunately, once the sample points have been plotted, it is unclear as to what process should then be utilised to derive the corresponding magenta values of a set of predetermined points 12-19 on the red axis. A number of known methods can be used, however, each of these methods have a number of significant disadvantages. In a first method known as Lagrange interpolation, a polynomial 9 is fitted to the sample data such that it passes through each of the sample data points. Use of Lagrange interpolation often produces inadequate results for those sample points which are not well behaved (i.e. do not substantially conform to a linear relationship) and the Lagrange interpolation can result in a transfer function having excessive oscillation thereby producing unrealistic results. 
     A second known method is that known as &#34;least squares&#34; which, in its simplest form, fits a straight line, 10, in the vicinity of the given data points such that the sum of the squares of the distances of those points from the straight line is minimised, where the distance is measured in the vertical direction. Unfortunately, the least squares method can itself lead to a substantial reduction in the fidelity of the transfer function as -much detail is lost. The fitting of quadratics and higher order polynomials utilising a least squared methodology is also known to those skilled in the art but goes only part of the way to solving this problem of fidelity loss. 
     A third method of deriving the transfer function can consist of constructing straight line segments between the various data points. However, this method can lead to large discontinuities of derivatives at the various end points. In the color conversion process, such a transfer function has been found to produce unacceptable results with banding and other artifacts being found in certain images. 
     SUMMARY OF THE INVENTION 
     It is an object of the present invention to provide an improved method for determining the output values of a first series of input points, given the output values of a second series of input points. By use of such a method, the necessary transfer function can be derived. 
     In accordance with one aspect of the present invention, there is provided a method for computing the output values of a first series of input points, given the output values of a second series of input points, said method comprising, for each of said first series of input points: 
     forming a weighted distance measure, for each of said second series of input points, derived from the absolute distance between said first series input point and said second series input point; 
     determining an error measure function including a summation over each of said second series of input points, of an absolute error between a proposed line or curve and the output value of said second series of points, weighted by said weighted distance measure; 
     substantially minimizing said error function to produce a finalized line or curve; and, utilizing said finalized line or curve to derive an output value at said first series point. 
     Preferably, said step of determining said error measure function comprises determining said summation from a previously calculated summation forming part of said error measure functions for adjacent input points of a current one of said first series of input points and from said second series of input points which are between said adjacent input points and said current one of said first series of input points. 
     Preferably, said step of determining said error measure function further comprises multiplying said previously calculated summation by a constant. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     A number of preferred embodiments of the present invention will now be described with reference to the accompanying drawings in which: 
     FIG. 1 is a schematic block diagram of a known color conversion process; 
     FIG. 2 illustrates various methods utilized in deriving a predetermined set of output values; 
     FIG. 3 illustrates a second example of an input--output mapping utilising a single weighting function; 
     FIG. 4 illustrates the weighting function of FIG. 3 when applied to a series of equally spaced input points; 
     FIG. 5 illustrates the process of calculating a new output point in accordance with the recurrence relationship utilised as part of a second embodiment; 
     FIG. 6 illustrates the weighting function of FIG. 3 in two dimensions; 
     FIG. 7 illustrates the process of forming a summation from lower, previously calculated summations; 
     FIG. 8 to FIG. 15 illustrate the process of determining a summation from many different part summations; and 
     FIG. 16 is a flowchart indicative of a fundamental embodiment of the described invention. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     Turning now to a first embodiment of the present invention, the transfer function is determined by utilising a &#34;weighted least squares&#34; process, the details of which will be further described herein, firstly in relation to the a one dimensional transfer process and subsequently in relation to a multi-dimensional transfer process. 
     In a two dimensional case it is desired to determine a corresponding function value at a predetermined series of points 12-19 of FIG. 2, given the sample input values 20-28 and corresponding output values 40-48. The method for determining output values for each of the set of points 12-19 utilises a weighting (w i ) which is assigned to each sample point 20-28 depending on how close it is to a desired value e.g. 12. Although many different weighting functions can be used, it has been found that an inverse exponential weighting function produces a suitable result. In particular, a weighting function of the following form is preferred: ##EQU1## 
     In this equation, d represents an absolute distance measure between the sample point, and the desired output point and a is a scaling or noise following factor. Larger values of σ result in the closer points having substantially more influence on the resultant output value. In the preferred embodiment the value used for σ is 0.06 when the color values take on the range 0 to 1. 
     Once a weighting value has been assigned to each value point, a weighted error squared function can be formed as follows: ##EQU2## where v=ax+b is the equation of a line to approximate the data points in the vicinity of the desired point. In the present example x signifies the Red axis and v signifies the Magenta axis. To minimise the weighted error squared function E, the partial derivatives of E are taken and set to zero as follows: ##EQU3## 
     This gives two linear equations (4), (6) with two unknowns (a, b). Hence, this system of equations can be solved for a and b and the final equation of the line v=ax+b can be used to determine an output value for the point v at the desired input point x. 
     The above process can then be repeated for each of the desired predetermined points 12-19 to produce an overall series of corresponding output values. 
     The above process can be readily extended to many dimensions. For example, to calculate a mapping from three input dimensions (x,y,z) to one output dimension (v), given a predetermined set of sample points (x i , y i , z i , v i ), each desired output point is calculated in the following manner: 
     Firstly, a weighting (w i ) is assigned to each sample point depending on how close it is to the desired output point, with the distance being calculated using a Euclidean distance measure. Next, a weighted error squared function is formed as follows: ##EQU4## where V=ax+by+cz+d is the equation of a hyperplane which approximates the data points in the four dimensional space. To minimise E, the partial derivatives are again set to zero: ##EQU5## this gives: ##EQU6## 
     This then gives four linear equations and four unknowns (a, b, c, d). It is therefore possible to solve for (a, b, c, d) and substitute the desired input value into the derived hyperplane to obtain an output value for v at the point (x, y, z). This process can then be repeated for each desired output point. 
     The obtained points can then be loaded into a color correction system such as that disclosed in U.S. Pat. No. 3,893,166 and utilised in an interpolation system for deriving color space transformation values. 
     Other weighting functions, such as a Gaussian or a linear distance measure can be used, however, the stated weighting function has been found to produce the best results to date. An example weighting function which is somewhat quicker to evaluate on modern computers and which also gives suitable results and which can be used in substitution for Equation 1 is: 
     
         e-(|dx|+|dy|+|dz|)/.sigma. (EQ13) 
    
     where dx, dy and dz are distances measured from the sample point in question to the desired output point in x, y and z co-ordinates respectively. 
     Modern color laser copiers are often subject to substantial color variation over their operational life. It is therefore often the case that they require constant recalibration. Unfortunately, the above mentioned process is too computationally intensive for use in anything but a batch process. As it is desirable to be able to quickly recalibrate an output device, a less computationally demanding color mapping process is desired. 
     One such form of efficient calibration will now be described. However, for simplification of the method to be described, a reformulation of the problem and solution is required. 
     Firstly, the one dimensional case of the problem can be described as the calculation of a mapping of a one-dimensional array of equally-spaced point-values from a randomly distributed set of point-values utilising the previously described &#34;exponential&#34; least squares fit to calculate each equally spaced point-value. 
     Referring now to FIG. 3, there is shown a second example of an input--output mapping utilising a single weighting function. The weighting function 51 is illustrated in the one dimensional case. It is assumed that eleven sample points 52-61 are provided and it is desired to calculate the output value Q 64 at the desired point X, 62 in accordance with the previously described weighted exponential method with reference to Equation 1. 
     In this method, the &#34;exponential&#34; least squares fit involves a weighted summation of quantities from the sample input values. For example, an example of the resultant summation can be characterised as: 
     
         sum.sub.i (w(x.sub.i) * x.sub.i) or sum.sub.i (w(y.sub.i) * y.sub.i)(EQ14) 
    
     where (x i , y i ) is the position of sample point i, sumi is the sum over all the sample values and w(x) is the desired weighting function. 
     The sample points closer to the desired point 65 are more important, so they have a greater weight attached to them when summing. 
     The desired form of the weighting function for the particular desired output X value is made up of two exponential curves 67, 68 which take the following form: 
     
         w.sub.X (a)=e.sup.-(a-X)/σ if a&gt;X                    (EQ15) 
    
     
         wX(a)=e.sup.-(X-a)/σ if a&lt;=X.                        (EQ16) 
    
     Referring now to FIG. 4, there is shown the weighting function of FIG. 3 when applied to a series of equally spaced input points. To create the mapping, it is assumed that the output values of a series of equally spaced points 65, 70-74, must be calculated. These points can be denoted {X 0 . . X N  }, where X j  =K×j, K being a constant. 
     If each point is calculated in turn from left to right, the weighting function can be said to &#34;move&#34; from left to right. This is illustrated in FIG. 4 where the weighting function takes the same form around each of the desired input points X 1  to X N . 
     It should be noted that it is a property of an exponential curve that moving the curve by a constant amount is equivalent to multiplying its value by another constant. Mathematically, this can be represented by the expression: 
     
         e.sup.x-C =e.sup.-C ·e.sup.x                      (EQ. 17) 
    
     From FIG. 3, the weighting function 67, 68 is made up of two separate exponential curves, the left curve and the right curve. If the overall sum required to be calculated is expressed as follows: 
     
         S(X)=sumi(w.sub.x (x.sub.i)*v.sub.i)                       (EQ18) 
    
     then it is possible to split the contribution from the weighted sample values into a &#34;left hand side&#34; portion and a &#34;right hand side&#34; portion as follows: 
     
         S.sub.left (X)=sum.sub.i:xi&lt;X (w.sub.x (x.sub.i) *v.sub.i) (EQ19) 
    
     
         S.sub.right (X)=sum.sub.i:xi&gt;=X (w.sub.X (x.sub.i) *v.sub.i)tm (EQ20) 
    
     with: 
     
         S(X)=S.sub.left (X)+S.sub.right (X)                        (EQ21) 
    
     Now the sums S left  and S right  can be calculated independently. By way of example, the sum S left  can be calculated for the left hand side points in accordance with the following pseudo-code: 
     S left  (X 0 )=S left  (0)=0 by definition. ##EQU7## 
     Hence, all of the S left  sums can be calculated in one pass through the sample data as the final form of S left  (X j ) is in the form of a recurrence relation involving the previous sum S left  (X j ) and those values between a previous input point and a current input point. The process of calculating S right  can be determined in a similar manner, moving right-to-left instead of left-to-right. 
     Referring now to FIG. 5, there is shown the process of calculating a new output point in accordance with the recurrence relationship utilised as part of a second embodiment. At the stage of the process illustrated, it is desired to calculate the output value for the new point 80. The value of the previous sum, calculated for the point 81 is known. Therefore, in order to move from the point 81 to the point 80, the previous sum for the point 81 is multiplied by the constant e -K/ σ and added to the weighted value of any sample point e.g. 82, which is between the points 80 and 81, to produce the new sum. 
     Once S left  and S right  are calculated for all points, they can then be added together to produce values of S at all points. The least-squares fit can then be performed. 
     Since it is desired to utilise the above process for color conversion of colors stored as three dimensional values, the process needs to be extended into three dimensions. As noted previously, a number of different alternative weighting functions can be utilised. However, to extend the above one dimensional process into three dimensions, the following weighting function was chosen: 
     
         w.sub.X,Y,Z (x, y, z)=e.sup.-(abs(x-X)+abs(y-Y)+abs(z-Z))/σ(EQ 22) 
    
     This weighting function is analogous to the well known &#34;Manhattan&#34; distance measure of treating each dimension independently, being in an equivalent form to Equation 13. 
     Referring now to FIG. 6, there is shown the weighting function of FIG. 3 in two dimensions. Of course, the weighting function is inherently a three dimensional process (w(x,y,z)), however, due to the difficulties of illustrating a three dimensional process, only two dimensions (w(x,y)) are illustrated in FIG. 6. In FIG. 6, any movement of the weighting function in the direction of constant y (in the direction of arrow 86), can be simulated by the multiplication of the relevant sums by a constant. 
     More formally, the process of calculation can be set out in a similar way to the one-dimensional case as follows: 
     
         S(X,Y,Z)=sum.sub.i (w.sub.x,y,z (x.sub.i,y.sub.i,z.sub.i)*v.sub.i)(EQ23) 
    
     Then the weighting function can be split into a &#34;left hand side&#34; and a &#34;right hand side&#34;: 
     
         S.sub.left (X,Y,Z)=sum.sub.i:xi&lt;x (W.sub.x,y,z (x.sub.i,y.sub.i,z.sub.i)*v.sub.i)                        (EQ24) 
    
     
         S.sub.right (X,Y,Z)=Sum.sub.i:xi&gt;=X (w.sub.X,Y,Z (x.sub.i,y.sub.i,z.sub.i)*v.sub.i)                        (EQ25) 
    
     Therefore: 
     
         S(X,Y,Z)=S.sub.left (X,Y,Z)+S.sub.right (X,Y,Z)            (EQ26) 
    
     The sums S left  and S right  can then be calculated independently. For example, the sum S left  is calculated at all points as follows: 
     For 1=0 to N 
     For m=0 to N 
     Y=K×1 
     Z=K x m 
     S left  (X 0 ,Y,Z)=S left  (O,Y,Z)=0 by definition. ##EQU8## 
     The final result is in the same form as the one dimensional case. 
     It will be evident to those skilled in the art that whereas the normal method of calculating an exponentially weighted least squares fit over the input sample data would require in the order of O(N 3 ) passes through three dimensional data, the above incremental calculation process reduces the number of passes to be of O(N 2 ) passes. 
     The above three dimensional incremental process can be further improved on from an order O(N 2 ) process to a process requiring order O(1) passes through a set of three dimensional input data at the expense of requiring O(N 3 ) storage locations, which is practical for most applications. 
     Firstly, instead of S left  and S right , a partial sum for each of the eight `octants` around a point in 3D space is determined as follows: 
     
         S.sub.&lt;&lt;&lt; (X,Y,Z)=sum.sub.i:xi&lt;X,yi&lt;Y, zi&lt;Z (W.sub.X,Y,Z (x.sub.i,y.sub.i,z.sub.i)*v.sub.i)                        (EQ27) 
    
     
         S.sub.&lt;&lt;&gt;(X,Y,Z)=sum.sub.i:xi&lt;X, yi&lt;Y, zi&gt;=Z (w.sub.X,Y,Z (x.sub.i,y.sub.i,z.sub.i)*v.sub.i)                        (EQ28) 
    
     
         S.sub.&lt;&lt;&lt; (X,Y,Z)=sum.sub.i:xi&lt;X,yi&gt;=Y,zi&lt;Z (w.sub.X,Y,Z (x.sub.i,y.sub.i,z.sub.i)*v.sub.i)                        (EQ29) 
    
     
         S.sub.&lt;&gt;&gt; (X,Y,Z)=sum.sub.i:xi&lt;X, yi&gt;=Y, zi&gt;=Z (w.sub.X,Y,Z (x.sub.i,y.sub.i,z.sub.i)*v.sub.i)                        (EQ30) 
    
     
         S.sub.&gt;&lt;&lt; (X,Y,Z)=sum.sub.i:xi&gt;=X,yi&lt;Y,zi&lt;Z (W.sub.X,Y,Z (x.sub.i,y.sub.i,z.sub.i)*v.sub.i)                        (EQ31) 
    
     
         S.sub.&gt;&lt;&gt; (X,Y,Z)=sum.sub.i:xi&gt;=X, yi&lt;Y, zi&gt;=Z (w.sub.X,Y,Z (x.sub.i,y.sub.i,z.sub.i)*v.sub.i)                        (EQ32) 
    
     
         S.sub.&gt;&gt;&lt; (X,Y,Z)=sum.sub.i:xi&gt;=X, yi&gt;=Y,zi&lt;Z (w.sub.X,Y,Z (x.sub.i,y.sub.i,z.sub.i)*v.sub.i)                        (EQ33) 
    
     
         S.sub.&gt;&gt;&gt; (X,Y,Z)=sum.sub.i:xi&gt;=X, yi&gt;=Y, zi&gt;=Z (W.sub.X,Y,Z (x.sub.i,y.sub.i,z.sub.i)*v.sub.i)                        (EQ34) 
    
     Trivially then, S(X,Y,Z) will be just the sum of each of the octants: 
     
         S(X,Y,Z)=S.sub.&lt;&lt;&lt; (X,Y,Z)+S.sub.&lt;&lt;&gt; (X,Y,Z)+S.sub.&lt;&gt;&lt; (X,Y,Z)+S.sub.&lt;&lt;&gt; (X,Y,Z)+S.sub.&gt;&lt;&lt; (X,Y,Z)+S.sub.&gt;&lt;&gt; (X,Y,Z)+S.sub.&gt;&gt;&lt; (X,Y,Z)+S.sub.&gt;&gt;&gt; (X,Y,Z)                                                   (EQ35) 
    
     Firstly, consider the calculation of S &lt;&lt;&lt;   for all grid points. Turning now to FIG. 7, there is shown a three dimensional space 90. If it is assumed that possible data input values take on a range of values between zero and one and it is desired to find the value of S(X,Y,Z) at the point (X,Y,Z) 92, then S &lt;&lt;&lt;   (X,Y,Z) is the summation formed from all sample points in the cubic region W (91). 
     Now the region W (91) can be made up from a number of sub-regions or sub-volumes. In FIG. 8 to FIG. 15, there is shown a number of sub-regions V0-V7. These regions include: 
     V0 (FIG. 8) which is the rectangle bounded by the points (X-K, Y-K, Z-K) and (X,Y,Z) 
     V1 (FIG. 9) which is the rectangle bounded by the points (0,0,0) and (X-K, Y-K, Z-K). 
     V2 (FIG. 10) which is the rectangle bounded by the points (0,0,0) and (X-K, Y, Z). 
     V3 (FIG. 11) which is the rectangle bounded by the points (0,0,0) and (X, Y, Z-K). 
     V4 (FIG. 12) which is the rectangle bounded by the points (0,0,0) and (X, Y-K, Z). 
     V5 (FIG. 13) which is the rectangle bounded by the points (0,0,0) and (X-K, Y, Z-K). 
     V6 (FIG. 14) which is the rectangle bounded by the points (0,0,0) and (X, Y-K, Z-K). 
     V7 (FIG. 15) which is the rectangle bounded by the points (0,0,0) and (X-K, Y-K, Z). 
     Taking each of the volumes V0-V7, it can be seen that the volume W can be created utilising the following formula: 
     
         W=V0+V2+V3+V4-V5-V6-V7+V1                                  (EQ36) 
    
     Therefore, S &lt;&lt;&lt;  (X,Y,Z) can be created from a number of separate sums in accordance with Equation 36. These summation are as follows: 
     S &lt;&lt;&lt;  (X-K,Y-K,Z-K), which sums over V1. 
     S &lt;&lt;&lt;  (X-K,Y,Z), which sums over V2. 
     S &lt;&lt;&lt;  (X,Y,Z-K), which sums over V3. 
     S &lt;&lt;&lt;  (X,Y-K,Z), which sums over V4. 
     S &lt;&lt;&lt;  (X-K,Y,Z-K), which sums over V5. 
     S &lt;&lt;&lt;  (X,Y-K,Z-K), which sums over V6. 
     S &lt;&lt;&lt;  (X-K,Y,Z-K), which sums over V7. 
     This means that the sum for W (i.e. S &lt;&lt;&lt;  (X,Y,Z)) can be calculated from the sums for V0-V7 (i.e. the other sums S &lt;&lt;&lt;  mentioned above). These sums must be multiplied by a constant to allow for the shift in the central point of the weighting function. 
     Hence the only actual summing of data required to calculate S &lt;&lt;&lt;  (X,Y,Z) is the sum over V0. The sum over the remaining volume is calculated from previous S &lt;&lt;&lt;  sums. V0 is one cube in the grid of points to be calculated. 
     Calculating all the S &lt;&lt;&lt;  sums involves summing over all such cubes. This is the same as making one pass through the data. Calculating the entire mapping will therefore involve eight passes through the data, one per octant. 
     Algorithmically, the process is as follows: 
     First create a three dimensional array G j ,l,m of partial sums (this will contain the V0 sums), where 0&lt;j&lt;=N, 0&lt;1&lt;=N, 0&lt;m&lt;=N, and G j ,l,m is defined as: 
     
         G.sub.j,l,m =sum.sub.(i:K.(j-1)&lt;=xi&lt;K.j,K.(1-1)&lt;=yi&lt;K.1,K.(m-1)&lt;=zi&lt;k.m) (w.sub.K.j,K.1K.m (x.sub.i,y.sub.i,z.sub.i)*v.sub.i)      (EQ37) 
    
     The array G j ,i,m can be formed by initializing the array to zeros and then making one pass through the data. Each data point takes part in exactly one of the sums in the array. So for each data point, the process is to calculate which sum it belongs to and add it to that sum. This can be represented algorithmically as follows: 
     G j ,i,m =0 for all j,l,m 
     For all i 
     j=floor(xi * N)+1 
     l=floor(yi * N)+1 
     m=floor(zi * N)+1 
     G j ,l,m +=w K .j,K.l,K.m (x i ,y i ,z i )*V i   
     In addition, we define G j ,l,m =0 for j=0 or 1=0 or m=0 (these are `inclusive-OR&#39;s). 
     S &lt;&lt;&lt;  can then be calculated in the following way: 
     S &lt;&lt;&lt;  (X,Y,Z)=0 for X=0 or Y=0 or Z=0 (these are `inclusive-OR&#39;s) by definition ##EQU9## 
     Of course, all the S &lt;&lt;&lt;  terms in the above formula will have already been calculated when they are required. 
     The other summations of Equation 27 to Equation 34 can then be calculated in a similar manner. Finally, Equation 35 can be utilised to produce a value of S &lt;&lt;&lt;  (X,Y,Z) for each desired output point. 
     Normally, the first method least-squares operation requires O(N 3 ) passes through the data. Using the basic three dimensional incremental calculation method, this is reduced to O(N 2 ) passes. Using the fully three-dimensional method, it is reduced to O(1) passes at the cost of O(N 3 ) storage spaces. 
     In practice, when generating a 16×16×16 mapping, execution time for the standard method was found to be approximately 30 minutes. The basic incremental method was found to take 4 minutes and the fully three-dimensional incremental method was found to take 15 seconds. The times being measured on an unloaded SUN SPARC station IPX. 
     Appendix A discloses the `C` code implementation of the final fully three-dimensional incremental method described above. 
     The foregoing describes only a number of embodiments of the present invention and modifications, obvious to those skilled in the art, can be made thereto without departing from the scope of the present invention.