Claims
- 1. An apparatus for encoding an orientation interpolator, which includes key data indicating the locations of keyframes on a temporal axis and key value data indicating the rotation of an object, the apparatus comprising:
a break point extractor which extracts, from a first animation path constituted by an orientation interpolator input thereinto, a minimum number of break points, which can bring about an error of no greater than a predetermined error limit between the first animation path and a second animation path to be generated by the extracted break points; a key data encoder which encodes key data input from the break point extractor; and a key value data encoder which encodes key value data input from the break point extractor by generating rotational differential data, by which the object is rotationally transformed by as much as a difference between a rotational transformation value of a current keyframe and a rotational transformation value of a previous keyframe.
- 2. The apparatus of claim 1, wherein the break point extractor comprises:
a linear interpolator which extracts a beginning path point and an ending path point of an input animation path, selects path points between the beginning and ending path points, and interpolates other path points, which still have not yet been selected, using the selected path points; an error calculator which calculates an error between the input animation path and an interpolated animation path generated by the linear interpolator using interpolation; and a determining unit which extracts break points, by which an error between the input animation path and the interpolated animation path can be minimized, and outputs the selected break points if the corresponding error is not greater than a predetermined error limit.
- 3. The apparatus of claim 2, wherein if the error between the input animation path and the interpolated animation path constituted, which is minimized by the selected break points, is greater than the predetermined error limit, the linear interpolator selects all the path points except for the break points input from the determining unit one by one and performs spherical linear interpolation on the selected path points.
- 4. The apparatus of claim 2, wherein the error calculator divides the input animation path and an animation path generated by the spherical linear interpolation into a predetermined number of sections based on one reference component constituting their path points and calculates an error between the input animation path and the generated animation path in each of the sections by measuring an area of each of the sections.
- 5. The apparatus of claim 1 further comprising:
a resampler which samples the first animation path into a predetermined number of sections having an interval of a predetermined amount of time and outputs an orientation interpolator including resampled key data and resampled key value data; and a selector which outputs an orientation interpolator input thereinto to the resampler or the break point extractor depending on an external input signal.
- 6. The apparatus of claim 5, wherein the resampler divides an animation path constituted by key data and key value data of an orientation interpolator into a predetermined number of sections having an interval of a predetermined amount of time, outputs end points of each of the sections as key data to be encoded, and outputs key value data existing on the animation path in each of the sections as key value data to be encoded.
- 7. The apparatus of claim 1 further comprising a resampler which samples the first animation path into a predetermined number of sections having an interval of a predetermined amount of time and outputs an orientation interpolator including resampled key data and resampled key value data, wherein the break point extractor extracts break points from an animation path constituted by an orientation interpolator input from the resampler.
- 8. The apparatus of claim 1 further comprising a resampler which samples an animation path constituted by an orientation interpolator extracted from the break point extractor into a predetermined number of sections having an interval of a predetermined amount of time and outputs an orientation interpolator including resampled key data and resampled key value data to the key data encoder and the key value data encoder.
- 9. The apparatus of claim 1, wherein the key data encoder quantizes the key data input from the break point extractor using predetermined quantization bits, generates differential data by performing a predetermined DPCM operation on quantized key data, and encodes the differential data.
- 10. The apparatus of claim 1, wherein the key data encoder comprises:
a first quantizer which quantizes key data of an orientation interpolator using predetermined quantization bits; a first DPCM processor which generates differential data of the quantized key data; a DND processor which performs a DND operation on the differential data depending on a relationship between the differential data and a maximum value and a minimum value among them; and a first entropy encoder which entropy-encodes the differential data input from the DND processor.
- 11. The apparatus of claim 1, wherein the key data encoder further comprises a linear key encoder, which identifies and encodes a region where key data linearly increase among all key data input thereinto.
- 12. The apparatus of claim 10, wherein the key data encoder further comprises:
a shifter which obtains a differential datum (mode) having the highest frequency among the differential data input from the first DPCM processor and subtracts the mode from the differential data; and a folding processor which converts the shifted differential data into positive numbers or negative numbers, and the DND processor selects one of the differential data input from the shifter, the differential data input from the folding processor, and the DNDed differential data depending on the number of bits required for encoding and outputs the selected differential data.
- 13. The apparatus of claim 1, wherein the key value encoder comprises:
a rotational differential data generator which generates, using a rotational transformation value of a current keyframe and a restored rotational transformation value of a previous keyframe, a rotational differential value used to rotate the object by as much as a difference between rotational transformation applied to the object in the current keyframe by key value data and rotational transformation applied to the object in the previous keyframe by key value data, and outputs rotational differential data by quantizing the rotational differential value; and an entropy encoder which entropy-encodes the rotational differential data.
- 14. The apparatus of claim 13, wherein the rotational differential data generator comprises:
a quantizer which generates rotational differential data by quantizing three component values of the rotational differential value; a quantized data adjustor which adjusts three component values of rotational differential data input thereinto; an inverse quantizer which inverse-quantizes the adjusted component values; a rotational differential value restorer which restores one component value, which has not been quantized, using the three inverse-quantized component values and thus generate a restored rotational differential value; and an error measurement unit which measures an error between a rotational differential value input into the quantizer and the restored rotational differential value and outputs rotational differential data having adjusted component values so that the error can be minimized.
- 15. The apparatus of claim 13, wherein the rotational differential data generator comprises:
a first quaternion multiplier which generates the rotational differential value using the rotational transformation value of the current keyframe and the restored rotational transformation value of the previous keyframe; a quantizer which generates rotational differential data by quantizing the rotational differential value; an inverse quantizer which generates a restored rotational differential value by inverse-quantizing the rotational differential data; and a second quaternion multiplier which generates a restored rotational differential value of the current keyframe by quaternion-multiplying the restored rotational differential value by a rotational transformation value of the previous keyframe.
- 16. The apparatus of claim 13, wherein the rotational differential data generator comprises:
a rotation direction error detector which detects whether or not the rotation direction error has occurred so that the original rotation direction of the object is opposite to a decoded rotation direction of the object, a based on the rotational transformation value of the current keyframe and the restored rotational transformation value of the previous keyframe; a rotation direction corrector which adjusts the rotational differential value so that the decoded rotation direction of the object can be the same as the original rotation direction of the object; and a rotation direction selector which selects either the rotation differential value or the rotation differential value input from the rotation direction corrector as differential data to be quantized, depending on the result of the detection input from the rotation direction error detector.
- 17. An apparatus for encoding an orientation interpolator, which includes key data indicating the locations of keyframes on a temporal axis and key value data indicating the rotation of an object, the apparatus comprising:
a resampler which samples an animation path constituted by an input orientation interpolator into a predetermined number of sections having an interval of a predetermined amount of time and outputs an orientation interpolator including resampled key data and resampled key value data; a key data encoder which encodes key data input from the resampler; and a key value data encoder which generates a rotational differential value used to rotate an object by as much as a difference between rotational transformation applied to the object by key value data of a current keyframe and rotational transformation applied to the object by key value data of a previous keyframe and thus encodes key value data input from the resampler.
- 18. The apparatus of claim 17, wherein the resampler divides an animation path constituted by key data and key value data of an orientation interpolator into a predetermined number of sections having an interval of a predetermined amount of time, outputs end points of each of the sections as key data to be encoded, and outputs key value data existing on the animation path in each of the sections as key value data to be encoded.
- 19. The apparatus of claim 17, wherein the key data encoder comprises a linear key encoder, which identifies and encodes a region where key data linearly increase among all key data input thereinto.
- 20. The apparatus of claim 17, wherein the key value data encoder comprises:
a rotational differential data generator which generates, using a rotational transformation value of a current keyframe and a restored rotational transformation value of a previous keyframe, a rotational differential value used to rotate the object by as much as a difference between rotational transformation applied to the object in the current keyframe by key value data and rotational transformation applied to the object in the previous keyframe by key value data, and outputs rotational differential data by quantizing the rotational differential value; and an entropy encoder which entropy-encodes the rotational differential data.
- 21. The apparatus of claim 20, wherein the rotational differential data generator comprises:
a quantizer which generates rotational differential data by quantizing three component values of the rotational differential value; a quantized data adjustor which adjusts three component values of rotational differential data input thereinto; an inverse quantizer which inverse-quantizes the adjusted component values; a rotational differential value restorer which restores one component value, which has not been quantized, using the three inverse-quantized component values and thus generate a restored rotational differential value; and an error measurement unit which measures an error between a rotational differential value input into the quantizer and the restored rotational differential value and outputs rotational differential data having adjusted component values so that the error can be minimized.
- 22. The apparatus of claim 20, wherein the rotational differential data generator comprises:
a first quaternion multiplier which generates the rotational differential value using the rotational transformation value of the current keyframe and the restored rotational transformation value of the previous keyframe; a quantizer which generates rotational differential data by quantizing the rotational differential value; an inverse quantizer which generates a restored rotational differential value by inverse-quantizing the rotational differential data; and a second quaternion multiplier which generates a restored rotational differential value of the current keyframe by quaternion-multiplying the restored rotational differential value by a rotational transformation value of the previous keyframe.
- 23. The apparatus of claim 20, wherein the rotational differential data generator comprises:
a rotation direction error detector which detects whether or not the rotation direction error has occurred so that the original rotation direction of the object is opposite to a decoded rotation direction of the object, a based on the rotational transformation value of the current keyframe and the restored rotational transformation value of the previous keyframe; a rotation direction corrector which adjusts the rotational differential value so that the decoded rotation direction of the object can be the same as the original rotation direction of the object; and a rotation direction selector which selects either the rotation differential value or the rotation differential value input from the rotation direction corrector as differential data to be quantized, depending on the result of the detection input from the rotation direction error detector.
- 24. An apparatus for decoding a bitstream, into which an orientation interpolator, including key data indicating the locations of keyframes on a temporal axis and key value data indicating the rotation of an object, is encoded, the apparatus comprising:
a key data decoder which decodes key data from an input bitstream; a key value data decoder which decodes key value data from the input bitstream; and an orientation interpolator synthesizer which generates an orientation interpolator by synthesizing decoded key value data and key value data spherically linearly interpolated using the decoded key value data.
- 25. The apparatus of claim 24, wherein if there is no decoded key value data corresponding to key data currently being subjected to orientation interpolator synthesization, the orientation interpolator synthesizer interpolates key value data corresponding to the key data currently being subjected to orientation interpolator synthesization using decoded key value data corresponding to previously synthesized key data and decoded key value data corresponding to key data to be synthesized next.
- 26. The apparatus of claim 24, wherein the key data decoder comprises:
an entropy decoder which generates differential data by entropy-decoding the input bitstream; an inverse DPCM processor which generates quantized key data by performing a predetermined inverse DPCM operation on the differential data; and an inverse quantizer which generates restored key data by inverse-quantizing the quantized key data.
- 27. The apparatus of claim 24, wherein the key value data decoder comprises:
an entropy decoder which generates circular-DPCMed rotational differential data or quantized rotational differential data by entropy-decoding key value data from the bitstream; an inverse circular DPCM operator which generates quantized rotational differential data by performing an inverse circular DPCM operation on rotational differential data input from the entropy-decoder following the order of DPCM operation decoded from the bitstream; an inverse quantizer which generates rotational differential data used to rotate the object by as much as a difference between rotational transformations applied to the object by quaternion key value data of each of the keyframes by inverse-quantizing the quantized rotational differential data; and a quaternion multiplier which generates a rotational transformation value of a current keyframe by quaternion-multiplying a rotational differential value of the current keyframe by a restored rotational transformation value of a previous keyframe.
- 28. A method for encoding an orientation interpolator including key data indicating the locations of keyframes on a temporal axis and key value data indicating the location of an object, the method comprising:
(b) generating key data and key value data to be encoded by extracting, from a first animation path constituted by the orientation interpolator, a minimum number of break points, which can bring about an error of no greater than a predetermined error limit between the first animation path and a second animation to be generated by the extracted break points; (d) encoding the key data generated in step (b); and (e) encoding the key value data generated in step (b) by generating rotational differential data, by which the object is rotationally transformed by as much as a difference between a rotational transformation value of a current keyframe and a rotational transformation value of a previous keyframe.
- 29. The method of claim 28, wherein step (b) comprises:
(b1) extracting a beginning path point and an ending path point of the first animation path; (b2) selecting path points between the beginning and ending path points one by one and spherical-linear-interpolating other path points, which still have not yet been selected, using the selected path points and the extracted path points; (b3) calculating an error between the first animation path and a second animation path generated by interpolation in step (b2); and (b4) extracting break points, by which an error between the first animation path and the second animation path can be minimized, checking if the corresponding error is not greater than a predetermined error limit, and determining key data and key value data to be encoded.
- 30. The method of claim 28 further comprising (a) generating an orientation interpolator including resampled key data and resampled key value data by sampling the first animation path into a predetermined number of sections having an interval of a predetermined amount of time, before step (b),
wherein in step (b), break points are extracted from an animation path constituted by the orientation interpolator generated in step (a).
- 31. The method of claim 30, wherein in step (a), the first animation path is divided into a predetermined number of sections having an interval of a predetermined amount of time, end points of each of the sections are set up as the sampled key data, and key value data existing on the first animation path in each of the sections are set up as the sampled key value data.
- 32. The method of claim 28 further comprising (c) generating key data and key value data to be encoded by sampling the second animation path constituted using the extracted break points into a predetermined number of sections having an interval of a predetermined number of time, after step (b).
- 33. The method of claim 28, wherein step (d) comprises:
quantizing the key data with a predetermined number of quantization bits; generating differential data by performing a predetermined DPCM operation on quantized data; and entropy-encoding the differential data.
- 34. The method of claim 28, wherein step (e) comprises:
(e1) generating a rotational differential value used to rotate the object by as much as a difference between rotational transformations applied to the object by key value data of the current and previous keyframes using a rotational transformation value of the current keyframe and a restored rotational transformation value of the previous keyframe and generating rotational differential data by quantizing the rotational differential value; and (e2) entropy-encoding the rotational differential data.
- 35. The method of claim 34, wherein step (e1) comprises:
(e11) generating rotational differential data by quantizing three component values of the rotational differential value; (e12) adjusting three component values of the rotational differential data; (e13) inverse-quantizing the adjusted component values; (e14) generating a restored rotational differential value by restoring one component value using the three inverse-quantized component values; and (e15) measuring an error between the rotational differential value and the restored rotational differential value and determining rotational differential data having adjusted component values so that the error can be minimized as rotational differential data to be entropy-encoded.
- 36. The method of claim 34, wherein step (e1) comprises:
(e11) generating the rotational differential value using a rotational transformation value of the current keyframe and a restored rotational transformation value of the previous keyframe; (e12) generating rotational differential data by quantizing the rotational differential value; (e13) generating a restored rotational differential value by inverse-quantizing the rotational differential data; and (e14) generating a restored rotational transformation value of the current keyframe by quaternion-multiplying the restored rotational differential value by a rotational transformation value of the previous keyframe.
- 37. The method of claim 34, wherein step (e1) comprises:
(e11) detecting whether or not a rotation direction error has occurred so that an original rotation direction of the object is opposite to a decoded rotation direction of the object depending on the rotational transformation value of the current keyframe and the restored rotational transformation value of the previous keyframe; (e12) adjusting the rotational differential value so that the original rotation direction of the object can be the same as the decoded rotation direction of the object; and (e13) selecting the rotational differential value or the adjusted rotational differential value in step (e12) as differential data to be quantized depending on the result of the detection performed in step (e11).
- 38. A method for encoding an orientation interpolator including key data indicating the locations of keyframes on a temporal axis and key value data indicating the rotation of an object, the method comprising:
(a) sampling an animation path constituted by the orientation interpolator into a predetermined number of sections having an interval of a predetermined amount of time and thus generating an orientation interpolator including resampled key data and resampled key value data; (d) reducing the range of the key data sampled in step (a) and encoding the key data; and (e) encoding the key value data sampled in step (a) by generating and encoding a rotational differential value used to rotate the object by as much as a difference between rotational transformation applied to the object by key value data of a current keyframe and rotational transformation applied to the object by key value data of a previous keyframe.
- 39. The method of claim 38, wherein step (a) comprises dividing the animation path into a predetermined number of sections having an interval of a predetermined amount of time, setting up end points of each of the sections as the sampled key data, and setting up key value data existing on the first animation path in each of the sections as the sampled key value data.
- 40. The method of claim 38, wherein step (e) comprises:
(e1) generating a rotational differential value used to rotate the object by as much as a difference between rotational transformations applied to the object by key value data of the current and previous keyframes using a rotational transformation value of the current keyframe and a restored rotational transformation value of the previous keyframe and generating rotational differential data by quantizing the rotational differential value; and (e2) entropy-encoding the rotational differential data.
- 41. The method of claim 40, wherein step (e1) comprises:
(e11) generating rotational differential data by quantizing three component values of the rotational differential value; (e12) adjusting three component values of the rotational differential data; (e13) inverse-quantizing the adjusted component values; (e14) generating a restored rotational differential value by restoring one component value using the three inverse-quantized component values; and (e15) measuring an error between the rotational differential value and the restored rotational differential value and determining rotational differential data having adjusted component values so that the error can be minimized as rotational differential data to be entropy-encoded.
- 42. The method of claim 40, wherein step (e1) comprises:
(e11) generating the rotational differential value using a rotational transformation value of the current keyframe and a restored rotational transformation value of the previous keyframe; (e12) generating rotational differential data by quantizing the rotational differential value; (e13) generating a restored rotational differential value by inverse-quantizing the rotational differential data; and (e14) generating a restored rotational transformation value of the current keyframe by quaternion-multiplying the restored rotational differential value by a rotational transformation value of the previous keyframe.
- 43. The method of claim 40, wherein step (e1) comprises:
(e11) detecting whether or not a rotation direction error has occurred so that an original rotation direction of the object is opposite to a decoded rotation direction of the object depending on the rotational transformation value of the current keyframe and the restored rotational transformation value of the previous keyframe; (e12) adjusting the rotational differential value so that the original rotation direction of the object can be the same as the decoded rotation direction of the object; and (e13) selecting the rotational differential value or the adjusted rotational differential value in step (e12) as differential data to be quantized depending on the result of the detection performed in step (e11).
- 44. A computer-readable recording medium where computer-readable program codes, by which the method of claim 28 is realized, are recorded.
- 45. A computer-readable recording medium where computer-readable program codes, by which the method of claim 30 is realized, are recorded.
- 46. A computer-readable recording medium where computer-readable program codes, by which the method of claim 32 is realized, are recorded.
- 47. A computer-readable recording medium where computer-readable program codes, by which the method of claim 38 is realized, are recorded.
- 48. A method for decoding a bitstream, into which an orientation interpolator, including key data indicating the locations of keyframes on a temporal axis and key value data indicating the rotation of an object, is encoded, the method comprising:
(a) decoding key data from an input bitstream; (b) decoding key value data from the input bitstream; and (c) generating an orientation interpolator by synthesizing decoded key value data and key value data spherically linearly interpolated using the decoded key value data.
- 49. The method of claim 48, wherein in step (c), if there is no decoded key value data corresponding to key data currently being subjected to orientation interpolator synthesization, key value data corresponding to the key data currently being subjected to orientation interpolator synthesization are interpolated using decoded key value data corresponding to previously synthesized key data and decoded key value data corresponding to key data to be synthesized next.
- 50. The method of claim 48, wherein step (a) comprises:
generating differential data by entropy-decoding the input bitstream; generating quantized key value data by performing a predetermined DPCM operation and an inverse DND operation on the differential data; and generating restored key data by inverse-quantizing the quantized key value data.
- 51. The method of claim 48, wherein step (b) comprises:
(b1) generating circular-DPCMed rotational differential data or quantized rotational differential data by entropy-decoding key value data from the bitstream; (b2) generating rotational differential data by performing an inverse circular DPCM operation on entropy-decoded rotational differential data following the order of DPCM operation decoded from the bitstream; (b3) generating a rotational differential value used to rotate the object by as much as a difference between rotational transformations applied to the object by quaternion key value data of each of the keyframes by inverse-quantizing the rotational differential data; and (b4) generating a rotational transformation value of a current keyframe by quaternion-multiplying a rotational differential value of the current keyframe by a decoded rotational transformation value of a previous keyframe.
- 52. A computer-readable recording medium where computer-readable program codes, by which the method of claim 48 is realized, are recorded.
- 53. A computer-readable recording medium where computer-readable program codes, by which the method of claim 51 is realized, are recorded.
- 54. A bitstream, into which an orientation interpolator, including key data indicating the locations of keyframes on a temporal axis and key value data indicating the rotation of an object, is encoded, the bitstream comprising:
key data encoding/decoding information, into which key data and information necessary to decode the key data are encoded; and key value data encoding/decoding information, into which key value data and information necessary to decode the key value data are encoded, wherein the key data encoding/decoding information comprises:
inverse DND operation information including the order of inverse DND indicating a predetermined number of cycles of inverse DND to be performed on differential data generated by entropy-decoding the bitstream in order to extend the range of the differential data and maximum and minimum values among differential data used in each cycle of inverse DND operation; first inverse DPCM operation information including the order of inverse DPCM operation to be performed on the inverse-DNDed differential data so as to convert the inverse-DNDed differential data into quantized key data and intra key data which are used for each cycle of inverse DPCM operation; and first inverse quantization information used in inverse quantization to generate restored key data by inverse-quantizing the quantized key data, and the key value data encoding/decoding information comprises:
rotational differential data entropy-encoded by quantizing a rotational differential value used to rotate the object by as much as a difference between rotational transformations applied to the object by quaternion key value data of each of the keyframes; entropy-decoding information including an entropy decoding mode indicating an entropy decoding method to be performed on the rotational differential data; inverse circular DPCM operation information including the order of inverse circular DPCM operation, which indicates whether or not an inverse circular DPCM operation will be performed on entropy-decoded rotational differential data following the entropy decoding mode; and second inverse quantization information including a predetermined number of inverse quantization bits used to restore original key value data by inverse-quantizing the quantized key value data.
- 55. The bitstream of claim 54, wherein the inverse DND operation information the inverse DND operation information further comprises a flag indicating whether or not a shift-down operation will be performed on differential data subjected to an inverse DND operation.
- 56. The bitstream of claim 54, wherein the first inverse quantization information comprises an inverse quantization bit size and maximum and minimum values among quantized key data, which are used when inverse-quantizing the quantized key data.
- 57. The bitstream of claim 56, wherein the maximum and minimum values among the quantized key data are adjusted so as to minimize a quantization error of the quantized key data.
- 58. The bitstream of claim 54, wherein the key data encoding/decoding information further comprises linear key decoding information used for decoding a linear key region included in the bitstream, and the linear key decoding information comprises a flag indicating whether or not there exists the linear key region where key data linearly increase among the key data, the number of key data included in the linear key region, and beginning and ending key data of the linear key region.
- 59. The bitstream of claim 54, wherein the rotational differential data are encoded so that only three components of a rotational differential value represented by a quaternion are quantized.
- 60. The bitstream of claim 54, wherein the entropy-decoding information further comprises:
a key value flag indicating whether or not rotational differential data of each component of the key value data have the same value; and predetermined rotational differential data to be decoded into each component of rotational differential data of all key value data when the key value flag indicates that the rotational differential data of each of the components of the key value data have the same value.
- 61. The bitstream of claim 54, wherein the inverse circular DPCM information further comprises intra rotational differential data used for performing an inverse circular DPCM operation on the rotational differential data.
Priority Claims (1)
| Number |
Date |
Country |
Kind |
| 2002-73044 |
Nov 2002 |
KR |
|
Parent Case Info
[0001] This application claims the priority of Korean Patent Application No. 2002-73044, filed Nov. 22, 2002, in the Korean Intellectual Property Office. This application also claims the benefit of U.S. Provisional Application No. 60/333,130, filed Nov. 27, 2001; U.S. Provisional Application No. 60/334,541, filed Dec. 3, 2001; U.S. Provisional Application No. 60/342,101, filed Dec. 26, 2001; and U.S. Provisional Application No. 60/369,597, filed Apr. 4, 2002. The entire contents of these applications are incorporated herein by reference.
Provisional Applications (4)
|
Number |
Date |
Country |
|
60333130 |
Nov 2001 |
US |
|
60334541 |
Dec 2001 |
US |
|
60342101 |
Dec 2001 |
US |
|
60369597 |
Apr 2002 |
US |