WEB REGISTRATION CONTROL SYSTEM

Abstract: A system for maintaining registry between a plurality of printing units (102-105), cooperating with a moving web (110), the system being of the type wherein the printing units (102-105) include means, (116, 117, 118, 119) for placing respective registration marks (202, 203, 204, 205, 206) on the web (110), the relative positions of the marks (202, 203, 204, 205, 206) being indicative of registry between the printing units (102-105), and further including means (126) responsive to control signals applied thereto for adjusting the registry of the printing units (102-105), and means for generating control signals to the registry adjusting means (126) in accordance with the relative positions of the registration marks (202, 203, 204, 205, 206). Registration marks (202, 203, 204, 205, 206) include a portion having symmetrical sides diagonal to the direction of the web motion.

Description: TECHNICAL FIELD The present invention relates to control systems for adjusting the color-to-color registration of multicolor web-fed printing press systems. BACKGROUND OF THE INVENTION In multicolor web-fed printing press systems, a web of material (e.g. paper) is sequentially driven through a series of print cylinders, each using ink of a different color, which cooperate to imprint a multicolor image on the web. To provide an accurate and clear multicolor image, the rotational and lateral position of each print cylinder must be precisely aligned, i.e., proper registration of the respective colors must be maintained. Historically, the registration of the various print cylinders in multicolor systems was maintained manually. A pressman would examine signatures (printed images) at the output of the press, and manually enter estimated lateral and rotational offset values into an electromechanical register control system to effect necessary corrections. Retention of color registration in such systems would require the constant attention of the pressman, since registration is often lost due to a number of uncontrollable variables in the web material and press hardware. Automatic registration control systems for multicolor web-fed printing press systems are, in general, known. An example of a closed-loop register control system is the commercially available Quad/Tech RGSIII register control system, a product of the assignee of the present invention. The RGSIII system utilizes a single photosensor cooperating with register marks printed on the web by the individual cylinders, to provide position feedback information indicative of the registration of the respective print cylinders relative to a designated reference print cylinder. More particularly, each print cylinder produces a specific register mark forming part of a register pattern. The photosensor provides a feedback signal indicative of the register pattern, which is analyzed to determine the lateral and rotational registration of the respective print cylinders vis-a-vis the reference cylinder. Registration error signals are produced for the respective print cylinders and are employed to effect position correction. Each register mark in the RGSIII system comprises two triangular sections disposed, if properly aligned, to produce two voltage pulses of equal time duration. The photosensor is positioned to focus at the center of the register pattern. As paper motion takes the pattern past the scanner, a series of voltage pulses are produced. To track any lateral movement of the web, the duration of the respective pulses generated by the marks is monitored; if the focal point of the scanner is not centered, the two pulses produced by the respective triangular sections of the mark will not be of equal duration. When such a condition is sensed, the system generates control signals to reposition the printing cylinder to center the pattern. If the printing cylinder associated with a mark is rotationally out of registration, the register mark produced will not be properly aligned in the register pattern and the two voltage pulses produced by the register mark will be advanced or delayed relative to the pulses produced by the register marks associated with the other cylinders. Deviations from predetermined values of the position of the center points of the register marks relative to a pattern reference point are detected and control signals generated accordingly. Previous automatic registration control systems, which utilize only a single photosensor scanner, scan a single straight line as the paper travels under the focal point of the sensor. This requires the register marks to be sufficiently wide to be sensed by the scanner in worst-register situations, often at least .512 cm (0.2 inch) total on width. Moreover, web "weave" (spurious lateral movement of the web) tends to require that a still wider registration mark be employed. This is disadvantageous; it is desirable that the registration mark be as small and unobtrusive as possible. The RGS II register control system is described in detail in European Patent EP-A 0 123 305. German Patent DE 2051 065 also describes an automated registration control system. The system includes registration marks of many different shapes including chevrons, triangles, and oblique diamonds. The system scans in a direction parallel to web movement. Further, for two-dimensional positioning, two path scanners are needed. Another German Patent 2643 481, discloses an automated control system with right angle triangles for registration marks. Prior art registration control systems using a single triangle registration mark are additionally disadvantageous in that variations in the density of the inks can often be erroneously perceived by such systems as registration errors. U.S. Patent No. 3,439,176, also describes an automated control system. This document describes an array of photodiodes positioned transverse to the direction of the web motion for sensing a clear space on the web. This system senses a rectangular mark with sides parallel and perpendicular to the direction of web motion and, thus, does not provide two-dimensional position sensing. SUMMARY OF THE INVENTION The present invention provides a closed-loop register control system employing an optical line scanner which cooperates with paper movement to provide, in effect, a two-dimensional raster scan of a predetermined portion of the web on which registration marks are imprinted by the respective print cylinders. Register marks anywhere within the scan can be viewed. Accordingly, smaller, less obtrusive registration marks can be employed than has historically been the case. In accordance with another aspect of the present invention, diamond-shaped registration marks are utilized in cooperation with the optical line scanner to provide effective operation at high press speed and eliminate errors due to colorimetry changes. BRIEF DESCRIPTION OF THE DRAWING A preferred exemplary embodiment of the present invention will hereinafter be described in conjunction with the appended drawing where like numerals denote like elements and: Figure 1 is a functional block diagram of printing system in accordance with the present invention; Figure 1A is a schematic representation of the contents of random access memory 152 of Figure 1; Figure 2 is an illustration of a preferred registration mark and nominal scan lines; Figure 2A illustrates light-to-dark transitions during the scan of a registration mark; Figures 3, 3A and 3B comprise a schematic block diagram of a preferred scanner unit 122 of Figure 1; Figure 4 is a schematic block diagram of a preferred DMA controller 138 of Figure 1; Figure 5 is a general flow chart of the processing mode operation of the system of Figure 1; Figure 6 is a flow chart of conversion of transition data to center/size data; Figure 6A is a schematic representation of transition data in RAM 142; Figure 6B is a schematic representation of the center/size data in RAM 142; Figure 7 is a flow chart of the generation of the MILTBL in RAM 152; Figure 7A is a schematic representation of the contents of MILTBL 158; Figure 7B illustrates the contents of tips table 164 in RAM 152; Figures 8, 8A, 8B, 8C, 8D and 8E comprise a flow chart of the find/verify diamond shape and size step; Figure 9 is a flow chart of the determine coordinates of diamond center step; Figure 10 is a flow chart of the normalize coordinates step; Figure 11 is a flow chart of the determine second reference step (Step 519); Figure 12 is a flow chart of the process for web weave/web stretch compensation; Figure 12A illustrates the effects of web weave/web stretch on the reference marks; and Figure 13 is a flow chart of the process for correlating observed positions with expected values. In Figures 5-13, a shorthand convention has been adopted whereby: the symbol "[ ]" means "the contents of", e.g., "[x]" means the contents of register x; the name of a memory device or table followed by a parenthetical suffix, e.g., RAM 142(p1), refers to the particular location of the RAM designated by the address contained in the parentheses, e.g., P1; and the symbol "→" means "loaded into." For example, [RAM142(P2)]→ RAM152(P1) means "the contents of the location in RAM 142 designated by the contents of pointer P2 is loaded into the location in RAM 152 designated by the contents of pointer P1." DETAILED DESCRIPTION OF A PREFERRED EXEMPLARY EMBODIMENT Referring now to Figure 1, a web-fed printing system 100 employing the registration control system of the present invention is preferably comprised of serially-disposed conventional printing units 102-105 operating upon a driven web 110. In a web offset printing press, each of printing units 102-105 advantageously includes an upper blanket cylinder 116, an upper plate cylinder 117, a lower blanket cylinder 118 and a lower plate cylinder 119. Web 110, typically paper, is fed from a reel stand (not shown) through the successive printing units 102-105 and thereafter through a dryer unit 112 and chill unit 114. Web 110 is then suitably guided through coating equipment (not shown) and folding equipment (not shown) which folds and separates the web into individual signatures. Printing units 102-105 cooperate to imprint multicolor images on the upper and lower surfaces of web 110. Each printing unit 102-105 prints in an associated color of ink; typically the first sequential print unit 102 suitably prints the color black, and the subsequent print units 103-105 print other colors such as cyan, magenta, and yellow. Each of the lateral and rotational positions of upper and lower plate cylinders 117, 119 is separately controlled by electric motors (not shown) to precisely register the respective images generated by the individual printing units. A registration control system in accordance with the present invention comprises a processor 120, cooperating with optical line scanning units 122 and 122A, a conventional shaft encoder 124 and a suitable motor controller 126. As will hereinafter be explained, the registration control system in accordance with the present invention provides appropriate signals to the electric motors to precisely control lateral and rotational position of the plate cylinders. Each of printing units 102-105 imprints at least one registration mark of a predetermined size and shape on a predetermined portion of web 110, typically along its edge. Referring briefly to Figure 2, when in proper registry the marks from the individual print units 102-105 will be in predetermined relative disposition on web 110, suitably spaced at regular predetermined intervals, e.g. (d x1 ) along a straight line in the direction of web movement (indicated by arrow 200). Preferrably, at least one of the plate cylinders on each side of web 110 imprints a plurality of register marks at predetermined relative dispositions on the web. For example, plate cylinder 117 of first printing unit 102 desirably prints two black marks 202, 203 on the upper surface of web 110. Adopting a normalized nominal reference coordinate system with a Y axis parallel to the direction of web movement (200) and an X axis parallel to the scan lines, with an origin at the center of mark 202, the centers of marks 202 and 203 are disposed in spaced relationship in a straight line along the Y axis at coordinate (0,0) and (0,d x4 ), respectively. Marks 202 and 203 are suitably the first and last marks in a sequence of marks; plate cylinders 117 of printing units 103-105 print marks 204, 205 and 206 in their associated colors at predetermined regular intervals in the intervening space between black marks 202, 203 (d x4 ). Marks 204-206 are each disposed with centers at coordinates (0,d x1 ), (0,d x2 ) and (0,d x3 ), respectively. Deviation of marks 204-206 from such relative dispositions with mark 202 is indicative of a registration error; deviation from a zero X value is indicative of lateral misregistration, and deviation from the expected Y value is indicative of rotational misregistration. However, since both marks 202 and 203 are from the same cylinder, deviation of mark 203 from the expected disposition (0, d x4 ) is indicative of web skew or stretch rather than registration error. Compensation for web skew and stretch will be explained hereinbelow. Referring to Figures 1 and 2, the portions of the upper and lower surface of web 110 in which registration marks are printed are illuminated by a high-intensity lamp (not shown) such as a Tungsten-halogen bulb. Line scanner units 122 and 122A are focused on the illuminated portion of the web. Line scanner units 122 and 122A generate a sequence of 6 bit digital signals indicative of the brightness level of successive pixels (samples) comprising a line scan; the scanner units suitably provide data from a strip of web 110 on the order of one half inch in width, centered on the expected centerline of the registration marks. The line scan is schematically illustrated by line 210 in Figure 2. As web 110 moves past the scanners, the successive line scans provide the equivalent of a two dimensional raster scan of the associated areas of web 110. Referring to Figure 3, scanner units 122, 122A, preferably comprise a Fairchild CCD153 charge-coupled line image scanner 300, cooperating with suitable transfer pulse synchronization logic 308, conventional CCD driver circuitry 310, conventional buffer circuitry 312, a video analog-to-digital converter 320 and a frequency doubler 322. More specifically, a start scan signal, and a 10 MHz clock signal from a DMA controller 138 are applied to transfer pulse synchronization logic 308 (preferably through standard RS-422 datalinks, not shown). Transfer pulse synchronization circuit 308 provides appropriate timing signals to CCD driver 310 and to buffer 312 to synchronize the scanning operation of line scanner 300 and data sampling by buffer 312. Suitable pulse synchronization logic 308 is shown in Figure 3A. A representative CCD driver 310, line scanner 300 and buffer circuit 312 are shown in Figure 3B. ADC 320 is clocked by the 20 MHz signal from frequency doubler 322, and provides 6 bit digital signals indicative of the brightness level of each pixel. The 6 bit digital pixel brightness signals are communicated, preferably by a standard RS-422 communications link (not shown), to processor 120. Referring briefly to Figure 3A, the 10 MHz signal is supplied to a delay line comprising tandem two-input Exclusive OR (ExOR) gates 323 and 324. The output of ExOR gate 323 is applied to one input terminal of ExOR gate 324. Both the second inputs of ExOR gates 323 and 324 are tied high. ExOR gates 323 and 324 establish the desired delay and the appropriately delayed 10 MHz signal is provided at output terminal 308A. The START SCAN signal is applied to the clock input of a JK flip-flop 326. The J input of flip-flop 326 is tied high and the K input is tied to ground. The Q output of flip-flop 326 is applied to the J input of a JK flip-flop 328; the clock input of flip-flop 328 receives a 20 MHz clock signal; and the K and clear inputs of flip-flop 328 are tied high. The Q/(i.e., Q bar) output is utilized as terminal 308B and is tied back to the clear input of flip-flop 326. Flip-flops 326 and 328 ensure that the rising edge of the START SCAN signal received by scanners 122, 122A is coincident with the middle of a high state of the 10 MHz clock signal, irrespective of timing/phase inaccuracies interjected by transmission from processor 120. ExOR gates 323 and 324 compensate the 10 MHz signal for propagation delays of flip-flops 326 and 328. This provides the timing required by the CCD. Referring now to Figure 3B, the 10 MHz clock signal at terminal 308A and the START SCAN signal at terminal 308B are applied to a conventional CCD driver such as a Fairchild 9645 CCD driver for conversion to 12 volt signal levels suitable for driving line scanner 300. Video scanner 300 generates respective even and odd video signals and these are applied to a suitable mixer 330, the output signal of which is buffered and level shifted for application to the analog-to-digital converter 320. Analog-to-digital converter 320 is preferably a TRW TDC 1046 analog-to-digital converter with a 20 MHz clock, fed by line scanner 300 which provides a full 512 pixel image every 26 microseconds. More specifically, line scanner 300 effects line scans of 540 pixels in length. However, various of the pixels are dedicated to compensation reference values not employed in the present invention. Only 512 of the 540 pixels provide intelligible data; the first 18 pixels and last 10 pixels of the line scan do not generate valid data in the context of the present system. In accordance with one aspect of the present invention, the registration marks are symmetical in shape and preferably in the shape of a right angle diamond (i.e. a square rotated by 45 degrees). Symmetrically shaped register marks facilitate accurate determination of the center points of the mark. The resolution of line scanner units 122, 122A in the Y direction is limited to the height of the scan line, typically on the order of 0.0254 cm (0.01 inch), which is less than the desired accuracy of the system. The resolution of the scanner in the X direction is the pixel width, e.g. 0.00254 cm (0.001 inch). Accordingly, the mark shape should be chosen so that any relevant edge is of a known geometry, disposed to be perceived in successive scans so that Y position can be extrapolated. For example, the length of a straight line in the X direction from a point on the edge of a right angle diamond to the Y center line is equal to the distance from the intersection of the line and Y center to the nearest Y tip of the diamond. Consequently, the coordinates of the Y tips of a right angle diamond (and thus the Y coordinate of center of the diamond) can be calculated from successive observations of the side edges (light-to-dark or dark-to-light transitions in a scan) between corresponding edge transitions in successive scans indicating the diamond tip. The X coordinate of the center is readily calculated as the midpoint between the light-to-dark and dark-to-light transitions in a scan (suitably averaged over the course of a plurality of scans). Use of a symmetrical mark also tends to make the system less susceptible to error due to colorimetry changes. For example, when the center of a diamond-shaped mark is determined from the center of the scan (X value) and center point of the diamond tips (Y value), variations due to colorimetry changes tend to cancel out. If the mark fades, the entire mark is perceived as shrinking. However, the respective sides and tips would move toward the centerpoint by equal amounts, so that the position of the perceived centerpoint would remain unchanged. Referring again to Figure 1, processor 120 selectively collects and processes the pixel data from scanners 122, 122A and generates control signals for application to a suitable motor controller 126, which, in turn, effects control of the motors associated with printing units 102-105. Processor 120 preferably comprises a conventional multiplexer 130 such as a 74A5857 hex 2-to-1 multiplexer, a conventional comparator 132 such as a 74A5885 8 bit comparator, a suitable dark level reference generator 134; respective conventional 8 bit counters 136, 140, and 148; a conventional microprocessor 144, such as an Intel iAPX 188 high integration 8 bit microprocessor; a conventional 8 bit by 8K read-only memory (ROM) 150; an 8 bit by 16K RAM 152; a suitable direct memory access (DMA) controller 138; and a 16 bit by 32K dual port random access memory (RAM) 142. DMA controller 138 may comprise a conventional Intel-8237 DMA controller chip, However, a preferred form of DMA controller utilizing a programmable logic chip will be described in conjunction with Figure 4. Dual port RAM 142 suitably comprises two conventional 8 bit RAMs such as Toshiba 2063P RAM chips, buffered and interconnected as known in the art, to provide an effective 16 bit RAM. In practice one or both of counters 136 and 140 may be integral timer/ counters of CPU 144. Dark level generator 134 provides a dark level reference signal indicative of ambient light level, applied to comparator 132 for use in characterizing a particular pixel as light or dark. If it is desirable to provide the same constant reference voltage for all pixels of the scan, dark level generator 134 may comprise a potentiometer and analog-to-digital converter or a conventional voltage divider network to establish a digital constant for application to comparator 132. If it is desired to provide separate dark level reference for the individual pixels or groups of pixels of the scan corresponding to variations in ambient light at the location of the particular pixels, dark level generator 134 desirably comprises a RAM having a location corresponding to each pixel, or in which the dark level reference for the particular pixel would be stored, for example, at start up of the system by CPU 144. The contents of the dark level reference RAM corresponding to the pixel being operated upon would be applied to comparator 132 by addressing the reference RAM with the same counter 422 (see Figure 4) used to address RAM 142. Processor 120 alternately operates in a data collection (acquisition) mode and a data processing mode. DMA controller 138, in cooperation with counters 136 and 140, and comparator 132, generates a data word for brightness transition data in a printing unit cycle and selectively enters such data into dual port RAM 142. In the data processing mode, CPU 144 accesses the data in RAM 142, determines the centers of the observed marks, and generates registration correction signals accordingly. In the data acquisition mode, the digital data from scanner units 122, 122A, are applied to the respective sets of input ports of multiplexer (MUX) 130. The pixel brightness data from scanner unit 122 or scanner 122A is thus selectively processed, chosen in accordance with control signals from CPU 144. The pixel brightness data from the selected line scanner unit is compared to a dark level reference value corresponding to the pixel to determine whether the pixel is "black" (dark) or "white" (light). In this context, "black" signifies a pixel or element having lower reflectance than the unprinted web, which is adopted as the background region for establishing the "white" level. This "black" is utilized to describe, for example, any of the printed colors since they will be processed as black or dark pixels. The output of multiplexer 130 is applied to one input port of a comparator 132 (only 6 bits of comparator 132 is used) for comparison against digital signals indicative of a nominal darkness level reference provided by dark level reference generator 134. Comparator 132 compares the digital brightness level of each pixel with the corresponding reference dark level from generator 134, and creates a light/dark signal (L/D) wherein one and zero values indicate light and dark pixels, respectively. Counters 136 and 140 provide synchronization between processor 120, scanners 122, 122A and print units 102-105; counter 136 provides indicia of the particular pixel in a line scan being processed and counter 140 provides indicia of the operational cycle of printer units 102-105. Counter 136 (enabled by a signal from DMA controller 138 signifying of the start of valid data) maintains a count characteristic of the "pixel number" (i.e. the relative position of the pixel in the line scan) of the particular line scan pixel being processed. The terminal count (EOS), i.e., carry bit, of counter 136 is representative of the completion of a scan. The pixel count from counter 136 is applied to DMA controller 138 together with the light/dark signal from comparator 132 corresponding to that pixel. Counter 140 cooperates with shaft encoder 124 to provide indicia of the end of each revolution (operational cycle) of the printing cylinders of printing units 102-105. Shaft encoder 124 is mechanically coupled to one of the plate cylinders of printing units 102-105, and generates a predetermined number of counts (suitably 32) for each revolution of the print unit cylinders. Counter 140, responsive to the encoder output signal, generates a carry bit (EORev signal) upon the completion of the rotational cycle. The end of revolution (EORev) signal is applied to DMA controller 138 and to CPU 144 as an interrupt signal. Counter 148 maintains a count of the number of scans made in a given printing cycle. Specifically, counter 148 is initially set to 0 by the end of revolution signal (EORev) from counter 140. Thereafter, counter 148 is incremented once per scan by the carry bit signal from counter 136. As will hereinafter be explained, the scans-per-revolution count is utilized to determine the Y extent of each scan. At the end of a printing cylinder revolution, the end of revolution (EORev) signal from counter 140 is applied as an interrupt to CPU 144. Assuming that unprocessed data is not already resident in RAM 142 (as reflected in a status flag in RAM 152), the positive-going transition in the end of revolution signal (EORev) causes CPU 144 to generate a control signal (AEN) to DMA controller 138 enabling the data collection process. Data entries corresponding to each light-to-dark and dark-to-light transition in the brightness level of respective successive line scans, together with indicia of the end of each line scan and indicia of the end of the print unit operational cycle, are then made by DMA controller 138 into successive locations of dual port RAM 142. DMA controller 138 detects transitions from light-to-dark and dark-to-light between successive pixels of a line scan and, for each such transition (and for each end of scan), enters a 16 bit data word into dual port RAM 142, including indicia of the pixel number at which the transition occurs, whether the transition is from light-to-dark or dark-to-light, and whether the entry corresponds to an end of scan or end of revolution. At the end of the printing unit cycle, RAM 142 will contain, for successive scans, sequential words corresponding to each brightness transition in each line scan, delimited by an end-of-scan marker word. The words associated with successive line scans are stored sequentially in RAM 142 until the end of revolution is sensed. The format of the respective data entries in RAM 142 is illustrated in Figure 6A (in which data entries are depicted in decimal form for ease of illustration). More specifically, with reference to Figures 1 and 4, the preferred embodiment of DMA controller 138 comprises a suitable clock generator 402; conventional 8 bit programmable counter/dividers 406, 407, 408 and 412, suitably portions of 8254 programmable counter/divider chips; a conventional programmable logic chip 410, such as a Signetics 82S153A programmable logic chip; a latch 412; respective flip-flops 414, 416 and 418; a conventional multiplexer 420, such as a 74F157 quad 2 to 1 multiplexer; and an 8 bit counter 422. Clock generator 402 provides both 10 MHz and 20 MHz signals. The 10 MHz signal is derived from the 20 MHz clock signal through a 74F74 flip-flop in a divide-by-two mode. The 10 MHz clock is applied through a conventional switch-selectable delay line 404 to scanner units 122, 122A (typically through an RS422 datalink, not shown). Delay line 404 is utilized to compensate for delays inherent in transmissions between the remote scanner unit and processor 120. Counters 406, 407, and 408, driven by the 10 MHz clock, are utilized to generate respective timing control signals: SCNSTR, SCNRUN and SCNRES. The SCNSTR signal from counter 406 indicates the beginning of a scan cycle; one pulse is generated at the beginning of each predetermined scan cycle period, suitably 26 microseconds. The SCNRES signal is high during the period in which intelligible data is generated by scanner unit 122, and the SCNRUN signal goes high at the end of the period during which the scanner 122 generates intelligible data. More specifically, scanner 122 effects line scans of 540 pixels in length. However, only 512 of such pixels provide intelligible data; the first 18 pixels and last 10 pixels of the line scan do not generate valid data. Accordingly, control signals SCNSTR, SCNRES and SCNRUN are generated to initiate the scan, and provide indicia of the beginning and end of useful data generation. Counter/divider 412 is utilized to provide a signal indicative of line scans of interest. In low press speed applications, it is not necessary to analyze the data from each successive scan taken by scanner unit 122; rather, only scans at predetermined intervals, e.g., every other scan or every fourth scan, are of interest. Accordingly, divider 412, appropriately preset by CPU 144, generates an output signal (l/SCAN) which assumes a low value only at predetermined intervals, corresponding to a predetermined number of clock pulses. Where all scans are of interest, divider 412 is preset with the value one. The timing control signals SCNSTR, SCNRES and SCNRUN, and l/SCAN control signal are applied to programmable logic chip 410, together with the light/dark signal (L/D) from comparator 132, the 20 MHz clock, the control signal (AEN) from CPU 144, and respective signals generated by latch 412 and counters 414 and 418, CCDCHG, DMAACK, and EREQ. Programmable logic 410 generates respective output signals in accordance with preprogrammed boolean alegbra functions of the input signals: As previously noted, DMA controller 138 detects brightness transitions in the pixel data. In this regard, programmable logic 410 cooperates with a latch 412 and flip-flops 414, 416, and 418 to generate a stable signal (LCCD DATA) indicative of light-to-dark and dark-to-light transitions in the brightness level of the pixel data. The light/ dark signal from comparator 132 is applied to the D input of latch 412. Programmable logic 410 generates the scan enable (SCEN) signal to continually clock latch 412 during the valid part of the scan so long as no DMA request (DMARQ) is pending, but ceases to clock when a DMA request is asserted, causing latch 412 to capture the instantaneous value of the light/dark signal from comparator 132 and stable input to RAM 142. DMA request is asserted whenever there is a transition from light-to-dark or dark-to-light in the light/dark (L/D) signal. In essence, the contents of latch 412 reflects the instantaneous value of the light/dark signal from comparator 132. The contents of flip-flop 414 reflects the value (light or dark) of the pixel just previously written into memory. When the respective contents of latch 412 and flip-flop 414 differ, as reflected in the polarities of signals CCDCHG and DMAACK generated by latch 412 and flip-flop 414, respectively, a light-to-dark or dark-to-light transition has occurred. When divergent states in the CCD change and DMA acknowledge (DMAACK) signals are sensed in programmable logic 410, (during the valid portion of the scan) a DMA request (DMARQ) signal is generated. Upon generation of the DMARQ signal, programmable logic 410 ceases to apply clock signals (SCEN) to latch 412, causing latch 412 to retain the value of the light/dark signal at the point of transition. The DMARQ signal is also applied to flip-flop 416. Upon application of the DMARQ signal to flip-flop 416, a negative-going 5 MHz (10 MHz divided by 2) square wave signal is generated as DMA write (DMAWR/) at the Q/ of flip-flop output of 416. The DMAWR/ signal is applied to the clock input of flip-flop 414. Flip-flop 414 is connected in a toggle mode, and when clocked by the positive-going edge of the first cycle of DMAWR/ causes DMAACK signal to change state, i.e., assume the same state as the present content of latch 412. When the DMAACK signal assumes the same state as the CCDCHG signal from latch 412, programmable logic 410 causes the DMARQ signal to go inactive. As previously noted, data entries to RAM 142 are made in connection with each transition in the brightness level of the line scan pixel data. In this regard, the DMAWR/ signal generated by flip-flop 416, when enabled by the DMARQ signal, is applied to the clock input of flip-flop 414, the clear input of flip-flop 418, and two input ports of multiplexer 420. Multiplexer 420 is utilized to facilitate switching between the DMA data collection mode operation, and the data processing mode in which CPU 144 accesses the contents of dual port RAM 142. During the DMA data collection mode operation, the DMAWR/ signal is applied to RAM 142 as a write enable signal, and to address counter 422 as a clock signal. Specifically, the leading edge of the DMAWR/ pulse effects a write operation into RAM 142 at the location indicated by the content of address counter 422. The trailing edge of the DMA write pulse then increments counter 422 to facilitate the next data entry. A data entry to RAM 142 is also made in connection with the end of each scan as noted above. Flip-flop 418, in cooperation with programmable logic 410 forces the generation of a DMARQ at the end of each scan, causing entry of a data word. Specifically, flip-flop 418 is connected in a one-shot configuration, and is clocked by the negative-going edge of the SCNRES signal from counter 408 (the SCNRES signal goes low upon the initiation of the scan, and goes high at a point corresponding to the first pixel of intelligent data). Upon application of SCNRES, the Q/ output (EREQ) of flip-flop 418, applied to programmable logic 410, goes low, causing programmable logic 410 to generate a DMA request (DMARQ). The DMARQ signal causes the DMA write (DMAWR/) signal to be generated, causing (during the data collection mode) entry of a data word into RAM 142 and the incrementing of address counter 422. The DMA write signal (DMAWR/) also clears flipflop 418, causing the EREQ/ signal to go high, whereupon programmable logic 410 renders the DMA request (DMARQ) signal inactive. Referring now to Figures 1, 1A and 5, the data processing mode operation of processor 120 will be described. During the data processing mode, CPU 144 effects sequential operations in accordance with a program prestored in ROM 150. In connection with data processing, CPU 144 directly accesses and operates upon the transition data in dual port RAM 142, and the scans-per-revolution count in counter 148, as well as prestored parameter values in ROM 150 and RAM 152. In addition to a plurality of internal registers (ACC1, ACC2, ... P1, P2, ...), CPU 144 defines a plurality of effective registers, and fixed length arrays (tables) in RAM 152 as detailed in Figure 1A: STATUS 154 -register containing respective status flags including the mode flag; NUMDIA 156 - the number of diamonds employed in the register mark, keyed in by the operator through panel 146; MILTBL 158 - a fixed-size array of 1200 16 bit words (locations) utilized to store 3-word entries (i.e., three locations per entry, comprising a Y coordinate, an X centre coordinate and a size value) for each data transition pair within predetermined size limits; ENDMLM 160 - the address of the last entry in the mil table; SCNCOUNT 162 - the number of scans processed; TIPSTBL 164 - a fixed size array of 200 16 bit words (locations) used to store 4-word entries (i.e., four locations per entry, comprising an X center, a low Y tip, a high Y tip, and a pointer to corresponding data in MILTBL), for each transition pair relating to an individual mark; DIACOUNT 166 - an ongoing count of diamonds located during the data processing; DIAPLC 168 - number of diamond placed, i.e., correlated (matched) with a particular set of expected coordinates; AVGLOT 170 - average low tip value of diamond being processed; AVGHIT 172 - average high tip of diamond being processed; SCNUM 174 - count of scans used; DIAXYS 178 - a fixed-length array of 18 locations for storing 2-word data sets (X coordinate of center, Y coordinate of center) for each diamond located; DIADSP 180 - a fixed-length array, having a particular 2-word sets of locations (X error, Y error) corresponding to each printing unit 102-105; TIPTOP 184 - a pointer to the last entry in TIPSTBL (i.e., tips table) for a given mark; MILSCAN 186 - indicia of the Y extent of a scan, i.e., mils per scan. REFX 188 - a reference value corresponding to the value of the X center of the initial TIPSTBL entry (i.e., TIPSTBL(0)). REFLT 190 - a reference value corresponding to the value of LOTIP calculated for the first entry in TIPSTBL (i.e., TIPSTBL(1)). REFHT 192 - a reference value corresponding to the value of HITIP calculated for the first entry in TIPSTBL (i.e., TIPSTBL(2)). ROM 150 includes indicia of various system parameters register and arrays including: MILCEL - the number of mils per pixel, i.e., the X extent of each pixel, fixed for particular optics of scanner; DIALLM - lower limit of diamond size (92 mils); .LS 1 DIAULM - upper limit of diamond size (156 mils); TPYTOL - the maximum amount of Y deviation for a tip, e.g., 3 mils; TPXTOL - the maximum amount of X deviation for a tip, e.g., 9 mils; RF2XMN - the minimum relative displacement limits for the second reference diamond location in relation to the first reference diamond in the X direction; RF2XMX - the maximum relative displacement limits for the second reference diamond location in relation to the first reference diamond in the X direction; RF2YMN - the minimum relative displacement limits for the second reference diamond location in relation to the first reference diamond in the Y direction; RF2YMX - the maximum relative displacement limits for the second reference diamond location in relation to the first reference diamond in the Y direction; REF2XY - a two-word array containing expected XY coordinate of second reference diamond; CLXMN - an array containing a four-word entry for each diamond expected (Xmin, Xmax, Ymin, Ymax); COLXY - an array containing a two-word entry for each expected diamond (X,Y); TIPNUM - minimum number of correlating tips, e.g., 3. After the data corresponding to a printing unit cycle is collected in dual port RAM 142, the EORev interrupt to CPU 144 causes CPU 144 to effect a data processing mode operation; and the DMA controller 138 is temporarily disabled. Specifically, and with particular reference to Figure 5, upon the EORev interrupt, CPU 144 effects a status check of a mode flag, advantageously disposed in a status register in RAM 152 (Step 502). If the flag is active, indicative of unprocessed data in RAM 142, the data processing mode is started as noted above. If the mode flag is inactive, the data acquisition mode is initiated by generation the AEN signal to DMA controller 138 (Step 504) and the mode flag is set to zero (Step 506). Where a timer integral to CPU 144 is utilized for counter 140, the status bit of such counter can typically be used as the mode flag. Upon entry into the data processing operation, the mode flag is reset to inactive, and respective counts reset to zero (Step 508). The data in RAM 142 (in terms of pixel number and transitions) is then converted into terms of center and size of transition pairs and over-written into the same locations in RAM 142 (Step 510). This conversion process will be more fully described in conjunction with Figure 6. The center/size data in RAM 142, still in terms of pixel numbers, is then converted into terms of inches (mils) and a mil table (MILTBL 158) is developed in RAM 152 (Step 512). The generation of MILTBL 158 in RAM 152 will be more fully described in conjunction with Figure 7. The data is then analyzed to locate the first sequential mark which meets predetermined criteria as to size and shape (Step 514), e.g., those which correlate with criteria for a right angle diamond of predetermined size. Step 514 will hereafter be described in conjunction with Figure 8. Assuming a nominal X, Y coordinate system with the Y axis parallel to the direction of paper movement and the X axis parallel to the scan lines, the X and Y coordinate of the center of the mark is determined (Step 516). Each diamond-shaped mark is located, in sequence, and the center coordinate determined. The process is continued until the expected number of diamonds are located or the mil table (i.e., MILTBL 158) data are exhausted (Step 515). The center coordinates are then normalized by subtracting the center coordinate of a designated reference mark (typically the first occurring mark) from the coordinate of the other marks (Step 518). Step 518 will be described in conjunction with Figure 10. In some instances, the direction of web movement deviates from being perpendicular to the scan line, e.g., due to web weave. Changes in the direction of web movement are erroneously perceived by the scanner as X-registry deviations. Similarily, stretching or shrinking of web 110 causes the scanner to erroneously perceive Y-registry deviations. It is desirable to discriminate against and compensate for X and Y deviations not caused by misregistration. Perceived X and Y deviations not due to misregistry are compensated for using factors determined by analysis of the perceived relative disposition of the two reference diamonds (diamonds 202 and 203 in FIG 2). Since both reference diamonds are printed by the same cylinder, any deviation in the normalized position of the second reference diamond must be due to an instrinsic factor other than registry. The first diamond observed is deemed to be the first reference diamond (e.g., 202). However, the observed diamond corres-ponding to the second reference diamond must be identified (Step 519). A compensation factor is then determined and the normalized X, Y center coordinates varied accordingly (Step 520). Steps 519 and 520 will be more fully described in conjunction with Figures 11 and 12 respectively. The normalized, compensated center coordinates are then compared to predetermined expected values to determine whether the observed marks generally correspond to the marks printed by the individual printing units 102-105, i.e., are within registration tolerance (Step 522). Step 522 will be more fully described in conjunction with Figure 13. The normalized, observed values are then subtracted from the compensated, expected values to determine the raw registration error (Step 524). Indicia of the registration error is then displayed on control panel 146, and registration error signals generated to motor controller 126 (Step 526). Turning to Figure 6A, it should be recalled that RAM 142 contains, in successive locations, 16 bit words corresponding to successive transitions, each word containing the following data: a 9 bit pixel number field (bits 0-8); a field of 4 unused bits (9-12); an end-of-revolution (EOR) flag (bit 13, active indicates the end of revolution); a light/dark indicator (bit 14, 0 indicating a dark-to-light transition, 1 indicating a light-to-dark transition); and an end-of-scan (EOS) flag (bit 15, active indicating the end of a line scan). For example, in the illustration of Figure 6A, location 0 of RAM 142 reflects a light-to-dark transition (bit 14=1) at pixel 50 (the choice of decimal notation used in Figure 6A is for convenience). The contents of RAM 142 location 1 indicates that the next successive brightness transition from dark to light (bit 14=0) occurs at pixel 60. Referring briefly to Figure 2A, such transitions could relate to lightto-dark and dark-to-light transitions sensed during a scan 207 at points 211 and 213 at the edges of a wood chip 209 in web 110. Returning again to Figure 6A, from the contents of locations 2 and 3 of RAM 142, it appears that a further transition from light to dark occurs at pixel 180 followed by a transition from dark to light at pixel 205 (RAM location 3) occurring in the same scan (EOS bit 15=0). Looking back to Figure 2A, the light-to-dark transition at point 208 and dark-to-light transition at point 210, would comprise such a transition pair. Thus, two transition pairs are associated with the scan. Again, with reference to Figure 6A, location 4 of RAM 142 reflects a transition from light to dark (bit 14=1) at pixel 220. However, an end-of-scan delimiter (marker) (EOS bit 15=1) occurs at location 5, prior to any corresponding dark-to-light transition. Such a circumstance can arise from a spurious mark 216 on web 110 (Figure 2A) extending to the edge of the web. A light-to-dark transition is sensed at point 218, but the scan is completed without sensing a corresponding dark-to-light transition. The pixel number and light-to-dark transition fields of the end-of-scan marker such as in location 5 of RAM 142 are not utilized by the system. Even where no transitions are detected in a given scan, an end-of-scan delimiter is included in RAM 142 as reflected in location 6. RAM 142 contains similar data for each light-to-dark and dark-to-light transition sensed, delimited by end-of-scan markers until an end of revolution (reflected by 1 in bit 13) is detected by the system. As previously noted, to facilitate processing, the transition data in RAM 142, originally in terms of pixel numbers, is converted into terms of the center and size of scan lines defined by pairs of sequential transitions (Step 510 of Fig. 5). Referring now to Figure 6, the conversion step will be more fully described. An address pointer P1 in CPU 144 is used to designate the location in RAM 142 to be operated upon. Pointer P1 is initially set to the first location in RAM 142 (e.g., location 0) containing transition data (Step 602). The transition data corresponding to a transition pair (successive transitions in a given line scan) are loaded into accumulator ACC1 and accumulator ACC2 of CPU 144, respectively. More specifically, the contents of the location of RAM 142 designated by pointer P1 (initially location 0) is first loaded into accumulator ACC1 in CPU 144 (Step 604). Tests are then made to ensure that the data represent a transition, as opposed to an end-of-scan or end-of-revolution marker. Bit 15 of the first transition data entry in accumulator ACC1 is tested to make sure that the word does not represent an end-of-scan marker (Step 606). If bit 15 is active, indicating the end of a scan (Step 606), bit 13 of the word is then tested to determine if the word also represents the end of a print cylinder revolution (end-of-revolution marker, Step 608). If not, pointer P1 is incremented by 1 (Step 610) and the contents of the next successive location of RAM 142 loaded into accumulator ACC1 (Step 604) for processing. If the word initially loaded into accumulator ACC1 (604) is not a end-of-scan delimiter (i.e., bit 15 is inactive), bit 13 of the word is likewise tested to determine if the end of a revolution has occurred (Step 612). If the word reflects an end of revolution (Step 608, 612), the conversion is complete and the program proceeds to execute Step 512 (see Figure 5). Assuming that neither the EOR flag (bit 13) nor EOS flag (bit 15) of the word currently in ACC1 is inactive, pointer P1 is incremented to designate the next successive location in RAM 142 (Step 614) and the contents of that location loaded into accumulator ACC2 in CPU 144 (Step 616). The end-of-scan flag in bit 15 of the second transition data word (accumulator ACC2) is tested to determine whether the word represents a valid transition or an end-of-scan delimiter (Step 618). If the second transition word represents an end-of-scan delimiter, a premature end of scan has occurred (i.e., a light-to-dark transition occurs without a corresponding dark-to-light transition). Such a premature end of scan is illustrated by the contents of locations 4 and 5 of RAM 142 (See Figure 6A). Where a transition has no corresponding opposite transition, the initial transition is not usable. Accordingly, in that case an "unusable" flag (bit 12) in accumulator ACC1 (the first transition) is rendered active, and the contents of accumulator ACC1 are loaded back into the original location (identified by the present contents of pointer P1 minus 1) in RAM 142. Assuming, however, that the end-of-scan test (Step 618) indicates that the second data word (in accumulator ACC2) represents a brightness transition, the distance between transitions (in terms of number of pixels) is calculated and compared to a minimum value (Step 620). The minimum value (e.g., 8 pixels) is suitably maintained in ROM 150. Assuming that the distance between transitions is sufficiently large, the center and size of the transition pair are calculated and loaded into accumulators ACC1 and ACC2 respectively (Step 622). More specifically, the pixel numbers of the first and second transitions are added, and the sum divided by 2 to determine the center. The size is determined by subtracting the pixel number of the first transition from the second. If, however, it is determined that the size of the transition pair is less than 8 pixels (Step 620), the transi-tions are deemed spurious, and the "unusable" flag bits 12 in both accumulator ACC1 and accumulator ACC2 are rendered active. In either event, the contents of accumulator ACC1 and accumulator ACC2 are then loaded into the original corresponding locations in RAM 142 (Step 626). Pointer P1 is then incremented to designate the next successive location in RAM 142 (Step 628), and the foregoing sequence of steps (604-628) is repeated. The sequence is repeated until an active end-of-revolution flag is detected during either Step 608 or 612, whereupon the program proceeds to convert the data from terms of pixel numbers into terms of inches, and generate the mil table (i.e., MILTBL 158) in RAM 152. By way of illustration, Figure 6B shows center/size converted data corresponding to the transition data illustrated in Figure 6A. The initial transition pair reflected in locations 0 and 1 (light-to-dark transition at pixel 50, dark-to-light transition at pixel 60) are converted to a center value of 55, stored in the first 9 bits of location 0 (50 + 60)/2 = 55) and a size value of 10 (60 - 50 = 10) stored in the first 9 bits of location 1. At the end-of-conversion step 510, RAM 142 contains respective 2-word data sets corresponding to each transition pair, together with flagged unusable data (bit 12 active), an end-of-scan marker corresponding to each scan, and one or more end-of-revolution markers. As previously noted, once the data in RAM 142 have been converted to terms of center/size of pairs for successive transitions and are identified (Step 510), the data are then converted into terms of inches, and a mil table generated in RAM 152 (Step 512). As previously noted, the mil table is a fixed-length array (1200 locations) utilized to store three-word data sets (the Y coordinate, the X center coordinate, and the size) for each data transition pair meeting predetermined size requirements. Referring now to Figure 7, the conversion to inches and generation of MILTBL 158 (Step 512) will be more fully described. Upon initiation of the mil table generation step (Step 512), various counters and pointers are initialized. The scan count register in RAM 152 (maintaining a count of the number of scans processed) is initially set to zero. Address pointers P1, P2, internal to CPU 144, are initially loaded with the address of the transition data entry in RAM 142 (address RAM 142(0)), and the address of the beginning of the mil table in RAM 152 (address MILTBL (0)), respectively (Step 702). The Y extent of a scan is then calculated and stored in the MILSCAN register 186 in RAM 152 (Step 704). More specifically, the circumference of printing cylinder 117 in mils (a known constant) is divided by the scans/rev count in counter 148, and the result loaded into MILSCAN register 186. An entry into MILTBL 158 in RAM 152 is then made for each set of data in RAM 142 corresponding to a valid transition pair. More specifically, a first word of RAM 142 (designated by pointer P1, initially location 0) is loaded into accumulator ACC1 in CPU 144 (Step 706). A sequence of checks is then performed to determine if the word is the first word of a valid transition pair data set, as opposed o, for example, an end-of-scan or end-of-revolution delimiter. Specifically, bit 15 of the word is tested to determine if the word is an end-of-revolution delimiter (Step 708). Bit 13 of the word in accumulator ACC1 is tested to determine if the word represents an end-of-scan delimiter (Step 710). Likewise, bit 12 is tested to ensure that the word does not reflect unusable data (Step 712, as determined by Step 618 or 620.) Assuming that the first word represents valid data as determined by Steps 708, 710 and 712, the next successive word in RAM 142 is loaded into a second accumulator (ACC2) in CPU 144. Specifically, pointer P1 is incremented by one (Step 714) and the location in RAM 142 indicated by the content of pointer P1 loaded into accumulator ACC2 (Step 716). Accumulator ACC1 thus contains the first word (center), e.g., location 0 of RAM 142 in Figure 6B, and accumulator ACC2 contains the second word (size), e.g., location 1 of RAM 142 of a center/size data set for a transition pair. The size of the transition pair (accumulator ACC2, bits 0-8) is then tested against a predetermined constant, e.g., 255, to ensure that an overflow condition will not occur (Step 718). Assuming that the size of the data pair is within limits, a data entry corresponding to the transition pair is generated in MILTBL 158. More specifically, a Y value for the transition pair is calculated by multiplying the number of the scan in which the transition pair occurs (the contents of the scan count (SCNCOUNT) register 162 in RAM 152) times the Y extent of each scan, i.e., mils per scan (the contents of MILSCAN register 186) (Step 720). The scan count is calculated by incrementing the contents of SCNCOUNT register 162 each time an end of scan is sensed in Step 708 (Step 722). The calculated Y value is loaded into the location in RAM 152 designated by pointer P2. The X center in terms of mils is then calculated by multipying the center value in accumulator ACC1 by a constant MILCEL, indicative of the X extent of each individual pixel, as determined by the particular optics of scanner 122, 122A. The MILCEL constant is maintained in RAM 150. The calculated X center value is then loaded into the next successive location in RAM 152. Similarly, the size in terms of mils is calculated by multiplying the size, in number of pixels from accumulator ACC2 times the MILCEL constant from RAM 150. The calculated value is then loaded into the next successive location in RAM 152. Thus, for each data transition pair, a 3-word entry is made in MILTBL 158 comprising a Y value, an X center value, and a size value. MILTBL 158 is illustrated schematically in Figure 7A. After a data entry is made into MILTBL 158, the next successive transition pair entry is addressed. More specifically, pointer P2 is incremented by 3 to point to the next open address in MILTBL 158 (Step 724), and pointer P1 is incremented to designate the next successive word in RAM 142 (Step 726), and the contents of the designated location loaded into accumulator ACC1 (Step 706) to repeat the foregoing sequence of steps. When an end of scan (bit 15 equals 1) is detected in Step 708, the contents of SCNCOUNT register 162 is incremented (Step 722) as previously noted, and bit 13 is tested to determine whether an end of revolution has occurred (Step 728). If an end of scan is sensed (Step 708), but the word does not also reflect an end of revolution (Step 728), pointer P1 is incremented (Step 726), and the next successive word in RAM 142 loaded into accumulator ACC1 (Step 706) for processing. Likewise, where the test of bit 12 of a word indicates that the word does not reflect valid data (Step 712) or where the size of the transition pair is in excess of that which can be accommodated by the system (Step 718), pointer P1 is incremented (Step 726) and the next successive word in RAM 142 is loaded into ACC1 (Step 706) for processing. The foregoing sequence continues until all of the data pertaining to the revolution has been processed. Upon sensing an end-of-revolution delimiter, either in Step 710 or Step 728, the instantaneous contents of pointer P2, indicative of the location of the last entry in MILTBL 158, is loaded into the ENDMLM register 160 in RAM 152 (Step 730), and the program proceeds to execute the step of finding and verifying the diamond shape of the marks reflected in the MILTBL 158. Referring now to Figures 1, 1A, 8, and 8A-8E but with more particular attention to Figures 8 and 1A, in carrying out the find/verify diamond shape procedure of Step 514, an initialization step (Step 802) is first undertaken. DIACOUNT register 166 in RAM 152 is cleared to 0. The address of the first location in MILTBL 158 (i.e., MILTBL (0)) is loaded into pointer P2. The address of the first location in TIPSTBL 164 (i.e. TIPSTBL (0)) is loaded into pointer P1. Each separate mark reflected in MILTBL 158 is processed in sequence to determine whether it meets the criteria for the valid diamond shape. The expected number of diamonds (NUMDIA 156) in a register mark is entered by the operator, and contained in RAM 152. Accordingly, preliminary tests (Step 515) are performed to learn whether the expected number of diamonds have been located (Step 804) or the end of the data in MILTBL 158 has been reached (Step 806). Either event signifies completion of the find/verify diamond shape Step 514, and the program proceeds to determine the coordinates, Step 518. More specifically, the count of diamond-shaped marks observed as reflected in the DIACOUNT register 166 is compared to the NUMDIA constant 156 (indicative of the expected number of diamonds) from RAM 152 (Step 804). If the expected number of diamonds have not yet been found, the contents of pointer P2 (the location in MILTBL 158 of the entry currently being processed), is compared to the contents of ENDMLM register 160, i.e., indicative of the address of the last entry in MILTBL 158. Assuming that the end of MILTBL 158 has not been reached, the address of the entry in MILTBL 158 currently being processed (i.e., the contents of pointer P2) is saved in pointer register P3 (Step 808) and a preliminary size check is performed (Step 809). Specifically, the size value from the MILTBL entry (the contents of the location designated by the contents of pointer P2 plus 2) is compared against a predetermined upper limit on diamond size (DIAULM, contained in ROM 150). Assuming that the size reflected in the MILTBL entry is within limits, an entry corresponding to the MILTBL entry is made in TIPSTBL 164 (Step 810). As noted above, TIPSTBL 164 is a fixed-size array of 200 16 bit words (locations). Each entry in TIPSTBL 164 is comprised of 4 locations representing the X center, the low tip, the high tip, and the back-link to the corresponding entry in MILTBL 158, for each MILTBL entry that meets certain correlation criteria. Referring briefly to Figure 8A, the TIPSTBL entry is generated by first loading the Y value from the current MILTBL entry into accumulater ACC1. That is, the contents of the location in RAM 152 designated by the address in pointer P2 is loaded into accumulator ACC1 (Step 812). Pointer P2 is then incremented by 1 to designate the next successive location in MILTBL 158, containing the X center location of the transition pair (Step 814). The X center data from MILTBL 158 is then loaded into the second word of the TIPSTBL entry, i.e., the X value contained in the location of MILTBL 158 of RAM 152 designated by pointer P2 is loaded into the location of TIPSTBL 164 designated by pointer P1 (Step 816). The projected Y coordinates of the respective tips of the mark (i.e., the values LOTIP, HITIP) are then calculated and loaded into the next 2 succeeding locations of the initial entry in TIPSTBL 164, as will be described. As previously noted, in the preferred embodiment the register marks are in the shape of a right angle diamond, i.e., a square rotated 45 degrees. Accordingly, the distance from the center of the diamond to each apex (tip) of the diamond is equal. Moreover, the distance along a line parallel to the axis from any point along the edge of the diamond to the Y axis is equal to the distance from the intersection with the centerline to the closest Y tip. Referring briefly to Figure 2B, a diamond-shaped register mark, for example mark 202, is scanned by line 207 resulting in a light-to-dark transition at point 208 and dark-to-light transition at point 210. Since diamond 202 is symmetrical, the center point between points 208 and 210 is the X center of the mark. Further, since the diamond is a right angle diamond, the distance from point 208 to the X centerline is equal to the distance from that point on the X centerline to the low tip 212. The Y coordinate of the diamond low tip (LOTIP) is calculated by determining the Y coordinate of the scan at issue and subtracting one-half of the size of the transition pair. Similarly, the Y coordinate of the high tip (HITIP) is calculated as the Y coordinate of the scan plus one-half the size of the transition. It should be recognized, however, that with respect to scans on the low tip side of the center of the diamond, the high tip calculation will not provide useful data, and with respect to scans on the high tip side of the Y center, the low tip calculation will not provide useful data. However, since the disposition of the particular scan with respect to the Y center of the diamond is undetermined, both high tip and low tip calculations are performed for each scan, the meaningless calculations are discriminated against in subsequent steps. Referring again to Figure 8A, to calculate the high tip and low tip values, pointers P1 and P2 are each incremented by 1; P1 is used to designate the next open location in TIPSTBL 164, and P2 points to the entry containing the size value for the current transition pair in MILTBL 158 (Step 818). The size value in the location in MILTBL 158 designated by pointer P2 is then loaded into accumulator ACC2 in CPU 144 (Step 820). The value of one-half the size is then calculated (Step 822); the contents of accumulator ACC2 is divided by 2 and reloaded into accumulator ACC2. The value of LOTIP (the projected Y coordinate of the low tip) is then calculated by subtracting the SIZE/2 value from the Y value of the scan (Step 824). Recalling that the Y value from MILTBL 158 was previously loaded into accumulator ACC1, the contents of accumulator ACC2 is subtracted from the contents of accumulator ACC1 and that difference is loaded into the location in TIPSTBL 164 designated by pointer P1. Counter P1 is then incremented by one to designate the next successive TIPSTBL location which will be used to store the value of HITIP computed in the next step. The HITIP value (the projected Y coordinate of the high tip) is then calculated and loaded into the location in TIPSTBL 164 designated by pointer P1 (Step 828). Specifically, the high tip value is calculated by adding the contents of accumulator ACC1 and accumulator ACC2. The link to the corresponding MILTBL entry is then generated and stored as the final word of the initial entry in TIPSTBL 164. Specifically, pointer P1 is incremented to designate the next successive location (word 4) in TIPSTBL 164 (Step 830). The link (the address of the first word of the corresponding MILTBL entry) is then calculated by subtracting 2 from the present contents of pointer P2, and that value loaded into the TIPSTBL location designated by pointer P1 (Step 832). The initial TIPSTBL entry comprising a 16 bit X center value, a 16 bit word indicative of the Y coordinate of the low tip, a 16 bit word indicative of the Y coordinate of the high tip, and a 16 bit word containing the address of the corresponding MILTBL entry is thus generated, and the program proceeds with the next successive step. Referring again to Figure 8, after the initial entry in TIPSTBL 164 is generated (Step 810), the X value, the LOTIP value, and the HITIP value from that entry are stored in REFX register 188, REFLT register 190, and REFHT register 192 in RAM 152, respectively (Step 834). As will hereinafter be explained, the reference values are used for discrimination against non-correlating entries. After the LOTIP and HITIP values are saved, pointers P1 and P2 are each incremented by one to designate the first word of the next successive entries in TIPSTBL 164 and MILTBL 158, respectively (Step 836). Checks are made to ensure that TIPSTBL 164 is not full (Step 838) and that MILTBL 158 is not exhausted (Step 840). Assuming that those tests are passed, a preliminary correlation check against the reference entry (Step 842) is then performed with respect to the MILTBL entry to ensure that all entries in TIPSTBL 164 relate to the same mark. To correlate the magnitude of the deviation of the MILTBL X value from the reference X value, the data in REFX register 188 must be less than a predetermined value (TPXTOL in ROM 150, e.g., 9 mils). If the current MILTBL entry X value deviates by more than the permissible limit, counter P2 is incremented by 3 to designate the first word of the next successive MILTBL entry (Step 843) and, if MILTBL 158 is not exhausted (Step 840), the X center deviation test (Step 842) is repeated on that MILTBL entry. When a MILTBL entry is found with an X center that correlates with the reference value (Step 842), a TIPSTBL entry corresponding to that MILTBL entry is made (Step 844) in a manner identical to that described in connection with Step 810. After the TIPSTBL entry has been made, a correlation test between the new TIPSTBL entry and the reference values is then effected (Step 846). If the reference entry and new entry both relate to the same diamond, the Y coordinate of the diamond high tip, represented by the value of HITIP in the new entry, will be disposed no more than a predetermined maximum distance from the Y coordinate of the diamond low tip, represented by the LOTIP reference value. The value of HITIP in the new entry minus the reference LOTIP is tested against a predetermined maximum (DIAULM in ROM 150, e.g., 156 mils) (Step 846). If the new entry correlates with the reference, pointers P1 and P2 are each incremented by one to designate the next open location in TIPSTBL 164 (the first word of the successive entry in the table) and the next successive MILTBL entry for processing, respectively (Step 848). Steps 838-848 are then repeated. The TIPSTBL generation process is continued until a TIPSTBL entry fails the diamond length correlation test (step 846), TIPSTBL 164 is filled (Step 838) or MILTBL 158 is exhausted (Step 840). Exit is typically effected upon the failure of a TIPSTBL entry to meet the diamond length correlation test (Step 846), indicating that the entry is not associated with the same diamond as the reference entry, but is perhaps associated with the next successive diamond. Accordingly, under such circumstances, pointer P1 is decremented by four to point to the last word of the previous TIPSTBL entry, and MILTBL pointer P2 is decremented by three to point to the last entry of the previous MILTBL entry (Step 850). Accordingly, the non-correlating TIPSTBL entry is effectively disinfranchised, and will be overwritten in the processing of the next diamond. Decrementing pointer P2 ensures that the corresponding MILTBL entry is processed in connection with the next diamond. After a TIPSTBL has been generated for an observed mark, the address of the last word in TIPSTBL 164 (in Pointer P1) is then stored in TIPTOP register 184 in RAM 152 (Step 852), and the program proceeds with further correlation steps to ensure that all entries in TIPSTBL 164 relate to the same valid diamond shape. A LOTIP correlation test (Step 854) is effected. The LOTIP values of the respective entries in TIPSTBL 164 are compared with the reference LOTIP value stored in REFLT register 190 (i.e., the value corresponding to the first entry in TIPSTBL 164) to ensure that all entries indicate, within predetermined limits, the same Y coordinate for the diamond LOTIP. If sufficient correlation is reflected, an average LOTIP value is calculated and stored in AVGLOT register 170 (step 856). If the LOPTIP values do not reflect sufficient correlation, TIPSTBL 164 is regenerated, using the second scan (i.e., second entry in MILTBL 158) rather than the first scan as the source for the X reference and LOTIP reference values. Steps 854 and 856 will be hereinafter more fully described in conjunction with Figure 8B. Assuming low tip correlation, a similar correlation test is performed with respect to the HITIP values of the entries in TIPSTBL 164 (step 858). If sufficient correlation is found between the HITIP values and the reference HITIP value stored in REFHT Register 192, an average HITIP value is calculated and stored in AVGHIT Register 172 in RAM 152. Steps 858 and 860 will be described more fully in conjunction with Figure 8C. After the average high tip value has been stored in the AVGHIT register 172, a size correlation test is performed. (Step 861). Size correlation Step 861 will be more fully described in connection with Figure 8D. If the diamond size is within predetermined limits, the program proceeds to calculate X and Y center values (Step 516). If, however, the size of the mark is outside the predetermined limits for a diamond, the data in MILTBL 158 corresponding to the mark is descriminated against and a return is made to point B. Referring now to Figure 8B, upon initiation of the low tip correlation step (step 854), the address of the first low tip value in TIPSTBL 164, i.e., the address of TIPSTBL(1), is loaded into pointer P1 (step 862). An initial test (Step 864) is made to ensure that there are a sufficient number of entries (e.g., 6) in TIPSTBL 164. Specifically, the contents of pointer P1 (indicative of the address of the first LOTIP value) is subtracted from the contents of TIPTOP register 184 (the address of the last entry in the table). If the difference is not greater than 24 (6 entries times 4 words per entry), the mark reflected in TIPSTBL 164 is deemed not to be a proper diamond, and an exit is made to point B in Figure 8, to effect generation of a TIPSTBL for the next successive mark reflected in MILTBL 158. Assuming however that there are at least six entries in TIPSTBL 164, accumulators ACC1, ACC2, and ACC3 in CPU 144 are initialized to zero (Step 865). Accumulator ACC1 is used to count the number of scans correlating with the reference low tip. Accumulator ACC2 is utilized for averaging the values of the low tips meeting the correlation criteria. Accumulator ACC3 is used to maintain a count of correlation failures. A fourth accumulator, ACC4, in CPU 144 is used to store the low tip value of the current entry. The value of each successive low tip entry is then correlated against the reference LOTIP value in REFLT register 190. Specifically, pointer P1 is incremented by four to designate the LOTIP value of the next successive entry in TIPSTBL 164 (Step 866). The LOTIP value in the location specified by pointer P1 is then stored in accumulator ACC4 (Step 867). A low tip correlation test is then made (Step 868); the magnitude of the difference between the tested LOTIP value and the reference LOTIP value must be less than a predetermined constant (TPYTOL in RAM 150, e.g., 3 mils). If the deviation of the tested LOTIP is within permissible limits of the reference value, the LOTIP value in ACC4 is added to the sum of LOTIPs maintained in accumulator ACC2 (Step 869). The number of correlating scans count in accumulator ACC1 is then incremented (Step 870) and, assuming that the TIPS table is not exhausted (Step 871), pointer P1 is again incremented by four to access the next successive LOTIP value for processing (Step 866). If however, the current LOTIP value in ACC4 deviates from the reference by more than the permissible amount (Step 868), the correlation failure count in ACC3 is incremented (Step 872), and a test is made to ensure that the number of correlation failures does not exceed a predetermined amount (e.g., 3) (Step 873). If the correlation failure count does not exceed the predetermined number, the contents of pointer P1 (the address of the current LOTIP value) is compared against the contents of TIPTOP register 184 (the address of the last entry in the table) to determine whether TIPSTBL 164 is exhausted (Step 871). If it is not, the LOTIP value of the next entry in TIPSTBL 164 is accessed by incrementing pointer P1 by four (Step 866). The correlation cycle continues until either the correlation failure count in accumulator ACC3 exceeds the predetermined limit (e.g., 3) (Step 873) or TIPSTBL 164 is exhausted (Step 871). It is expected that exit from the loop will occur as a result of correlation failure; entries corresponding to scan lines on the high side of the Y center will not include LOTIP values relating to the actual diamond low tips and correlation failure will typically occur within a few scans after reaching the Y center. After the sum of the LOTIP values correlating with the low tip (as established by the reference LOTIP value) is established, the number of correlating scans count in accumulator ACC1 is tested against a predetermined minimum number (TIPNUM in ROM 150, e.g., 3) to ensure that a sufficient number of scans indicated the same Y coordinate (within correlating low tips)(Step 874). Assuming that the minimum number of correlating scans is exceeded, the average low tip value is computed and stored in AVGLOT register 170 in RAM 152 (Step 856). The average is computed by dividing the cumulative sum of the correlating LOTIP values stored in ACC2 by the contents of the number of correlating scans count in ACC1. If, however, the number of correlating scans is less than the minimum permissible value, TIPSTBL 164 is regenerated using a different reference value, e.g., the second entry in MILTBL 158. Thus, if the failure to correlate was due to an improvidently chosen reference value (i.e., a reference value which itself does not correlate with the actual low tip of the diamond), the regeneration of TIPSTBL 164 in connection with a different reference entry may provide for correlation. Accordingly, the contents of pointer P3 (the address of the MILTBL entry corresponding to the reference values), plus 1 is loaded into pointer P2 to designate the next successive MILTBL entry for processing (Step 876), and processing is resumed at point B in Figure 8 for regeneration of TIPSTBL 164 in connection with the new reference. After an average LOTIP value is loaded into the AVGLOT register 170, the program performs the HITIP correlation test (858). Referring to Figure 8C, step 858 is initiated by loading the contents of TIPTOP register 184 (indicative of the last data location in TIPSTBL 164) into pointer P1 (Step 877), and clearing accumulators ACC1, ACC2 and ACC3 (Step 878). A HITIP reference value, preferrably the HITIP value from the last entry in TIPSTBL 164, designated by pointer P1, is then established in accumulator ACC5 in CPU 144 (Step 879). Pointer P1 is then decremented by four to designate the HITIPS value in the next preceeding entry in TIPSTBL 164 (Step 880). The designated HITIP value is then stored in accumulator ACC4 (Step 881). The correlation test (Step 882) is then effected; the magnitude of the difference between the contents of accumulator ACC4 (current HITIP value), and accumulator ACC5 (REFHT value) is tested against the predetermined limit TPYTOL in ROM 150 (e.g., 3 mils). If the current value correlates with the reference, it is added to the cumulative sum in accumulator ACC2 (Step 883), and the number of correlating scans count in accumulator ACC1 is incremented (Step 884). Assuming that TIPSTBL 164 is not exhausted (Step 885), pointer P1 is again decremented by four to designate the HITIP value of the next preceeding entry in TIPSTBL 164 for processing (Step 880). As with respect to the LOTIP correlation (Step 854), when the current HITIP value deviates beyond permissible limits from the reference value (Step 882), the correlation failure count in accumulator ACC3 is incremented (Step 886) and the number of correlation failures is tested (Step 887). If the correlation failure count in accumulator ACC3 is within permissible limits, counter P1 is checked against the address of TIPSTBL(4) (the address of the second entry in TIPSTBL 164), to determine if TIPSTBL 164 has been exhausted. If not, pointer P1 is again decremented by 4 to designate the next preceding HITIP value for processing (Step 880). The HITIP correlation sequence continues until either the correlation failure count exceeds the predetermined limit (Step 887) or TIPSTBL 164 is exhausted (Step 885). A correlation count failure is expected once entries are accessed corresponding to scans on the low side of the Y center of the mark. As in the case of the LOTIP correlation (Step 854), the number of correlating scans in accumulator ACC1 is tested against the predetermined number (e.g., 3) to ensure that the table contains at least the minimum number of correlating scans (Step 888). If the requisite number of correlating scans is not contained in the table, each entry in the MILTBL 158 corresponding to the present entries in TIPSTBL 164 is worked with a discriminant (or zeroed) to prevent use in further processing (Step 889), and a return to point B in Figure 8 is made to effect generation of a TIPSTBL 164 for the next word reflected in MILTBL 158. The procedure for marking the table data as deleted will be described in conjunction with Figure 8E. Assuming, however, that the requisite number of correlating scans is found, the average HITIP value is then calculated by dividing the cumulative sum of correlating high tip values in ACC2 by the number of correlating scans in ACC1. The average value is then loaded into the AVGHIT register 172 and RAM 152 (Step 890), and the size correlation test (Step 861) is executed. Referring now to Figure 8D, the size correlation check (Step 861) is initiated by first calculating the diamond size (the average HITIP value in AVGHIT register 172, minus the average LOTIP value in the AVGLOT register 170) and loading the diamond size value into ACC4 in CPU 144 (Step 890). The calculated diamond size is then compared (Step 891) against a predetermined lower size limit (DIALLM in ROM 150, e.g., 90 mils). Assuming the diamond size value in ACC4 is greater than the lower limit, it is then tested (Step 892) against a predetermined upper limit for diamond size (DIAULM in ROM 150, e.g., 156 mils). Assuming that the diamond size in ACC4 passes both the lower and upper limits tests, the diamond count in the DIACOUNT register 166 in RAM 152 is incremented. The data in MILTBL 158 relating to the TIPSTBL entries corresponding to the observed diamond is then marked as deleted (Step 894). If the diamond size value in accumulator ACC4 is less than the lower limit or greater than the upper limit (Steps 891, 892), the MILTBL data corresponding to the diamond is marked as deleted (Step 895), control is returned to point B in Figure 8 (without incrementing DIACOUNT register 166), and a TIPSTBL is generated for the next word reflected in MILTBL 158. MILTBL data is preferably marked as deleted (Steps 889, 894, and 895) by adding a large predetermined value to the X values of the respective entries in MILTBL 158 corresponding to the contents of the particular TIPSTBL at issue. The predetermined value is chosen to be large enough to ensure that the X value exceeds various size tests and thus effectively deletes the data from further consideration. If desired, the respective X values can be set to zero. However, for diagnostic purposes, it may be desirable to retain indicia of the original data. Specifically, referring to Figure 8E, pointer P4 in CPU 144 is loaded with the address of the X value of the first entry in TIPSTBL 164 (Step 896). The link address contained in the TIPSTBL entry at issue (the location of RAM 152 designated by the contents of pointer P4 plus 3), is loaded into Pointer P5. Pointer P5 thus contains the address of the MILTBL X center entry corresponding to the TIPSTBL entry at issue. The predetermined constant, e.g., 1000, is then added to MILTBL X value (in the RAM 152 location designated by Pointer P5) and the sum stored back into the MILTBL location (step 897). Pointer P4 is then incremented by 4 to designate the next entry in TIPSTBL 164 (Step 898). A test is performed to determine if TIPSTBL 164 is exhausted (Step 899) (the contents of pointer P4 is compared against the address of the last entry in TIPSTBL 164 contained in TIPTOP register 184). If TIPSTBL 164 is not exhausted, Steps 897, 898 and 899 are repeated for the next successive TIPSTBL entry, identified by pointer P4. This process continues until TIPSTBL 164 is exhausted (Step 899), whereupon a return to the next program step is effected. Once a mark is found to correlate with the predetermined diamond criteria, the X and Y coordinates of the center of the diamond are calculated and stored in a corresponding two-word entry (X, Y) in DIAXYS table 178 of RAM 152 (Step 516). Referring now to Figure 9, the address of the first location of the DIAXYS table plus twice the current diamond count is loaded into pointer P4, to designate the first open location in DIAXYS table 178 (step 902). The address of the first location in TIPSTBL 164 is loaded into pointer P5 and respective accumulators ACC3 and ACC4 are set to zero (Step 904). Accumulator ACC3 is used to maintain a cumulative sum of the X center values from TIPSTBL 164. Accumulator ACC4 is used to maintain a running count of the number of TIPSTBL entries processed. The accumulated sum of X values in TIPSTBL 164 is first established in ACC3. The contents of the TIPSTBL location designated by pointer P5 (initially the first X value, TIPSTBL (0)), is added to the contents of ACC3, and the sum loaded into ACC3. Pointer P5 is then incremented by 4 to designate the next successive X value in TIPSTBL 164 and the number-of-entries count in ACC4 is incremented by one (Step 906). The contents of pointer P5 are then tested against the contents of TIPTOP register 184 to determine whether TIPSTBL 164 has been exhausted. If not, the X value designated by pointer P5 is added to the cumulative sum in ACC3, and pointers P5 and ACC4 are again incremented (Step 906). The summing process is continued until it is determined that the TIPSTBL 164 is exhausted (Step 908). After the sum of all X values in TIPSTBL 164 has been accumulated, the average value of the X center is calculated and stored in the location of DIAXYS table 178 designated by Pointer P4. Specifically, the cumulative sum in accumulator ACC3 is divided by the number-of-entries count in accumulator ACC4 and loaded into the location of DIAXYS table 178 (step 910). The Y coordinate of the diamond center is then determined and stored in the next DIAXYS location. Counter P4 is incremented by 1 to designate the next successive location in the DIAXYS table 178 (Step 912). The average Y center value is then calculated by summing the average HITIP value in AVGHIT register 172 and the average LOTIPS value in the AVGLOT register 170, and dividing the sum by two. The result is loaded into the location of DIAXYS table 178 designated by pointer P4 (step 914). After the X and Y center values for the diamond are stored in DIAXYS table 178, a return to the find/verify diamond shape and size step (Step 514) is effected at point A, and if the diamond count is less than the predetermined number NUMDIA (Step 517), the next mark reflected in MILTBL 158 is analyzed for correlation with the predetermined diamond characteristics. After the X-Y centers of the diamonds are determined and stored in DIAXYS table 178 for the predetermined expected number of diamonds, or all of the diamonds reflected in MILTBL 158, the X-Y coordinate values are normalized with respect to the first diamond observed (e.g., reference diamond 202 in Figure 2). Referring now to Figure 10, the normalization (Step 518) is achieved by first loading the address of the first element in the DIAXYS table 178 (DIAXYS (0)) into pointer P1 in CPU 144. The accumulator ACC5 in CPU 144 is cleared to zero for use as a counter. As will be explained, accumulator ACC5 maintains an ongoing count of the number of diamonds normalized (step 1002). The X and Y coordinates of the first DIAXYS entry (corresponding to the center coordinates of the first observed diamond) are established as reference coordinates (Step 1004). The X value contained in the first location of DIAXYS table 174 designated by pointer 1 is loaded into accumulator ACC1 in CPU 144. The Y value (in the next successive location of DIAXYS) is loaded into accumulator ACC2. The X, Y coordinates for the respective diamonds are then normalized. Each DIAXYS entry is accessed in sequence and loaded into accumulators ACC3 and ACC4 in CPU 144 (Step 1006). Specifically, the X value in the DIAXYS location designated by the contents of pointer P1 is loaded into ACC3 and the Y value in the next successive location is loaded into ACC4. In the initial instance, the X and Y values of the first entry in DIAXYS table 178 (corresponding to the reference diamond) are loaded into accumulators ACC3 and ACC4 as well as into accumulators ACC1 and ACC2. Normalization is then effected (Step 1008). The reference X value in ACC1 is subtracted from the X value in ACC3 and the result loaded into the DIAXYS location identified by pointer P1. Similarly, the Y reference value in ACC2 is subtracted from the current Y value in ACC4 and the result loaded into the next successive DIAXYS location. The number of diamonds normalized is counted by accumulator ACC5 and is then incremented by 1, and pointer P1 is incremented by 2 to designate the beginning of the next entry in DIAXYS table 178 (Step 1010). A test is then made to determine if all diamonds have been processed. If the count of diamonds normalized in accumulator ACC5 is not greater than the count of the number of diamonds observed in DIACOUNT register 166 (Step 1012), Steps 1006, 1008, 1010 and 1012 are repeated for the entry in DIAXYS table 178 now identified by pointer P1. The process is repeated until each entry in DIAXYS table 174 has been normalized. This results in a coordinate system with the first reference diamond at position (0,0). As previously noted, after the X, Y coordinates are normalized with respect to the first observed diamond, the diamond center coordinates are examined to identify the second reference diamond (Step 519) to facilitate compensation for web weave and web stretch (Step 520). Referring now to Figure 11, the second reference diamond is identified by comparing the center coordinates of the observed diamonds with predetermined limits: a minimum X (RF2XMN in ROM 150), a maximum X position (RF2XMX), a minimum Y (RF2YMN), and maximum Y (RF2YMX) distance from the first reference diamond. By way of initialization, the first and second entries in the DIAXYS (pertaining to the observed first diamond) are accessed and loaded into the first and second locations, respectively, of the diamond display table (DIADSP) 180 (Step 1102). The beginning address of the second DIAXYS (DIAXYS (2)) is then loaded into pointer P2, and the count of observed diamonds from DIACOUNT register 166 is loaded into ACC2 (Step 1104). The respective diamond centers reflected in DIAXYS 178 are then accessed in sequence and compared against the reference limits. Specifically, the contents of the DIAXYS location identified by pointer P2 is loaded into ACC1 (Step 1106). The X value in ACC1 is then tested against the X position minimum (RF2XMN) (Step 1108) and, if not disqualified, it is tested against the maximum X position (RF2XMX) (Step 1110). If the X value is within the permissible limits, the Y value of the DIAXYS entry (DIAXYS (P2 + 1)) is accessed and loaded into ACC2 (Step 1112). The Y value is then tested against the Y minimum value (RF2YMN) (Step 1114), and if not eliminated, against the Y maximum value (RF2YMX) (Step 1116). If an X value or Y value is outside permissible limits, pointer P2 is incremented by 2 to designate the next DIAXYS entry, and the diamonds processed count in ACC2 decremented by 1 (Step 1118). The count in accumulator ACC2 is checked to ensure that entries in DIAXYS 178 remain to be checked (Step 1120) and, if DIAXYS 178 is not exhausted, the DIAXYS entry identified by pointer P2 is accessed and the process is repeated. The process continues until a center with X and Y coordinates within the predetermined limits is found and deemed to be the second reference diamond, or until DIAXYS 178 is exhausted. When a DIAXYS entry corresponding to the reference diamond is found, the contents of ACC1 (indicative of the X value) is loaded into the third location in DIADSP register 180 (i.e., DIADSP (2)), and the contents of ACC2 (the Y value) is loaded into the next successive location in the DIADSP 180 (Step 1122). If DIAXYS 178 is exhausted without finding an entry corresponding to the second reference diamond, the interrupt routine is exited, and, upon the generation of the end-of-revolution signal by counter 140, the data acquisition mode will be reentered to collect a new set of data in RAM 142. After the center coordinates of the second reference diamond are loaded into the corresponding location in DIADSP 180, the X and Y coordinates of the centers of the non-reference diamonds are compensated for non-registry related deviation. Referring now to Figure 12, by way of initialization, the number of observed non-reference diamonds (the contents of DIACOUNT register 166 minus 2) is loaded into accumulator ACC3, and the address of the DIAXYS table entry corresponding to the second observed diamond (DIAXYS (2)) is loaded into pointer P1 (Step 1202). A check (Step 1204) is made to establish that there is at least one non-reference diamond (i.e., that the contents of accumulator ACC3 is greater than zero). If at least one non-reference diamond is not observed, the registry cannot be checked, and accordingly, the interrupt routine is exited and the data acquisition mode operation is repeated upon the next end-of-revolution signal from counter 140. Assuming that at least one non-reference diamond is observed, the DIAXYS table entries corresponding to the non-reference diamonds are accessed in sequence and the X deviation not due to registry error is compensated for. Specifically, the X coordinate value (the contents of the DIAXYS table location designated by pointer P1) is loaded into accumulator ACC4, and the Y coordinate (in the next succeeding DIAXYS table location) is loaded into accumulator ACC5. Referring briefly to Figure 12A, when the center coordinates of the second reference diamond 203 vary from the expected X-Y coordinates by amounts EX and EY, the X deviation perceived with respect to a non-reference diamond 204 will contain a component 1208 due to registry error, but will also contain a component 1210 due to, for example, web-weave. In accordance with the law of triangles, the non-registry related X deviation 1210 of diamond 204 can be determined by multiplying the X deviation of reference diamond 203 by the ratio of the Y coordinate of diamond 204 divided by the Y coordinate of reference diamond 203. Accordingly, referring again to Figure 12, the X coordinate of the second reference diamond contained in accumulator ACC1 is multiplied by the Y coordinate of the non-reference diamond contained in accumulator ACC5, and divided by the Y coordinate of the second reference diamond contained in accumulator ACC2. The nonregistry related X deviation component thus calculated is subtracted from the observed X coordinate value of the non-reference diamond in accumulator ACC4, and the result loaded into the DIAXYS table location from which the observed X coordinate was taken (Step 1212). The number-of-diamonds-processed count in accumulator ACC3 is then decremented by one and tested against zero (Step 1216) to determine if all of the DIAXYS entries corresponding to non-reference diamonds have been processed. If the count in accumulator ACC3 does not equal zero, pointer P1 is incremented by two (Step 1218) and the next successive X coordinate value in DIAXYS table 178 is compensated. After all of the observed X coordinates are compensated, the observed Y coordinate values are similarly compensated for non-registration related components of deviation. Specifically, each observed Y coordinate in sequence is multiplied by a stretch correction value factor equal to the ratio of the expected Y coordinate of the second reference diamond divided by the observed Y coordinate. Specifically, by way of initialization, the following steps occur: the address of the expected Y coordinate of the first non-reference diamond (DIAXYS (3)) is loaded into pointer P1; the observed Y coordinate of the second reference diamond (REF2Y from ROM 150) is loaded into accumulator ACC5; and the diamonds processed count in ACC3 is restored to the number of non-referenced diamonds (DIACOUNT minus 2) (Step 1220). The Y stretch correction ratio is then computed by dividing the expected second reference diamond Y coordinate in accumulator ACC2 by the observed Y coordinate value in accumulator ACC5 and loaded into accumulator ACC5 (Step 1222). The DIAXYS entries corresponding to each non-reference diamond are then accessed in sequence and the Y coordinate value multiplied by the compensation factor contained in accumulator ACC5 (Steps 1224, 1226). After the center X, Y coordinates have been normalized and compensated for non-registration related deviations, the observed diamond positions are correlated with the expected values (Step 522) and the registration error is determined by subtracting from the observed coordinates the expected coordinates of the correlating diamonds (Step 524). However, the observed coordinates must each be correlated with a particular set of expected coordinates. To facilitate this correlation, array CXLMN contains an entry for each non-reference diamond, including four sequential words indicative of the minimum X, maximum X, minimum Y and maximum Y values which can be observed and still correlate to that particular diamond. The expected coordinates of the center of the individual non-reference diamonds are contained in array COLXYS in ROM 150; a two-word data entry X, Y, is provided for each non-reference diamond. Referring to Figure 13, an initialization step (Step 1302) is first effected as follows: the number of non-referenced diamonds (the contents of DIACOUNT - 2) is loaded into diamond placed (DIAPLC) register 168 in RAM 152; the address of the coordinate of the first non-reference diamond (DIAXYS (3)) is loaded into pointer P1; and the address of the first open location (DIADSP(4)) in diamond displayed (DIADSP) table 180 is loaded into pointer P2 (Step 1302). The entries in DIAXYS table 178 corresponding to non-referenced diamonds are, in sequence, compared to respective minimum and maximum X and Y values relating to the expected positions of the individual non-reference diamonds contained in array CXLMN in ROM 150. The observed X coordinate in the DIAXYS location designated by pointer P1 is loaded into accumulator ACC1, the Y coordinate in the next successive location of the DIAXYS table 178 (DIAXYS (P1 + 1)) is loaded into accumulator ACC2, and the number of non-reference diamonds (DIACOUNT minus two) is loaded into accumulator ACC3. The address of the first word in the CLXMN array (CLXMN(0)) in ROM 150 is loaded into pointer P3, and the address of the corresponding COLXYS entry (COLXYS (0)) is loaded into pointer P4 (Step 1304). The X value in accumulator ACC1 is then compared against the minimum X value from the CLXMN location identified by pointer P3. If the X value is sufficiently large, pointer P3 is incremented by one to designate the corresponding X maximum value associated with the expected diamond (Step 1308) and the next comparison is effected (i.e., is the X value less than the maximum) (Step 1310). Assuming that the observed X coordinate of the DIAXYS entry is within limits, pointer P3 is then incremented by one to designate the CLXMN location containing the corresponding minimum Y value (Step 1312) and the observed Y value in accumulator ACC2 is compared to the minimum value (Step 1316). Assuming the observed Y coordinate passes the minimum test, pointer P3 is incremented (Step 1318) to designate the corresponding Y maximum value in array CLXMN (Step 1320). If either the observed X or Y coordinate is found to be outside of permissible limits, the following sequence occurs: pointer P2 is incremented by two to designate the locations in DIAPLC table 168 corresponding to the next expected diamond; pointer P3 is incremented by one to designate the minimum X value of the next expected diamond in the CLXMN array; pointer P4 is incremented by two to designate the entry in the array COLXYS corresponding to the next expected diamond (Step 1322); and accumulator ACC3 is decremented by one. The contents of accumulator ACC3 are then tested to determine if the CLXMN array has been exhausted (Step 1324) and, if not, the observed values in accumulators ACC1 and ACC2 compared against the next set of values in array CLXMN. If the CLXMN array is exhausted, pointer P1 is incremented by one (Step 1326) and the comparison procedure repeated with respect to the X, Y coordinates of the next observed diamond in DIAXYS table 178. If the observed values of the X, Y coordinates are within a particular set of limits, the observed diamond is deemed to correlate to the expected center coordinate of the corresponding entry in COLXYS, and registry error is calculated by comparing the observed X and Y coordinate with those expected center coordinates. Specifically, the corresponding expected X coordinate in array COLXYS (COLXYS (P4)) is subtracted from the X value in the accumulator ACC1, and the result loaded into the corresponding DIADSP location (DIADSP (P2)). The expected Y value in the next successive location of the COLXYS array is subtracted from the observed Y value in accumulator ACC2 and the result located into the next successive location of DIADSP (Step 524). Pointer P1 is incremented by one to access the next set of observed coordinates and the DIAPLC register 168 is incremented by one (Step 1328). The contents of DIAPLC register 168 are then tested to determine if all the Pointer P1 is incremented by one to access the next set of observed coordinates and the DIAPLC register 168 is incremented by one (Step 1328). The contents of DIAPLC register 168 are then tested to determine if all the diamonds have been processed (Step 1330). At this point, DIADSP table 180 contains, in the locations corresponding to each of the non-reference printing units, entries indicative of the registry error between that unit and the reference unit. Corrective error signals are then generated as required for the particular printing unit as is known in the art (Step 526). It will be understood that while various of the conductors/connections are shown in the drawing as single lines, they are not so shown in a limiting sense and may comprise plural conductors/connections as understood in the art. Further, the above description is of a preferred exemplary embodiment of the present invention, and the invention is not limited to the specific forms shown. Modifications may be made in the design and arrangement of the elements without departing the appended claims.

