Method and apparatus for controlling image data transfer in a photographic film scanner

A photographic film scanner has a line integration light sensor and a programmed controller which employs a plurality of lookup tables (LUT) sequenced by a common timer to control the timing of data collection and transfer to an asynchronously operating host computer. Delays in the transfer of image data to the host computer which exceed the light sensor line integration time can cause the integrated pixel scan information to become corrupted. Data corruption caused by delays in excess of line integration time is avoided by disabling the light sources and the related image scan operations until it is determined that prior line data transfer to the host is completed whereupon the accumulated data is collected and transferred to the host computer and normal scan operations are re-initiated. Even with the LEDs disabled, excessive build-up of dark current in the light sensors can corrupt the accumulated image information in the light sensor. This corruption is prevented by detecting the excessively long delay, flushing the corrupted data out of the light sensor and re-scanning the image line to develop a fresh line of image data for transfer to the host computer.

FIELD OF THE INVENTION
 The invention relates generally to the field of photographic film scanners
 and, more particularly, to method and apparatus for controlling image data
 collection and data transfer to a host computer.
 BACKGROUND OF THE INVENTION
 Photographic film scanners are known in which image frames on a strip of
 photographic film are scanned to convert the optical image frames into
 digital image data which can be stored and manipulated in a computer and,
 at the user's option, sent to a digital printer for generating hardcopy
 image prints. It is common in such scanners, to scan the image frame by
 transporting the film strip through an optical imaging path in which an
 exposure light source is shone through the image and focussed onto a
 linear CCD sensor to capture the image information one scan line at a
 time. The exposure light source may comprise a linear, interleaved array
 of spectrally distinct light emitting diodes (LED), for example, emitting
 in the red, blue and green spectra. In order to achieve accurate color
 rendition in the scanner it is necessary to perform a calibration of the
 LED exposure lights primarily to equalize the light outputs of the
 respective red, blue and green LED's. The analog pixel-by-pixel image
 information captured on the linear CCD light sensor must be clocked out of
 the CCD, digitized, processed and transferred to a host computer in
 synchronism with the transport motion of the film in such a manner that
 the transferred data is accurate and that no data is lost as a result of
 asynchronous operation between the scanner and the host computer. Internal
 operations of the scanner typically involve the use of separate timers to
 control the light source, film transport motor drive and data
 clocking/transfer functions, which require complex synchronizing
 provisions for control of the separate timers. Changing the scanning
 resolution complicates the control procedure as does changing the
 operating conditions of the R,B,G exposure light sources to accommodate
 for system drift and differing density characteristics among different
 film strips.
 In the above cross-referenced copending U.S. application Ser. No. (Dkt
 77989), a photographic film scanner is described that employs a programmed
 controller which operates in a manner to address the concerns just
 described. The controller is provided with a common timer and is
 programmed with a plurality of lookup tables (LUT), each LUT being
 populated with a sequence of elements defining timing of an operating
 activity of a respective one of the illuminant head light sources, the
 stepper motor and the light sensor data transfer circuits. The program
 operates to use the common timer to step synchronously through the
 elements of the LUT's to output value states from the elements of each of
 the LUT's; so as to suitably control the actuation timing of the
 respective light sources, stepper motor and data collection and transfer
 circuits. The arrangement described is a simple and convenient method and
 apparatus for control timing of critical operating functions in an image
 scanner. The use of a plurality of lookup tables provides flexible,
 independent control of the integration periods of the three different
 color planes.
 The host computer operates in an asynchronous manner relative to the timing
 operation of the film scanner. The host computer can have other tasks to
 perform that need to be completed before it can accept data from the
 scanner. In the scanner operation described above, however, the scanner is
 integrating light from the LEDs and if the host is late in accepting data
 from the scanner, and incorrect amount of light will have been collected
 and a bright line will ultimately appear in the reproduced image. There is
 therefore a need in the scanner of the type described to accommodate
 asynchronous operation of the host computer so that delays in accepting
 data from the scanner do not adversely affect the image data being
 transferred and thus do not create artifacts in the image reproduced from
 the transferred data.
 SUMMARY OF THE INVENTION
 In accordance with one aspect of the invention, therefore, there is
 provided a method of controlling image data collection and image data
 transfer from a photographic film scanner to a host computer, the film
 scanner having a line integrating image sensor and operating under the
 control of a microprocessor controller, wherein the method comprises
 providing a plurality of lookup tables (LUT) in the controller, each LUT
 populated with a sequence of elements defining timing of an operating
 activity in a respective one of (a) transfer out from the scanner of a
 line of collected image data, (b) on/off operation of one or more scanning
 exposure light sources and (c) step operation of a film transport drive
 stepper motor; using a common timer to step synchronously through the
 elements of the LUT's to output value states from the elements of each of
 the LUT's; and responding to the synchronously outputted value states from
 the LUT's to effect timing of actuation of the data transfer, LED and film
 transport drive stepper motor operations in accordance with the value
 states of the LUT elements. The invention includes determining if transfer
 of data to the host computer is delayed for a time in excess of a line
 integration period of the image sensor; and responding to the
 determination of the excess data transfer time to disable the LEDs until
 such time as the transfer of data to the host is complete.
 In another aspect of the invention, there is provided apparatus for
 controlling image data collection and image data transfer from a
 photographic film scanner to a host computer, wherein the apparatus
 comprises a film scan gate; a film transport drive stepper motor for
 advancing film through the scan gate during an image frame scan operation;
 an illuminant head having an array of spectrally separated light sources;
 a line integrating image light sensor; and light sensor data transfer
 circuits for collecting and transferring light sensor data to a host
 computer. The apparatus also includes a controller having a common timer
 and programmed with a plurality of lookup tables (LUT), each LUT populated
 with a sequence of elements defining timing of an operating activity in a
 respective one of the illuminant head light sources, the stepper motor and
 the light sensor data transfer circuits, the program operating to use the
 common timer to step synchronously through the elements of the LUT's to
 output value states from the elements of each of the LUT's, which value
 states effect timing of actuation of the data transfer, light sources and
 stepper motor operations; and wherein the program is further operative to
 determine if transfer of data to the host computer is delayed for a time
 in excess of a line integration period of the image light sensor; and
 responding to the determination of the excess data transfer time to
 disable the LEDs until such time as the transfer of data to the host is
 complete.
 In a further aspect of the invention, an improvement in the method and
 apparatus as just described is provided in which a long delay time limit
 is established that corresponds to a time in which stored image
 information in said image sensor becomes unrepresentative of pixel values
 in a scanned image line even though the LED lights have been disabled to
 suspend image light integration in the image sensor. The controller then
 determines if the excess data transfer time exceeds the long delay time
 limit; and responds to the determination of exceeding the long delay time
 limit to flush the unrepresentative stored image information from the
 image sensor before recommencing data collection and data transfer after
 the completion of transfer of the prior line of collected data.
 These and other aspects, objects, features and advantages of the present
 invention will be more clearly understood and appreciated from a review of
 the following detailed description of the preferred embodiments and
 appended claims, and by reference to the accompanying drawings.

