Claims
- 1. A pruned tetrahedral interpolator for interpolating between interpolation data values using input data values each having d components to generate output data values, said d components represented by d sets of bits each partitioned to form d sets of higher order bits and d sets of lower order bits, said d sets of higher order bits used for selecting 2.sup.d of said interpolation data values, said pruned radial interpolator comprising:
- a first multiplexer having a first multiplexer output and a first control input, said first multiplexer configured for receiving said 2.sup.d of said interpolation data values, said first control input configured for receiving a first value determined from said d sets of lower order bits;
- a first adder having a first input, a second input, and an output, said first input coupled to said first multiplexer output, said second input configured to receive one of said 2.sup.d of said interpolation data values.
- 2. The pruned tetrahedral interpolator as recited in claim 1, further comprising:
- a first bitwise AND block having a first input, a second input and an output, said first input of said first bitwise AND block arranged for receiving said first value, said second input of said first bitwise AND block arranged to receive a second value determined from said d sets of lower order bits;
- a first bitwise OR block having a first input, a second input and an output, said first input of said first bitwise OR block arranged for receiving said first value, said second input of said first bitwise OR block arranged for receiving said second value;
- a second multiplexer having a second multiplexer output and a second control input, said second multiplexer configured for receiving said 2.sup.d of said interpolation data values, said second control input coupled to said output of said first bitwise AND block;
- a third multiplexer having a third multiplexer output and a third control input, said third multiplexer configured for receiving said 2.sup.d of said interpolation data values, said third control input coupled to said output of said first bitwise OR block;
- a second adder having a first input, a second input, and an output, said first input of said second adder coupled to said second multiplexer output, said second input of said second adder coupled to said third multiplexer output; and
- a third adder having a first input, a second input, and an output, said first input of said third adder coupled to said output of said first adder, said second input of said third adder coupled to said output of said second adder.
- 3. The pruned tetrahedral interpolator as recited in claim 2, wherein:
- 1b.sub.1, 1b.sub.2, 1b.sub.3, . . . , 1b.sub.d designate said d sets of lower order bits with a bit position of each bit of said d sets of lower order bits designated from a most significant of said lower order bits to a least significant of said lower order bits by a value of i varying over a range corresponding to the number of said bit position, computation of said first and said second values, each designated as v(i), uses said d sets of lower order bits according to v(i)=2.sup.d-1 .times.1b.sub.1 (i)+2.sup.d-2 .times.1b.sub.2 (i)+.sup.d-3 .times.1d.sub.3 (i)+ . . . +2.sup.d-d .times.1b.sub.d (i) for each of said values of i from, respectively, 1 to 0.
- 4. The pruned tetrahedral interpolator as recited in claim 3, wherein:
- each of said interpolation data values includes D interpolation data value components; and
- each of said D interpolation data value components corresponds to a dimension of an output color space and each of said d components of said input data values corresponds to a dimension of an input color space.
- 5. The pruned tetrahedral interpolator as recited in claim 4, wherein:
- a printing device includes said pruned tetrahedral interpolator for performing a color space conversion.
- 6. The pruned tetrahedral interpolator as recited in claim 5, wherein:
- D equals 3 and d equals 3, said output color space includes a color space selected from the group consisting of a RGB, a Lab, a XYZ, a HSV, a Luv, a HLS, and a CMY color space and said input color space includes a color space selected from the group consisting of a RGB, a Lab, a XYZ, a HSV, a Luv, a HLS, and a CMY color space.
- 7. The pruned tetrahedral interpolator as recited in claim 5, wherein:
- D equals 4 and d equals 3, said output color space includes a CMYK color space and said input color space includes a color space selected from the group consisting of a RGB, a Lab, a XYZ, a HSV, a Luv, a HLS, and a CMY color space.
- 8. A tetrahedral interpolator for interpolating between interpolation data values using input data values each having d components to generate output data values, said d components represented, correspondingly, by d sets of bits each partitioned to form d sets of higher order bits and d sets of lower order bits, said d sets of higher order bits used for selecting 2.sup.d of said interpolation data values, said tetrahedral interpolator comprising:
- a set of 2.times.2.sup.d multiplexers with each of said multiplexers having a multiplexer output and configured to receive said 2.sup.d of said interpolation data values, each of said multiplexers for selecting a one of said 2.sup.d of said interpolation data values responsive to one of 2.times.2.sup.d values determined from said d sets of lower order bits; and
- a set of 2.sup.d adders with each of said adders having a first input, a second input, and an output, each of a first group of 2.sup.d of said multiplexers having the corresponding of said multiplexer output coupled to one of said first input, each of a second group of 2.sup.d of said multiplexers having the corresponding of said multiplexer output coupled to one of said second input, said set of 2.times.2.sup.d multiplexers and said set of 2.sup.d adders forming a stage.
- 9. The tretrahedral interpolator as recited in claim 8, wherein:
- 1b.sub.1, 1b.sub.2, 1b.sub.3, . . . , 1b.sub.4 designate said d sets of lower order bits with each of said d sets of lower order bits having n of said bits and a bit position of each bit of said d sets of lower order bits designated from a most significant of said lower order bits to a least significant of said lower order bits by a value of i ranging, correspondingly, from n-1 to 0, computation of said 2.times.2.sup.d values uses v(i) computed from said d sets of lower order bits according to v(i)=2.sup.d-1 .times.1b.sub.1 (i)+2.sup.d-2 .times.1b.sub.2 (i)+2.sup.d-3 .times.1b.sub.3 (i)+. . . +2.sup.d-d .times.1b.sub.d (i) for each of said values of i with said v(i) used to compute a first 2.sup.d of said 2.times.2.sup.d values according to v(i)&k, for a value of k ranging from 0 to 2.sup.d -1, and with said v(i) used to compute a second 2.sup.d of said 2.times.2.sup.d values according to v(i).vertline.k, for said value of k ranging from 0 to 2.sup.d -1.
- 10. The tetrahedral interpolator as recited in claim 9, wherein:
- computation of said first 2.sup.d of said 2.times.2.sup.d values uses 2.sup.d of a bitwise AND block, each of said bitwise AND block having a first input, a second input and an output with said first input of said bitwise AND block configured for receiving one of said first 2.sup.d of said 2.times.2.sup.d values, said second input of said bitwise AND block configured for receiving one of said value of k, said output of each of said 2.sup.d of said bitwise AND block coupled to one of said first group of 2.sup.d of said multiplexers; and
- computation of said second 2.sup.d of said 2.times.2.sup.d values uses 2.sup.d of a bitwise OR block, each of said bitwise OR block having a first input, a second input and an output with said first input of said bitwise OR block configured for receiving one of said second 2.sup.d of said 2.times.2.sup.d values, said second input of said bitwise OR block configured for receiving one of said value of k, said output of each of said 2.sup.d of said bitwise OR block coupled to one of said second group of 2.sup.d of said multiplexers.
- 11. The tetrahedral interpolator as recited in claim 10, further comprising:
- (n-1) additional of said set of 2.times.2.sup.d multiplexers; and
- correspondingly, (n-1) additional of said set of 2.sup.d adders, corresponding of said (n-1) additional of said set of 2.times.2.sup.d multiplexers and said (n-1) additional of said set of 2.sup.d adders forming (n-1) additional of said stage, said 2.sup.d multiplexer inputs of each of said multiplexers of said (n-1) additional of said set of 2.times.2.sup.d multiplexers coupled to 2.sup.d of said output of said adder of another one of said stage.
- 12. With interpolation data values for selection using input data values each having d components, said d components represented by d sets of bits each partitioned to form d sets of higher order bits and d sets of lower order bits with each of said d sets of lower order bits having n bits, said d sets of lower order bits designated as 1b.sub.1, 1b.sub.2, . . . , 1b.sub.d with the bit position of each bit of said d sets of lower order bits designated from the most significant of said lower order bits to the least significant of said lower order bits by a value of i ranging, correspondingly, from n-1 to 0, a method of tetrahedral interpolation, comprising the steps of:
- computing a first value according to v(i)=2.sup.d-1 .times.1b.sub.1 (i)+2.sup.d-2 .times.1b.sub.2 (i)+. . . +2.sup.d-d .times.1b.sub.d (i) for said value of i equal to (n-1);
- computing a first set of AND values according to v(n-1) & k, for said value of k ranging from 2.sup.d -1 to 0;
- computing a first set of OR values according to v(n-1).vertline.k, for said value of k ranging from 2.sup.d -1 to 0;
- selecting a first set of 2.sup.d pairs of said interpolation data values using said first set of said AND values and said first set of said OR values, each of said first set of 2.sup.d pairs selected using one of said first set of said AND values and one of said first set of said OR values each computed using the same of said value of k; and
- computing a first set of 2.sup.d sums by summing each of said first set of 2.sup.d pairs of said interpolation data values.
- 13. The method of tetrahedral interpolation as recited in claim 12, further comprising the step of:
- selecting 2.sup.d of said interpolation data values using said d sets of higher order bits with said step of selecting said first set of 2.sup.d pairs of said interpolation data values performed upon said 2.sup.d of said interpolation data values, said step of selecting 2.sup.d of said interpolation data values occurs prior to said step of computing said first value.
- 14. The method of tetrahedral interpolation as recited in claim 13, further comprising the steps of:
- computing a second value according to v(i)=2.sup.d-1 .times.1b.sub.1 (i)+2.sup.d-2 .times.1b.sub.2 (i)+ . . . +2.sup.d-d .times.1b.sub.d (i) for said value of i equal to (n-2);
- computing a second set of AND values according to v(n-2) & k, for said value of k ranging from 2.sup.d -1 to 0;
- computing a second set of OR values according to v(n-2).vertline.k, for said value of k ranging from 2.sup.d -1 to 0;
- selecting a second set of 2.sup.d pairs of values from said first set of 2.sup.d sums using said second set of said AND values and said second set of said OR values, each of said second set of 2.sup.d pairs selected using one of said second set of said AND values and one of said second set of said OR values each computed using the same of said value of k;
- computing a second set of 2.sup.d sums by summing each of said second set of 2.sup.d pairs of values;
- computing a third value according to v(i)=2.sup.d-1 .times.1b.sub.1 (i)+2.sup.d-2 .times.1b.sub.2 (i)+. . . +2.sup.d-d .times.1b.sub.d (i) for said value of i equal to (n-3);
- computing a third set of AND values according to v(n-3) & k, for said value of k ranging from 2.sup.d -1 to 0;
- computing a third set of OR values according to v(n-3).vertline.k, for said value of k ranging from 2.sup.d -1 to 0;
- selecting a third set of 2.sup.d pairs of values from said second set of 2.sup.d sums using said third set of said AND values and said third set of said OR values, each of said third set of 2.sup.d pairs selected using one of said third set of said AND values and one of said third set of said OR values each computed using the same of said value of k;
- computing a third set of 2.sup.d sums by summing each of said third set of 2.sup.d pairs values;
- computing a fourth value according to v(i)=2.sup.d-1 .times.1b.sub.1 (i)+2.sup.d-2 .times.1b.sub.2 (i)+ . . . +2.sup.d=d .times.1b.sub.d (i) for said value of i equal to (n-4);
- computing a fourth set of AND values according to v(n-4) & k, for said value of k ranging from 2.sup.d -1 to 0;
- computing a fourth set of OR values according to v(n-4).vertline.k, for said value of k ranging from 2.sup.d -1 to 0;
- selecting a fourth set of 2.sup.d pairs of values from said third set of 2.sup.d sums using said second set of said AND values and said second set of said OR values, each of said fourth set of 2.sup.d pairs selected using one of said fourth set of said AND values and one of said fourth set of said OR values each computed using the same of said value of k;
- computing a fourth set of 2.sup.d sums by summing each of said fourth set of 2.sup.d pairs of values; and
- dividing a one of said fourth set of 2.sup.d sums by 16.
- 15. The method of tetrahedral interpolation as recited in claim 14, (wherein) further comprising:
- with said method of tetrahedral interpolation for performing a color space conversion, printing using said one of said fourth set of 2.sup.d sums divided by 16 where each of said interpolation data values includes D components that each correspond to a dimension of an output color space and each of said d components of said input data values corresponds to a dimension of an input color space.
- 16. With interpolation data values for selection using input data values each having d components, said d components represented by d sets of bits each partitioned to form d sets of higher order bits and d sets of lower order bits with each of said d sets of lower order bits having n bits, said d sets of lower order bits designated as 1b.sub.1, 1b.sub.2, . . . 1b.sub.d with the bit position of each bit of said d sets of lower order bits designated from the most significant of said lower order bits to the least significant of said lower order bits by a value of i ranging, correspondingly, from n-1 to 0, a method of pruned tetrahedral interpolation, comprising the steps of:
- computing a first set of 2.sup.n -2 values using bitwise AND operations and bitwise OR operations operating upon 2.sup.d-1 .times.1b.sub.1 (i)+2.sup.d-2 .times.1b.sub.2 (i)+ . . . +2.sup.d=d .times.1b.sub.d (i) for said value of i ranging from (n-1) to 0;
- selecting at least the minimum of 2.sup.n and 2.sup.d of said interpolation data values using ones of said first set of 2.sup.n -2 values, v(i) for one of said values of i equal n-1, and said d sets of higher order bits; and
- adding a second set of said interpolation data values formed from said interpolation data values from said step of selecting to generate a sum.
- 17. The method of pruned tetrahedral interpolation as recited in claim 16, further comprising the step of:
- dividing said sum by 2.sup.n ; and
- with said method of pruned tetrahedral interpolation for performing a color space conversion printing using said sum divided by 2.sup.n.
- 18. The method of pruned tetrahedral interpolation as recited in claim 17, wherein:
- said step of computing said first set of 2.sup.n -2 values occurs using v(n-1) & v(n-2), v(n-1).vertline.v(n-2), v(n-1)&(v(n-2)&v(n-3)), v(n-1)&(v(n-2).vertline.v(n-3)), v(n-1) (v(n-2) &v(n-3)), v(n-1).vertline.(v(n-2).vertline.v(n-3)), v(n-1)&(v(n-2)&(v(n-3)&v(n-4))), v(n-1)&(v(n-2) & (v(n-3).vertline.v(n-4))), v(n-1)&(v(n-2).vertline.(v(n-3)&v(n-4))), v(n-1)&(v(n-2).vertline.(v(n-3).vertline.v(n-4))), v(n-1).vertline.(v(n-2).vertline.(v(n-3)&v(n-4))), v(n-1).vertline.(v(n-2)&(v(n-3).vertline.v(n-4))), v(n-1) (v(n-2).vertline.(v(n-3) & v(n-4))), and v(n-1).vertline.(v(n-2).vertline.(v(n-3).vertline.v(n-4))); and
- said second set of said interpolation data values includes multiple ones of said interpolation data values from said step of selecting selected using said ones of said first set of 2.sup.n -2 values repeated in said first set of 2.sup.n -2 values.
- 19. The method of pruned tetrahedral interpolation as recited in claim 18, wherein:
- each of said interpolation data values includes D components that each correspond to a dimension of an output color space and each of said d components of said input data values corresponds to a dimension of an input color space.
- 20. The method of pruned tetrahedral interpolation as recited in claim 19, wherein:
- D equals 4, d equals 3, and n equals 4, said output color space includes a CMYK color space and said input color space includes a color space selected from the group consisting of a RGB, a Lab, a XYZ, a HSV, a Luv, a HLS, and a CMY color space.
- 21. The method of pruned tetrahedral interpolation as recited in claim 19, wherein:
- D equals 3, d equals 3, and n equals 4, said output color space includes a color space selected from the group consisting of a RGB, a Lab, a XYZ, a HSV, a Luv, a HLS, and a CMY color space and said input color space includes a color space selected from the group consisting of a RGB, a Lab, a XYZ, a HSV, a Luv, a HLS, and a CMY color space.
- 22. A pruned tetrahedral interpolator for interpolating between interpolation data values using input data values each having d components to generate output data values, said d components represented by d sets of bits partitioned to form d sets of lower order bits with each of said d sets of lower order bits having n of said bits, said pruned tetrahedral interpolator comprising:
- a first set of .sub.2.sup.n -1 multiplexers each configured for receiving one of a set of control inputs and having a multiplexer output, each of said multiplexers of said first set for selecting from said interpolation data values responsive to said one of said set of control inputs; and
- a means for adding configured for receiving said multiplexer output of said set of multiplexers.
- 23. The pruned tetrahedral interpolator as recited in claim 22, wherein:
- each of said multiplexers of said first set includes 2.sup.d of multiplexer inputs for receiving 2.sup.d of said interpolation data values.
- 24. The pruned tetrahedral interpolator as recited in claim 23, wherein:
- said means for adding includes 2.sup.n -1 adders each having a first input, a second input, and an output;
- 2.sup.n-1 -1 of said adders each have said first input and said second input coupled to one of said multiplexer output of said first set of multiplexers;
- said first input of one of said adders includes a configuration for receiving one of said interpolation data values selected using d sets of higher order bits partitioned from said d sets of bits and said second input couples to one of said multiplexer output of said first set of multiplexers;
- 2.sup.n -(2.sup.n-1 +1) of said adders each have said first input and said second input coupled to said output of another of said adders; and
- said first set includes a partitioning into n groups of said multiplexers each designated by a value of i ranging from n-1 to 0, each of said n groups of said first set having, respectively, 2.sup.i of said multiplexers from said first set.
- 25. The pruned tetrahedral interpolator as recited in claim 24, further comprising:
- a second set of 2.sup.n-1 -1 bitwise AND blocks each having a first input, a second input, and an output, said second set partitioned into n-1 groups of said bitwise AND blocks each designated by said value of i ranging from n-1 to 1, each of said n-1 groups of said second set having, respectively, .sub.2.sup.i-1 of said bitwise AND blocks, each of said output of said bitwise AND blocks from said n-1 groups of said second set coupled to one of said multiplexers in one of said n-1 groups of said first set having the corresponding of said value of i to supply one of said set of control inputs; and
- a third set of 2.sup.n-1 -1 bitwise OR blocks each having a first input, a second input, and an output, said third set partitioned into n-1 groups of said bitwise OR blocks each designated by said value of i ranging from n-1 to 1, each of said n-1 groups of said third set having, respectively, 2.sup.i-1 of said bitwise OR blocks, each of said output of said bitwise OR blocks from said n-1 groups of said third set coupled to one of said multiplexers in one of said n-1 groups of said first set having the corresponding of said value of i to supply one of said set of control inputs.
- 26. The pruned tetrahedral interpolator as recited in claim 25, wherein:
- 1b.sub.1, 1b.sub.2, 1b.sub.3, . . . , 1b.sub.d designate said d sets of lower order bits with a bit position of each of said bits of said d sets of lower order bits designated from a most significant of said lower order bits to a least significant of said lower order bits by a value of k ranging, correspondingly, from n-1 to 0, computation of a fourth set of n values, each designated as v[k], uses said d sets of lower order bits according to v(k)=2.sup.d-1 .times.1b.sub.1 (k)+2.sup.d-2 .times.1b.sub.2 (k)+2.sup.d-3 .times.1b.sub.3 (k) + . . . +2.sup.d-d .times.1b.sub.d (k) for each of said values of k; and
- said first input of each of said bitwise AND blocks and said bitwise OR blocks in said n-1 groups corresponding to said value of i ranging from n-1 to 1 includes a configuration to receive one of said fourth set of n values for k equal to n-1, said second input of each of said bitwise AND blocks and said bitwise OR blocks in said n-1 groups corresponding to said value of i ranging from n-1 to 2 each arranged for receiving one of a fifth set of values computed using bitwise AND operations and bitwise OR operations upon ones of said fourth set of n values, said second input of each of said bitwise AND blocks and said bitwise OR blocks in said n-1 groups corresponding to said value of i equal to 1 includes a configuration to receive one of said fourth set of n values for k equal to n-2.
- 27. The pruned tetrahedral interpolator as recited in claim 26, wherein:
- each of said interpolation data values includes D interpolation data value components; and
- each of said D interpolation data value components corresponds to a dimension of an output color space and each of said d components of said input data values corresponds to a dimension of an input color space.
- 28. The pruned tetrahedral interpolator as recited in claim 27, wherein:
- a printing device includes said pruned tetrahedral interpolator for performing a color space conversion.
- 29. The pruned tetrahedral interpolator as recited in claim 28, wherein:
- D equals 4, d equals 3, and n equals 4, said output color space includes a CMYK color space and said input color space includes a color space selected from the group consisting of a RGB, a Lab, a XYZ, a HSV, a Luv, a HLS, and a CMY color space.
- 30. The pruned tetrahedral interpolator as recited in claim 28, wherein:
- D equals 3, d equals 3, and n equals 4, said output color space includes a color space selected from the group consisting of a RGB, a Lab, a XYZ, a HSV, a Luv, a HLS, and a CMY color space and said input color space includes a color space selected from the group consisting of a RGB, a Lab, a XYZ, a HSV, a Luv, a HLS, and a CMY color space.
CROSS REFERENCE TO RELATED APPLICATIONS
This application includes subject matter related to the co-pending application entitled: "RADIAL AND PRUNED RADIAL INTERPOLATION", the co-pending patent application Ser. No. 08/990,016 entitled: "COMMON PRUNED RADIAL AND PRUNED TETRAHEDRAL INTERPOLATION HARDWARE IMPLEMENTATION", the co-pending patent application Ser. No. 08/989,962 entitled "NON-SYMMETRIC RADIAL AND PRUNED RADIAL INTERPOLATION", the co-pending patent application Ser. No. 08/990,000 entitled: "NON-SYMMETRIC TETRAHEDRAL AND PRUNED TETRAHEDRAL INTERPOLATION", and the co-pending patent application Ser. No. 08/989,998 entitled "COMMON NON-SYMMETRIC PRUNED RADIAL AND NON-SYMMETRIC PRUNED TETRAHEDRAL INTERPOLATION HARDWARE IMPLEMENTATION", each incorporated by reference herein and filed on even date herewith.
US Referenced Citations (13)
Foreign Referenced Citations (1)
Number |
Date |
Country |
0366309A2 |
May 1990 |
EPX |