Claims: A system for maintaining registry between a plurality of printing units (102-105), cooperating with a moving web (110), the system being of the type wherein the printing units (102-105) include means (116, 117, 118, 119) for placing the respective registration marks (202, 203, 204, 205, 206) on the web (110), the relative positions of the marks (202, 203, 204, 205, 206) being indicative of registry between the printing units (102-105), and further including means (126) responsive to control signals applied thereto for adjusting the registry of the printing units (102-105), means for scanning (122, 122A) the marks (202-206) and generating scanning signals, and means for generating control signals (144, 142, 132) to the registry adjusting means (126) in accordance with the relative positions of the registration marks (202, 203, 204, 205, 206); characterized in that: the registration marks (202, 203, 204, 205, 206) including a portion having substantially symmetrical sides diagonal to the direction of the web motion and the means (129) for generating control signals comprises means for determining (144, 142, 132, 150, 152), from the scanning signals, a respective point associated with each of the registration marks (202, 203, 204, 205, 206) and the means for scanning (122, 122A) operates in a direction transverse to the web (110) movement. The system of claim 1, wherein the registration marks (202, 203, 204, 205, 206) are in the shape, of right angle diamonds. The system of claim 1 or 2, further characterized in that the means for scanning (122, 122A) detects images on a predetermined area of the web (110), the area being of an extent in a direction transverse to web movement greater than the extent of the registration marks (202, 203, 204, 205, 206). The system of claim 3 wherein the means (122, 122A) for scanning is at least one optical line scanner (300) and wherein the scanning signals are indicative of the position of marks (202, 203, 204, 205, 206) on the web (110) as the web (110) moves relative to the printing units (102-105). The system of claim 3 or 4, further characterized in that the means for generating control signals (144, 142, 132) includes: means for determining (144, 142, 150, 152, 510, 512, 514, 515, 516, 518, 519, 520) from the images, the relative positions of the marks; means (142, 144, 150, 522, 524) for determining deviations of the relative positions from a predetermined value; and means (142, 144, 150, 526) for generating the control signals in accordance with the deviations. A method for maintaining registry between a plurality of rotating cylinders (116, 117, 118, 119) cooperating with a moving web (110), characterized by the steps of: placing on the web (110) a respective registration mark (202, 203, 204, 205, 206) of predetermined size and shape for each cylinder (116, 117, 118, 119), the mark including a portion having symmetrical sides diagonal to the direction of the web motion, the relative positions (d x1 , d x2 , d x3 , d x4 ) of the marks (202, 203, 204, 205, 206), being indicative of the relative cylindrical and transverse position of the cylinders (116, 117, 118, 119) with respect to the web (110); generating signals indicative of transitions in image intensity on the web (110) along successive lines (SCAN1, SCAN2, SCAN3) transverse to the direction of movement of the web (110); determining the distance between transitions (208, 210) in the lines, and a point (222) between the transitions; identifying pairs of transitions associated with the individual marks; determining for each individual mark (202, 203, 204, 205, 206), from pairs of transitions associated with the mark, the coordinates of the point; and adjusting the cylinders (116, 117, 118, 119) in accordance with deviations in the relative positions of the marks (202, 203, 204, 205, 206) from the predetermined values. The method of claim 6 wherein the point between the transitions is a center point of the mark (202, 203, 204, 205, 206), and the determining relative position step comprises: normalizing the center point coordinates of the marks (202, 203, 204, 205, 206) with respect to a predetermined one of the marks; and comparing the normalized center point coordinates to predetermined values. The method of claim 6 or 7, wherein the generating signals indicative of transition step comprises: sequentially scanning the image intensity in successive nominal pixels (PIXEL 1 . . . PIXEL 512) disposed along a line transverse to the direction of movement of the web (110), the movement of the web (110) causing images in successive portions of the web (110) to be detected.

Inventors: SAINIO, JEFFREY W.
Applicants: QUAD/TECH, INC.
Application year: 1987
Main classification: B41F13
IPC codes: B41F33, B41F13