1. A method for partitioning an object into chunks, comprising:
calculating fingerprint values at each position within the object;
evaluating an offset associated with each possible cut-point location;
evaluating the fingerprint values located within a horizon around each position within the object;
identifying a cut-point location in response to the evaluated fingerprint values; and
partitioning the object into chunks based on the identified cut-point locations.
2. The method of claim 1, wherein calculating the fingerprint values at each position within the object further comprises applying a fingerprint function to object data contained within a small window around each position.
3. The method of claim 2, wherein applying the fingerprint function further comprises using at least one of: a Rabin polynomial; an Adler hash; and a random hash with cyclic shifting.
4. The method of claim 1, further comprising adjusting the size of the horizon based on at least one of: a data type associated with the object; the size of the object; an environmental constraint; and a usage model associated with the object.
5. The method of claim 2, further comprising adjusting the size of the small window based on at least one of: a data type associated with the object; the size of the object; an environmental constraint; and a usage model associated with the object.
6. The method of claim 1, wherein evaluating the fingerprint values located within the horizon, further comprises applying a mathematical function to the fingerprint values and identifying a cut-point location when the mathematical function is satisfied.
7. The method of claim 6, wherein applying the mathematical function further comprises: using a predicate to map fingerprint values into Boolean values; partitioning fingerprint values into a small domain; determining a maximum value within the horizon; determining a minimum value within the horizon; evaluating differences between fingerprint values within the horizon; and summing fingerprint values within the horizon.
8. The method of claim 2, wherein evaluating the fingerprint values located within the horizon further comprises: applying a mathematical function on fingerprint values; and identifying a cut-point location at a given offset when the mathematical function attains a pre-determined value at a given offset and attains other pre-determined values at a predetermined number of previous offsets.
9. The method of claim 8, wherein the mathematical function comprises at least one of: a predicate; and a function that partitions fingerprint values into a suitable small domain.
10. The method of claim 2, wherein applying the mathematical function further comprises determining a local maximum fingerprint value within the horizon.
11. The method of claim 10, further comprising: allocating a first flag array and a second flag array of length equal to the horizon and initializing the flag arrays to Boolean false; allocating a first fingerprint array and a second fingerprint array of length equal to the horizon and initializing the fingerprint array to zero; allocating a first offset array and a second offset array of length equal to the horizon and initializing the offset arrays to zero; initializing an index l to zero; initializing an index k to zero; and initializing a current offset into the object to zero.
12. The method of claim 11, further comprising: traversing the object in intervals batches of size h and within each interval: setting the value of the first index into the first flag array to true; setting the value of the first index into the first offset array to the last offset of the current interval batch; setting the value of the first index into the fingerprint arrays to the fingerprint at the last offset of the current interval; and decrementing the offset to the last position of the current interval.
13. The method of claim 12, further comprising: as long as the current value of the last offset of the current interval is greater than the value of the second offset array at index l plus the value of h, then updating the value of the first flag array at position k to false provided the fingerprint value at the current value of the last offset is equal to the value of the first fingerprint array at position k; if the fingerprint value at the current value of the last offset is greater than the value of the first fingerprint array at position k, then incrementing k and setting the value of the first offset array at index k to the value of the current last offset; setting the value of the first flag array at index k to true, and setting the value of the first hash array at index k to the current value of the last offset; and decrementing the offset to the last position of the current interval.
14. The method of claim 12, further comprising: as long as the current value of the offset is not less than the offset to the beginning of the current interval then updating the value of the first flag array at position k to false, provided the fingerprint value at the current value of the last offset is equal to the value of the first fingerprint array at position k; if the fingerprint value at the current value of the last offset is greater than the value of the first fingerprint array at position k, then incrementing k and setting the value of the first offset array at index k to the value of the current last offset, setting the value of the first flag array at index k to true, and setting the value of the first hash array at index k to the current value of the last offset; if the value of the second fingerprint array at index l is no larger than the fingerprint value at the current value of the last offset, then setting the value of the second flag array at index l to false and decrementing the offset to the last position of the current interval.
15. The method of claim 14, further comprising updating the value of the first flag array at index k to false if it is already false or when there exists an index j between 0 and l, inclusive, where the value of the second offset array at index j plus the value of h is at least as big as the value of the first offset array at index k, and the value of the second fingerprint array at index j is at least the value of the first fingerprint array at index k.
16. The method of claim 15, further comprising setting the value of the second offset array at index l to a cut-point if the value of the second flag array at position l is true.
17. The method of claim 16, further comprising exchanging the reference to the first and second offset, fingerprint arrays, and flag arrays before the next interval is processed.
18. The method of claim 10, further comprising: allocating a flag array of length equal to the horizon and initializing the flag array to Boolean false; allocating a fingerprint array of length equal to the horizon and initializing the fingerprint array to zero; allocating an offset array of length equal to the horizon and initializing the offset array to zero; initializing a min index to zero; initializing a max index to zero; and initializing a current offset into the object to zero.
19-24. (canceled)
25. A computer-readable medium having computer executable instructions for partitioning an object into chunks, comprising:
calculating fingerprint values at each position within the object;
evaluating an offset associated with each possible cut-point location;
evaluating the fingerprint values located within a horizon around each position within the object;
identifying a cut-point location in response to the evaluated fingerprint values; and
partitioning the object into chunks based on the identified cut-point locations.
26. The computer-readable medium of claim 25, wherein calculating the fingerprint values at each position within the object further comprises applying a fingerprint function to object data contained within a small window around each position.
27-48. (canceled)
The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.
1. A method of printing a desired pattern on a substrate, comprising:
discharging a continuous stream of liquid ink drops from a nozzle along the nozzle axis towards the substrate;
and selectively charging said liquid ink drops with multi-level charges for selectively deflecting them different amounts with respect to the nozzle axis to thereby direct some of the liquid ink drops to different locations on the substrate for printing said desired pattern thereon, while other liquid ink drops not to be printed are intercepted by a gutter before reaching the substrate;
the stream of liquid ink drops discharged from the nozzle being illuminated with stroboscopic light at the frequency of the drop formation;
the illuminated stream of liquid ink drops being optically sensed on the fly for determining the ink velocity of the stream of drops.
2. The method according to claim 1, wherein the illuminated stream of drops is sensed by a camera having an imaging lens.
3. The method according to claim 2, wherein errors in the ink velocity are determined by comparing the optically-sensed stream of drops with a reference and are compensated for by modifying the level of the charges applied to the drops.
4. The method according to claim 1, wherein said stream of liquid ink drops imaged and sensed is a stream of uncharged liquid ink drops.
5. The method according to claim 1, wherein a plurality of said continuous streams of drops are discharged from a plurality of nozzles arranged in at least one row, and wherein said drops of each of said streams are selectively charged by input data according to the pattern desired to be printed; the liquid ink drops of each of said streams being sensed by at least two optical sensor devices having sensor axes at a predetermined angle to each other; said optical sensor devices producing outputs which are processed, together with said predetermined angle, to compute deviations of the respective streams of ink drops from the respective nozzles (a) in the direction parallel to said row of nozzles (X-axis offset), and (b) in the direction perpendicular to said row of nozzles (Y-axis offset).
6. The method according to claim 5, wherein each of said optical sensor devices includes a camera having an imaging lens.
7. The method according to claim 5, wherein said computed X-axis offset for a particular nozzle is corrected by adjusting the charging voltages for the respective nozzle.
8. The method according to claim 5, wherein said computed Y-axis offset for a particular nozzle is corrected by adjusting the timing of said input data to the respective nozzle.
9. A method of printing a desired pattern on a substrate, comprising:
discharging a continuous stream of liquid ink drops from a nozzle along the nozzle axis towards the substrate;
and selectively charging said liquid ink drops with multi-level charges for selectively deflecting them different amounts with respect to the nozzle axis to thereby direct some of the liquid ink drops to different locations on the substrate for printing said desired pattern thereon, while other liquid ink drops not to be printed are intercepted by a gutter before reaching the substrate;
wherein the stream of ink drops produced from the nozzle is divided into two streams by charging pulses of two charging levels and of appropriate phases; and wherein the two streams of ink drops are optically sensed by an imaging system for determining, and for correcting; velocity errors, andor charge phasing errors between the respective charging pulses and the physical drop formation timing in the stream exiting from the nozzle.
10. The method according to claim 9, wherein the charge phasing errors are detected and are corrected by correcting the time delay between the respective charging pulse and the physical drop separation in the stream exiting from the nozzle.
11. The method according to claim 9, wherein velocity errors are detected and are corrected by modifying the level of the charge applied to the ink drops.
12. The method according to claim 9, wherein said two streams of ink drops are optically sensed on the fly by illuminating them with stroboscopic light at the frequency of the drop formation.
13. A method of printing a desired pattern on a substrate, comprising:
forming a continuous stream of liquid ink drops by an acoustical excitation device in a nozzle;
discharging the stream of drops from nozzle along the nozzle axis towards the substrate;
and selectively charging said liquid ink drops with multi-level charges for selectively deflecting them different amounts with respect to the nozzle axis to thereby direct some of the liquid ink drops to different locations on the substrate for printing said desired pattern thereon, while other liquid ink drops not to be printed are intercepted by a gutter before reaching the substrate;
wherein the forming of the liquid ink drops is monitored on the fly by illuminating the stream of drops with stroboscopic light at the frequency of the drop formation, and drop break-off is controlled by controlling said acoustical excitation device to avoid satellite formations.
14. A method of printing a desired pattern on a substrate, comprising:
discharging a plurality of continuous streams of liquid ink drops from a plurality of nozzles having nozzle axes arranged in at least one row;
selectively charging said liquid ink drops by input data, according to the pattern desired to be printed, with multi-level charges for selectively deflecting said liquid ink drops given amounts with respect to their respective nozzle axes to thereby direct some of the liquid ink drops to different locations on the substrate for printing said desired pattern thereon, while other liquid ink drops not to be printed are intercepted by a gutter before reaching the substrate;
utilizing at least two sensor devices for sensing the liquid ink drops of each of said streams, said sensor devices having sensor axes at a predetermined angle to each other;
and processing outputs of said sensor devices, including said predetermined angle of their sensor axes, to compute deviations of the respective stream of ink drops from the respective nozzle axis (a) in the direction parallel to said row of nozzles (X-axis offset), and (b) in the direction perpendicular to said row of nozzles (Y-axis offset).
15. The method according to claim 14, wherein said sensor devices are optical sensors, and said streams of ink drops are illuminated with stroboscopic light at the same frequency as the drop formation.
16. The method according to claim 15, wherein each of said optical sensors includes a camera having an imaging lens.
17. The method according to claim 14, wherein said computed X-axis offset for a particular nozzle is corrected by adjusting the charging voltages for the respective nozzle.
18. The method according to claim 14, wherein said computed Y-axis offset for a particular nozzle is corrected by adjusting the timing of said input data to the respective nozzle.
19. Printing apparatus for printing a desired pattern on a substrate, comprising:
a plurality of nozzles for forming and discharging continuous streams of liquid ink drops along the respective nozzle axis towards the substrate, said nozzles being arranged in at least one row;
charging plates for each nozzle for selectively charging the liquid ink drops of the respective nozzle with input data according to the pattern desired to be printed;
deflecting plates for each nozzle for selectively deflecting the liquid ink drops different amounts with respect to the respective nozzle axis for printing on a substrate the desired pattern;
a gutter for intercepting, before reaching the substrate, the liquid ink drops not to be printed;
at least two sensor devices for sensing the liquid ink drops in each of said continuous streams, said sensor devices having sensor axes at a predetermined angle to each other; and
a control system for controlling said charging plates and said deflecting plates, said control system processing outputs from said sensor devices, computing deviations of the respective stream of ink drops from the respective nozzle axis (a) in the direction parallel to said row of nozzles (X-axis offset), and (b) in the direction perpendicular to said row of nozzles (Y-axis offset); and correcting the pattern printed by the respective nozzle in accordance with the computed deviations.
20. The apparatus according to claim 19, wherein said sensor devices are optical sensors, and said streams of ink drops are illuminated with stroboscopic light at the same frequency as the drop formation.
21. The printing apparatus according to claim 20, wherein each of said optical sensors includes a camera having an imaging lens.
22. The printing apparatus according to claim 19, wherein said controller corrects said X-axis offset for a particular nozzle by adjusting the charging voltages applied to the respective nozzle.
23. The apparatus according to claim 19, wherein said controller corrects said Y-axis offset by adjusting the timing of said input data to the respective nozzle.