DETAILED DESCRIPTION
 For best understanding and appreciation of the present invention, it will
 be helpful to first describe the basic operational control of a
 photographic scanner which is the subject of the above disclosed in the
 above cross-referenced copending application. In FIG. 1, a film scanner 10
 is shown schematically. A film supply cartridge 12 from which a processed
 film strip 13 extends through a film transport mechanism, comprising a
 pair of nip rollers 14a, 14b driven by a stepper motor 18, to a film
 takeup chamber 16. A dc motor 19 couples with the spool of the film supply
 cartridge to initially thrust the film strip from the cartridge to the nip
 rollers and later to drive the cartridge spool in the reverse direction in
 the course of rewinding the film back into the cartridge. The stepper
 motor 18 is coupled to the nip rollers by way of a two-speed gear drive
 mechanism 20. A dc motor 21 is connected to the gear drive mechanism to
 perform shifting between a high and low speed operations. The high speed
 operation is used for advancing the film in a forward direction between
 image frames and in the reverse direction during film rewind. The low
 speed operation is used in the forward direction during scanning of an
 image frame on the film. The scan line resolution for a particular image
 scan operation is selected by controlling the step rate of the stepper
 motor 18.
 The space between the nip rollers 14a, 14b comprises a film scan imaging
 gate 23. This scan gate accommodates an imaging channel which includes an
 illuminant head 22 and an imaging assembly 29. In a preferred embodiment
 of the invention, the illuminant head 22 comprises a linear array of
 interleaved, spectrally separated LED light sources emitting light
 respectively in the red, blue and green spectra for transmission through
 the film image frame in the scan gate. By separately controlling the ON
 times of the red, blue and green LEDs the proper amount of light for each
 color is sent through the film to achieve a balanced color image from the
 film. The imaging assembly 29 comprises a mirror 24, a focussing lens 26
 and a linear light sensor 28 for imaging the light transmitted through the
 film onto the linear light sensor. In the preferred embodiment being
 described herein, the light sensor 28 is preferably a trilinear CCD sensor
 of known construction having suitable red, blue and green filters to
 render the individual linear sensors separately responsive to the red,
 blue and green LED illuminants from the illuminant assembly.
 A programmed controller 30 is provided to control the overall operation of
 the scanner. This includes connections to each of the motors to control
 the motor functions described above. In addition, the controller 30 is
 coupled to illuminant head 22, CCD sensor 28 and, via host interface 32
 and cable 34, to a host computer 36 and operates to control the timing and
 processing of data output from the CCD sensor 28, the timing of data
 transfer to the host computer and the ON/OFF timing of the LED light
 sources in illuminant head 22. In accordance with the invention, a novel
 scanning algorithm is employed to collect the image data from the film by
 controlling CCD timing, to set the LED ON/OFF timing, the stepper motor
 timing and the timing of data transfer to the host interface, all through
 the medium of multiple software lookup tables (LUTs) operating from a
 common timing counter arrangement. Additionally, multiple LUTs can be used
 on a selective basis by the controller, again using the common timer, to
 set the step rate of the stepper motor 18 for any given image scan to
 thereby set the scan line resolution of image data for the film image
 frame being scanned.
 FIG. 2 shows, in functional block diagram form, a conventional signal
 channel employed in the scanner of FIG. 1 to perform the primary functions
 of image data collection 40, data processing 42 and data transfer 44 to a
 host computer 36, all under the control of the controller 30. As shown in
 the drawing, the data collection function 40 involves the CCD sensor 28,
 an analog signal amplifier 50 and an A/D converter 52 to convert the
 analog signal from the CCD sensor into digital data values. The data
 processing function 42 involves processing of the digital data from the
 A/D an inverter 54, gain and offset correction by units 56 and 58 and a
 linear to log conversion by unit 60. The data transfer function 44 is
 represented by unit 62 and involves transferring the collected data via
 the interface unit 32 at an appropriate time when the host computer is
 prepared to receive the data. The appropriate time is determined by what
 is known in the art as establishing a "handshake" between the computer 36
 and the controller 30 via interface 32.
 The timing diagram of FIG. 3 illustrates the timing relationships of the
 various functions described above. Pulses 70 represent the stepper motor
 timing pulses that determine the scan line resolution in the frame scan
 direction, that is, in the direction in which the film is transported
 through the frame scan gate. As will be seen, the illustrated pulses are
 for a high resolution scan (1500 pixels by 2625 scan lines). A lower scan
 line resolution would involve additional stepper motor timing pulses.
 Pulses 72, 74, 76 represent timing pulses which initiate data transfer
 from the scanner to the host computer of each of the red, blue and green
 color lines of data, respectively, clocked out from the CCD sensor 28
 ("data collection", "data processing"). Three color lines of pixel data in
 the cross scan direction correspond to a single scan line in the frame
 scan direction. The CCD phase clock waveform show the timing pulses 78
 sent to the CCD to clock out the red, blue and green linear sensors ("data
 collection"). The high states of the red LED, blue LED and green LED
 waveforms 80, 82, 84 represent the selectively variable ON times of the
 red, blue and green LED's, respectively, in the illuminant head 22.
 FIGS. 4 shows, in block diagram form, the functional operations performed
 in accordance with the invention using a common timer 90 to step through
 the data arrays of each of a plurality of LUTs, data transfer LUT 92 and
 LED LUTs 93-95, as well as one of the stepper motor LUTs 96-98, with each
 LUT operationally controlling the timing its respective operating
 function. Data transfer LUT 92 outputs the timing pulses which initiate
 the data collection, processing and transfer functions of block 100. These
 functions of block 100 correspond to the Scan Foreground Process 120 in
 the controller 30 operating program to be described subsequently in
 reference to FIG. 6. Red, blue and green ON/OFF LUTs 93-95 output timing
 pulses that set the ON/OFF states of the red, blue and green LED light
 elements 102, 104, 106 located in the illuminant head 22. A plurality of
 stepper motor LUTs 96, 97 and 98 provided, one of which is selected by the
 operating program, as represented graphically by switches 108a, 108b, to
 output timing pulses that control stepper motor drive 107 to control the
 advance of the film through the scan gate during the frame scanning
 operation and thereby control the scan line resolution of the frame scan.
 The functions of blocks 102, 104, 106 and 107 make up the Scan Interrupt
 Process 140 of the controller operating program as shown in FIG. 6.
 Referring now to FIGS. 5(a)-5(e), there are shown the data array contents
 of each of the LUTs 92-95 and the High Res. stepper motor LUT 96 of FIG.
 4. Each array is 180 elements long comprised of two repeating sets of
 three color lines (red, blue and green) of 30 elements each. The first
 element of each array is represented in the upper left comer and the last
 element (no. 180) is represented in the lower right comer. Three color
 lines make up one frame scan line and thus each LUT array is two scan
 lines long. While the invention may be practiced with LUTs that are only a
 single scan line long, a LUT of two scan lines in length is used in the
 illustrated embodiment for reasons which will be explained in more detail
 later. The timer 90 (FIG. 4) generates timing counter pulses, shown in
 FIG. 5(f), that step through all the array elements of the data timing,
 LED and stepper motor LUTS in synchronism to output function controls
 dependent on the binary values of the array at each element position.
 The data control LUT array of FIG. 5(a) contains a binary "1" value at the
 beginning of each color line to initiate the collection, processing and
 transfer to the host computer of a line of color data accumulated in the
 CCD during a previous CCD integration time period. The LED LUTs in FIGS.
 5(b)-5(d) each contain binary values that determine the ON and OFF times
 of the LED light sources in illuminant head 22. The convention for the
 binary values in these LUTs is that a "0" value corresponds to an ON
 condition of the LEDs and a "1" value corresponds to an LED OFF condition.
 It may be noted from the LED LUT arrays that they all turn on their
 respective LEDs at the first element position and at some point within the
 first 90 elements they turn off their respective LED light. The starting
 time of the integration periods for the blue and green LUTs do not line up
 with the first element of the respective LED LUT array. Total integration
 time for a particular color is the time period between data transfer
 pulses (DT Red 72, DT Blue 74 and DT Green 76, respectively). Only for the
 red channel does the turning on of the LED's align with the transfer of
 the red information to the host computer. For the blue and green channels
 there is a 1/3 and 2/3 phase shift from when the lights are turned on to
 when the data is transferred. This is acceptable, however, since the
 modulus nature of the lookup tables ensures that the total ON time needed
 for a particular color is always maintained as specified in the
 appropriate LED LUT array. The stepper motor LUT of FIG. 5(e) issues a
 step command, indicated by a binary "1" value during the course of each
 line of color integration in the CCD thereby setting the image frame's
 scan line resolution in the frame scan direction. The resolution
 represented by the six "1" elements in the LUT 96 of FIG. 5(e) corresponds
 to high resolution frame scan.
 Turning now to the program flow chart of FIG. 6, step 121 begins a scan
 process in response to each occurrence of a timer pulse 115 (FIG. 5(f)).
 The scan process comprises a Scan Foreground Process 120 and Scan
 Interrupt Process 140 which operate independently. When the scan
 foreground process begins, step 122 starts the timer that, at the
 conclusion, of each timing period runs the interrupt process for one
 complete cycle. After initiating the timer, the scan foreground process
 moves to step 123 where it remains until a "LineSemaphore=True" flag is
 set by the interrupt process. This flag indicates that it is time to
 collect and transfer a line of color data from the CCD to the host
 computer. When step 123 detects this flag, the foreground process moves to
 step 124 to clock a line of color data (red, blue or green) out of the
 appropriate CCD sensor, then to step 125 in which the data is processed
 (pixel gain, offset and log correction) and then to 126 which effects
 transfer of the data to the host computer. Step 127 determines if the
 frame scan has been completed and, if not, the process moves to step 128,
 which sets the Line Semaphore flag to "false", and then to step 129, which
 increments a color scan counter to the next color to be scanned during the
 next iteration through the foreground process. After this, the process
 returns to step 123 to await the next "LineSemaphore=True"flag. If step
 127 determines that the image frame scan is complete, the process branches
 to steps 130 and 131 which stop the scan processes until a new image frame
 scan command is received from the host computer.
 Considering now the scan interrupt process 140, each time the process is
 initiated in response to an occurrence of the timer pulse 115, step 141
 increments a control counter (modulus 180) to keep track of the element
 position within the LUT arrays. Step 142 then checks the element value in
 the Data Transfer LUT 110 and, if it is a "1", step 143 sets the
 "LineSemaphore=True" flag to enable the foreground process to start the
 data collection and transfer operation described above. If LUT 110 returns
 a "0" value, the flag setting step is bypassed. The interrupt process then
 moves through each of steps 144-146 to set the LED ON/OFF conditions in
 accordance with the element values returned from LED LUTs 111-113,
 respectively. After this, the process moves to step 147 which checks
 stepper motor LUT 114, assuming the scanner is set to high resolution
 scan, to advance the film one step each time an element value "1" is
 returned from the LUT. Following this, the process moves to step 148 which
 stops the interrupt process pending receipt of another start command in
 response to the next timer pulse 115.
 Referring now to FIGS. 7 and 8(a)-8(c), it will be recalled from the
 discussion of FIG. 4 that the scan line resolution for an image frame scan
 can be selected by merely choosing from a plurality of available stepper
 motor LUT arrays 96-98. FIG. 7 shows a chart correlating the number of
 stepper motor pulses per scan line to the corresponding image frame scan
 line resolution for an actual embodiment of the invention. FIGS. 8(a)-8(c)
 show the array contents for each of the LUTs 96-98 correponding to the
 high, medium and low frame scan line resolutions, respectively. For the
 particular embodiment disclosed herein, frame scan line resolutions of
 2625 lines (high res.), 1750 (med. res.) and 875 (low res.) are available.
 These resolutions translate to 3, 4.5 and 9 motor steps per scan line,
 respectively. Since it is not possible to have a one-half motor step
 pulse, the LUT arrays are all arranged to be two scan lines in length (180
 array elements). In this way, as seen in LUT array 97, the odd step pulse
 requirement is readily accommodated by the use of nine "1" elements spaced
 within the two scan line array of the stepper motor medium resolution LUT
 97. LUT arrays 96 and 98 simply repeat the same "1" pattern in both scan
 line segments. The pixel line scan direction is set to interpolate the
 pixels in each scan line to achieve a constant 1.75 image aspect ratio in
 the data for any scan resolution. For high resolution, there is no pixel
 interpolation since in the pixel line scan direction there are 1500 pixels
 of CCD data across the image and the ratio of 2625 to 1500 is 1.75. For
 medium resolution, the 1500 pixels is interpolated in known manner down to
 1000 pixels and, for low resolution, the pixel data is interpolated down
 to 500 pixels.
 What has been described up to this point is the basic operational control
 of a film scanner which is the subject of the above cross-referenced
 copending application. Turning now to FIG. 9. there is shown a program
 flow chart for the controller 30 which, in accordance with the present
 invention, solves the problem of transferring data from the film scanner
 10 to the host computer 36 when, due to the asynchronous operation of the
 host computer, the host is unable to accept the data from the film scanner
 at the time dictated by the data transfer timing pulse in data transfer
 LUT 92. The scanner is continuously integrating the light from the LEDs as
 dictated by the ON/OFF timing pulses in LUTs 93-95. If the host is late
 and is unable to accept a new line of data when dictated by the timing
 pulse in LUT 92, an incorrect amount of light will have been collected
 when the host later accepts the data and, in the positive image reproduced
 from such data, a dark line will appear in the image. To prevent this from
 happening, the controller program is modified as shown in FIG. 9. In all
 respects, the flow chart of FIG. 9 is the same as that of FIG. 6, except
 for the modifications now described. In the scan foreground process 120a,
 a "PriorLineCompleteFlag=True" step 132 is inserted following existing
 step 129 at the conclusion of the transfer of a line of data to the host
 computer to indicate that a line of color data has been successfully
 transferred to the host. Similarly, a new step 133 to set the
 "PriorLineCompleteFlag=False" is inserted following existing step 123 to
 indicate that the data transfer is in process and is not yet complete. In
 the scan interrupt process 140a, a query step 150 is included following
 the affirmative output of query step 142. Query step 150 responds to the
 flag setting condition at step 133 in the scan foreground process to
 indicate whether the transfer of the prior line of data has been
 completed. If so, the interrupt process proceeds with the normal LED
 ON/OFF and stepper motor advance operations to the completion of the
 interrupt cycle. If not, step 150 branches to step 151 to disable the LEDs
 and decrement the modulus 180 control counter after which the process
 moves to the interrupt cycle complete step 148.
 The operation of the program with these modifications is as follows. It
 will be assumed that data transfer has been initiated and the foreground
 process has proceeded to step 126, as described above in respect to the
 program flow chart of FIG. 6. Conventional data transfer procedure within
 step 126 involves establishing a "handshake" between the film scanner and
 the host computer for each word of data being transferred. This assures
 that the asynchronously operating host computer (relative to the scanner)
 will accept the data word. If delays are incurred, the process will remain
 in the step 126 stage until all data has been transferred. During this
 delay time, the "PriorLineCompleteFlag=False" remains set in foreground
 step 133. This being the situation, when the interrupt process determines
 from LUT 92 that it is time to begin transfer of the next line of data to
 the host, the process moves to step 150. Under normal conditions, the flag
 setting from step 132 would be true and the interrupt process would move
 from step 150 to step 143 setting the LineSemaphore to true thereby
 allowing the foreground process to begin the data transfer process.
 However, in this case, step 150 determines that the prior line data
 transfer has not been completed and branches to step 151 which turns off
 the LEDs and decrements the control counter so as to hold the counter at
 its prior count value (element position in the LUT arrays). The
 decrementing of the control counter in step 151, in effect, puts the
 entire scan process, both foreground and interrupt, on hold, despite the
 repeating occurrence of the timing pulses (FIG. 5(f)), until such time as
 the line of data transfer is completed and the
 "PriorLineCompleteFlag=True" is set in step 132. At this time, the next
 line of data is transferred to the host computer, the control counter
 resumes incrementing the position counts in the LUT arrays and the LEDs
 resume their ON or OFF condition in accordance with the timing control of
 the LED LUTs 93-95 and the stepper motor is stepped by the appropriate one
 of LUTs 96-98.
 In the operation just described, in which the LEDs are turned OFF to
 suspend light integration in the CCD and the stepper motor is inactivated
 for the duration of the delay in data transfer to the host, the delays are
 usually sufficiently short in duration that the accumulated charge values
 in the CCD light sensors are not noticeably affected by the delay period
 and the resultant data generated when the line is ultimately clocked out
 is an accurate representation of the pixel values in that line of the
 scanned image. With the LEDs in the OFF condition, the charge integration
 in the CCD sensors from the image light is stopped and the CCD charge
 values can be clocked out and used to generate the digital image data for
 the suspended image scan line. However, there is always some minute amount
 of continued charge integration that results from the known phenomenon of
 CCD operation referred to as dark current build-up. For short delays, the
 effect of dark current build-up on charge value is negligible. However,
 there may be occasions when the data transfer delays are long enough in
 duration that the charge values in the CCD sensors become adversely
 affected by excessive dark current build-up. Thus, when the long delayed
 data is finally completely transferred to the host computer, the next line
 of data to be collected from the CCD and transferred to the host will be
 bad by virtue of the build up of dark current in the CCD sensors. To guard
 against this possibility, another embodiment of the invention is employed,
 as shown in the program flow chart of FIG. 10, that operates to recognize
 the occurrence of the excessive delay, to rid the CCD/data channel of bad
 data and to recreate the line with valid data that can then be transferred
 to the host.
 The program flow chart of FIG. 10 is largely the same as that of FIG. 9
 with the exception of the modifications now described. For the modified
 program, a delay time limit is established which is empirically determined
 to correspond to a time in which stored image information in the image
 sensor becomes unrepresentative of pixel values in a scanned image line.
 With an excessively long delay in data transfer for past line scan, the
 sensor pixel values for the next line of data become unrepresentative of
 the image pixel values because of dark current build-up on the charge
 values in the CCD sensors. To implement this long delay tracking in the
 program, a delay counter is employed to track the number of counts in
 timer 90 occurring after determination that the transfer of data for the
 current line has been delayed (steps 142 and 150). This corresponds to the
 number of times of short delay cycles that the interrupt process has
 cycled through to cause step 151 to decrement the control counter pending
 notification at step 150 that transfer of the prior line of data has been
 completed. In an actual embodiment, a delay of twenty cycles through the
 interrupt process is set as the long delay limit.
 In the interrupt process 140b, step 152 is inserted after step 143 "Set
 LineSemphore=True" to reset the delay counter to zero each time that step
 150 determines that the prior line data transfer operation has been
 completed. This begins the excess delay count. Each time the interrupt
 process encounters a data transfer delay in step 126 that results in step
 151 disabling the LEDs and decrementing the control counter in step 151,
 as previously described in regard to the short delay process of FIG. 9.
 The interrupt process now moves to step 153 which increments the long
 delay counter and then to query step 154 which determines if the delay
 counter exceeds the predetermined long delay limit described above. As
 long as the delay is shorter than the long delay limit, the interrupt
 cycle then terminates at step 148. If, however, query 154 determines that
 the LongDelay limit is exceeded, the process moves to step 155 which sets
 a "FlushLineCnt to a predetermined count which, in the case of the
 illustrated embodiment, is a count of 9. Since, by definition, a delay
 that exceeds the predetermined long delay limit will likely result in bad
 data due to the excess dark current charge build-up in the CCD sensors, it
 is necessary to flush the charges out of the three CCD lines and to return
 the CCD to the color line that was to be have been clocked out but for the
 bad data that would result. Thus at least three lines of charge must be
 flushed out of the CCD. To ensure that the CCD is fully restored to its
 normal state, it is preferable to cycle through several flush cycles of
 three lines each and, thus, nine lines (three full flush cycles) are
 employed in the preferred embodiment. It is apparent that the addition of
 steps 153-155 operate to set the flush line counter so as to establish the
 initiation of the CCD line flush process in the foreground data transfer
 process 120b.
 In the foreground process 120b, a query step 134 is inserted to track the
 status of the FlushLineCnt. If it is greater than zero, indicating that
 data readout is in the flush line mode, the process branches to step 135
 to decrement the FlushLineCnt value before proceeding directly to step 128
 and the remainder of the foreground process. The effect of this is to
 bypass the data processing step 125 and data transfer to host step 126. In
 this way the CCD data is routinely clocked out from the CCD in normal
 manner during each cycle through the foreground process but the data is
 discarded without being transferred to the host computer. During the line
 flushing operation, foreground process step 132 sets the
 "PriorLineComplete Flag =True" each time through even though the data is
 ignored. This allows the interrupt process to move normally through the
 LED ON/OFF steps 144-146. However, a new step 156 is inserted after the
 LED steps to determine if the flush process is in progress by checking the
 status of the flush counter. Normally, the result would be negative and
 the stepper motor would be advanced, as determined by the appropriate
 stepper motor LUT. However, if the flush count is greater than "0", step
 156 branches directly to the interrupt complete step 148. The effect of
 this is to ensure that the stepper motor does not advance the film during
 the CCD line flushing operation so that when collection of good data is
 eventually reinitiated, the image scan remains the same as the one for
 which the bad data was discarded. Once step 134 determines that the flush
 counter has decremented to zero indicating the end of the flush process,
 the overall scan process reverts to normal operation beginning with
 collection and transfer of data to the host at the same line for which the
 data had previously been corrupted due to the excessive dark current
 build-up.
 It will be appreciated that what has been described is a simple and
 convenient method and apparatus for control timing of data transfer
 between a film scanner and a host computer operating asynchronously of the
 film scanner, such that the pixel image data being transferred is not
 adversely affected by data transfer delays caused by the asynchronous
 operation of the host computer.
 The invention has been described in detail with particular reference to
 certain preferred embodiments thereof, but it will be understood that
 variations and modifications can be effected within the spirit and scope
 of the invention. For example, the LUT-based operating program is
 described as being resident in the film scanner internal controller. It
 will be appreciated that the program may equally well comprise an
 application program resident entirely on the host computer to which the
 scanner is connected or divided between the host computer and a controller
 internal to the film scanner and the term microprocessor controller used
 herein is intended to refer to either or both an internal scanner
 controller and a host computer.

TS LIST
 10 film scanner
 12 film cartridge
 13 processed film strip
 14a,b nip rollers
 16 film takeup chamber
 18 stepper motor
 19 dc motor
 20 two speed gear drive mechanism
 21 dc motor
 22 illuminant head
 23 imaging gate
 24 mirror
 26 focussing lens
 28 linear light sensor
 29 imaging assembly
 30 controller
 32 host interface
 34 cable
 36 host computer
 50 amplifier
 52 A/D converter
 54 inverter
 56 gain corrector
 58 offset corrector
 60 linear to log converter
 90 timer
 92 data transfer LUT
 93-95 LED LUTs
 96-98 stepper motor LUTs
 100 data transfer block
 102 red LED driver
 104 blue LED driver
 106 green LED driver
 107 stepper motor driver
 120, 120a, 120b scan foreground processes
 140, 140a, 140b scan interrupt processes