IMPROVED IMAGE SCANNING APPARATUS AND METHOD

Abstract: Image scanning apparatus and method for scanning a capture image uses sensor means comprising an NxM array of image sensors for sensing a subset of said capture image; transport means for moving said capture image relative to said sensor means; and control means for co-ordinating said sensor means with said transport means; whereby said control means can provide a digital representation of said capture image.

Description: Title of Invention: Improved Image Scanning Apparatus and Method Technical Field The present invention relates to an improved image scanning apparatus and method and relates particularly but not exclusively to an improved image scanning apparatus and method providing an effective technique of increasing hardware resolution and or increasing scan rate. Background Art: It is well known to provide flatbed-type scanners that scan an image using conventional line scan techniques. Such scanners are usually limited to a relatively low resolution of typically 600dpi. Large format drawings (eg. A0 format) cannot be scanned with such scanners but usually instead require industrial scanners. Industrial scanners typically have a similarly poor resolution and may provide only 256 grayscale levels. Furthermore, the scan rate of such industrial scanners is typically limited to a rate of around six seconds per frame. The present invention attempts to provide an improved image scanning apparatus and method that alleviates one or more of the problems associated with the prior art. In particular, the present invention attempts to provide an improved image scanning apparatus and method with improved hardware resolution and/or scan rate. Other advantages associated with the present invention will become apparent from a reading of the following description. Summary of the Invention: According to a first aspect of the present invention there is provided an image scanning method for producing a digital representation of a scanned capture image, the method including: providing a capture image; sensing a plurality of subsets of said capture image using a sensor means comprising a corresponding plurality of NxM arrays of image sensors to produce a digital representation of each of the subsets of the capture image; and moving said capture image relative to said sensor means; whereby said step of sensing and transporting are co-ordinated to provide a digital representation of said capture image by combining the digital representations of each of the subsets of the capture image. According to a second aspect of the present invention there is provided an image scanning apparatus including: a capture image; sensor means comprising a plurality of NxM arrays of image sensors to produce digital representations of each of a corresponding plurality of subsets of the capture image; transport means for moving said capture image relative to said sensor means; and control means for co-ordinating said sensor means with said transport means; whereby said step of sensing and transporting are co-ordinated to provide a digital representation of said capture image by combining the digital representations of each of the subsets of the capture image. Preferred Aspects of the Invention: There are two basic alternate aspects of the present invention. There may optionally be provided an image source and a projection means for providing a capture image by projection of said image source instead of directly providing said capture image on a fixed media such as paper. When optionally providing an image source and a projection means for providing a capture image, said image source is typically a microfiche media or similar film based media such as 35mm film, etc. The projection means may be provided by way of an optical projection assembly in combination with the screen whereby said capture image can be provided by front or rear projection or in any other suitable manner. The sensor means generally comprises a NxM array of image sensors. In certain applications it is preferred that said NxM array of image sensors is a lxM or Nxl array of image sensors whereby a number of linearly-oriented image sensors are provided to piecewise scan said capture image by successively sensing subsets of said capture image. In other applications, it is preferred that a 2-dimensional NxM array of image sensors is provided whereby the number of subsets of said capture image required to be sensed is thereby reduced, thus increasing the effective scan rate of said capture image. The transport means may be provided by any number of suitable conventional techniques. It is preferred that the transport means comprise a number of high precision stepper motors able to move said capture image relative to said sensor means within a one-pixel accuracy for the desired resolution. In this respect, it is strongly preferred that said transport means is directly connected to said capture image or, where used, said image source rather than said sensor means in order to obtain best results. Furthermore, transport means can also be provided by the use of one or more mirrors or other suitable means, to sequentially sense subsets of the capture image. Alternatively, transport means can be provided by a combination of mirrors and motors. The control means preferably consists of two components, namely a transport control means and a sensor control means. These two components are integrated in the control means which is provided to coordinate the actions of said transport means and said sensor means so that it can be ensured that all subsets of said capture image are sensed and a digital representation of the entire capture image can be provided by "stitching together' the representations of the various subsets that comprise the said capture image. In the course of stitching the subsets together, it is preferred that corresponding image points in overlapping adjacent subsets be identified. The subsets are then stitched together at locations which include the thus identified common points. It is preferred that such corresponding image points be identified automatically, preferably under the control of software. Brief Description of the Drawing: Figure 1 is a schematic diagram representing an apparatus in accordance with one preferred embodiment of the present invention in which an image source and a projection means is optionally provided. Description of Preferred Embodiments: Figure 1 shows a preferred apparatus in accordance with an embodiment of the present invention. In this embodiment there is optionally provided an image source together with a projection means for providing a capture image. In this case the transport means 3 is connected with the image source 1. An image source 1 is illuminated by a light source and projected by means of a projection means. It is preferred that the projection means consist of an optical projection assembly 5 together with a screen 7. The projection protects the image source 1 by way of front or rear projection, or in any other suitable manner. Sensor means is provided by way of a multi-electronic sensor array 6, which is preferably a linear row of CCD area elements. Alternatively, a single CCD area element can be used. A control means consisting of image source transport CPU 4 and video control CPU 2 linked by a CPU synchronisation link 8 connects to image transport assembly 3 and multi-electronic sensor array 6. The control means synchronises the image transport assembly 3 to move the capture image by a predetermined amount in constant with the function of the multi-electronic sensor array 6 so that subsets of the capture image can be progressively sensed to thereby scan the entire capture image. The capture image so scanned is recorded under direction of the control means. At the completion of sensing each subset of the capture image 9, the CPU synchronisation link 8 signals that the sensing by the multi-electronic array 6 is complete and signals that the sensing of the next subset is ready to occur. The image source transport CPU 4 directs the image transport assembly 3 to advance the image source so that the next appropriate subset of the capture 9 can be sensed by the multi-electronic array 6. This continues until all subsets of the capture image 9 are sensed by the multi-electronic array 6 and a digital representation of the capture image 9 is recorded. The image transport assembly 3 must be of high precision and be capable of advancing the image source 1 by a precise amount so that the successively sensed subsets of the capture image 9 are precisely aligned thus providing a faithful digital representation of the capture image 9. Accordingly, for satisfactory results, it is preferred that the precision of the image transport assembly 3 be such that it can advance the image source 1 /capture image 9 to within the precision of 1 pixel in terms of the resolution provided by the multi-electronic sensor array 6. Such precision mechanisms are known and can be provided by conventional technology. The image source 1 may typically be microfiche photographic film such as 35mm or 16mm film or any other image media suitable for use with an available projection means. Alternatively, a capture image may be provided in any other way such as by directly providing a paper-based image or projecting a capture image with some other projection means such as electronically-sourced projection. The projection means may be provided by an optical projection assembly 5 and screen 7. This can be used in combination with an image source 1 from which the capture image 9 is derived. A screen 7 may be provided for front or back projection or as a position for other image transfer technology such as aerial transfer techniques. Typically the projection means is used to magnify a relatively small image source 1 up to the required size for capture according to the apparatus or method of preferred embodiments of the present invention. This is desirable so that the hardware resolution of the resulting digital representation can be increased accordingly. A transport means is provided by the image transport assembly 3 in the illustrated preferred embodiment. The image transport assembly 3 moves the multi- electronic sensor array 6 relative to the capture image 9. The image transport assembly 3 contains all the necessary hardware and motors necessary to move the image source 1 a required distance to complete the scanning process of the capture image 9. In other embodiments where an image source 1 and a projection means are not provided, it is preferred that transport means are coupled directly with a capture image 9 or may otherwise control the position of the capture image 9 relative to a sensor means. Otherwise the transport means may be coupled with the sensing means, in this case the multi-electronic sensor array 6. However, this is generally undesirable as best results are obtained when the transport means do not directly engage the sensor means. This is because any mechanically interference generated by the transport means may degrade the results achieved by disturbing the sensing means. This is particularly so where an image source 1 is provided and a projection means is used to greatly magnify the image source 1 to provide a larger capture image 9. In this case, mechanical vibration of the transport means has less effect when coupled with the image source 1 than with the sensor means 6. The image source transport CPU 4 functions as the main motor control system that receives initiating signals, preforms the metered motion control and transmits the "motion complete" signal necessary to allow the next subset of electronic capture to occur. The video control CPU 2 controls the operation of the multi-electronic sensor array 6 in tandem with the image source transport CPU 4 by way of the CPU synchronisation link 8. In this respect the CPU synchronisation link 8 is the link between the feedback forward and back loop for a closed control system that coordinates the image capture and image transport operation. In combination, the image source transport CPU 4, and the video control CPU 2 connected by the CPU synchronisation link 8 functions as the control means integrating the transport means and sensing means. Corresponding image points in overlapping horizonatlly adjacent subsets of the capture image are also identified by operation of the video control CPU 2. It is also preferred that the merging of vertically adjacent subsets of the capture image takes place under the control of software. Appendix 1 lists a suitable source code module for calibration and merging of such vertical subsets. The above described embodiments of the present invention address the problems associated with the prior art image scanning apparatus and methods. In particular, embodiments of the present invention address the problems of restricted hardware resolution and restricted scan rate by attempting to provide an apparatus and method with improved hardware resolution and effective scan rate. This is attempted by providing by sequentially scanning subsets that comprise a capture image, as well as by providing a number of lower cost CCD area scanners. By contrast, the prior art teaches to increase hardware resolution by providing a CCD line scanner of increasing pixel discrimination. This is not cost effective and does not provide a scalable solution. Furthermore, the same approach is also responsible for the scan rate bottleneck associated with prior art systems. The present invention attempts to address this speed bottleneck by using a number of area scanners in parallel. Speed can be further increased by sacrificing hardware resolution, but it is more desirable to increase effective scan rate by providing faster transport means that maintain required precision. If rapid-response high- precision transport means are used, the effective scan rate approaches that limited by the sensing rate of the sensing means, possibly 20 frames per second or higher. It is understood that the above described embodiments of the present invention do not limit the scope of the present invention but are merely indicative of the nature of the present invention. Various modifications may be made to the above embodiments as would readily occur to a person skilled in the art. The scope of the present invention extends to all such modifications as would be clear to a person skilled in the relevant art. Appendix 1 unit Main; interface uses Windows, SysUtils, Classes, Graphics, Forms, Controls, Menus, StdCtrls, Dialogs, Buttons, Messages, ExtCtrls, ComCtrls, LeadDef ; type TMainFor = class (TFor ) MainMenul : TMainMenu; Filel: TMenuItem; FileNewItem: TMenuItem; FileOpenlte : TMenuItem; FileCloseltem: TMenuItem; W ndowl : TMenuItem; Helpl: TMenuItem; Nl: TMenuItem; FileExitltem: TMenuItem; HelpAboutltem: TMenuItem; OpenDialog: TOpenDialog; FileSaveltem: TMenuItem; FileSaveAsItem: TMenuItem; Editl : TMenuItem; Cutlte : TMenuItem; Copyltem: TMenuItem; Pasteltem: TMenuItem; SpeedPanel: TPanel; OpenBtn: TSpeedButton; SaveBtn: TSpeedButton; CutBtn: TSpeedButton; CopyBtn: TSpeedButton; PasteBtn: TSpeedButton; Ex tBtn: TSpeedButton; StatusBar: TStatusBar; SaveD alog: TSaveDialog; Imagel: TMenuItem; Sharpenl: TMenuItem; Medianl : TMenuItem; N2 : TMenuItem; BatchEditl: TMenuItem; TIFFJoml: TMenuItem; EdgeDetectl: TMenuItem; AutoTriml: TMenuItem; Originall: TMenuItem; Zoomln: TMenuItem; ZoomOut: TMenuItem; Shearl: TMenuItem; Invertl: TMenuItem; Despecklel: TMenuItem; Rotatel: TMenuItem; Edιt3: TEdit; Edιt2: TEdit; cal bratel: TMenuItem; Tπml: TMenuItem; Label1: TLabel; Label2: TLabel; Edιt4: TEdit; procedure FormCreate (Sender : TOb * ject) ; procedure FileNewItemClic (Sender : TOb * ject) ; procedure UpdateMenuItems (Sender : TOb * ject) ; procedure FileCloseltemClick (Sender : TOb * ject) ; procedure FileOpenltemClick (Sender : TOb * ject) ; procedure FileExitltemCl ck (Sender : TObject) ; procedure FileSaveltemClick (Sender : TOb * ject) ; procedure FileSaveAsItemClick (Sender : TOb ect) ; procedure CutltemClick (Sender : TObiect); procedure CopyltemClick (Sender : TObject) ; procedure PasteltemCl ck (Sender : TObject) ; procedure FormDestroy (Sender : TObject) ; procedure HelpAboutltemClick (Sender : TObject) ; procedure SharpenlClick (Sender : TOb * ect) ; procedure MedianlClick (Sender : TObject) ; procedure BatchEditlClick (Sender : TObject) ; procedure TIFFJomlClick (Sender : TObject) ; procedure EdgeDetectlClick (Sender : TOb * ject) ; procedure AutoTrimlClick (Sender : TObject) ; procedure ZoomlnClick (Sender : TObject) ; procedure ZoomOutClick (Sender : TObject) ; procedure OrigmallClick (Sender : TObiect) ; procedure FormMouseMove (Sender : TOb * ject; Shift: TShiftState; X, Y: Integer) ; procedure SpeedPanelMouseMove (Sender : TObject; Shift: TShiftState; X, Y: Integer) ; procedure ShearlClick (Sender : T0b * ject) ; procedure InvertlClick (Sender : TObject) ; procedure DespecklelClick (Sender : TObject) ; procedure RotatelClick (Sender : TObject) ; procedure calibratelClick (Sender : TObject) ; procedure TπmlClick (Sender : TObject) ; private { Private declarations } procedure CreateMDIChild (const Name: string); procedure ShowHmt (Sender : TObject) ; public { Public declarations } //ZoomFactor : Integer- end; var MamForm: TMamForm; BatchSel , TIFFJom : Boolean ; implementation uses ChildWm , About , Batch ; { $R * . DFM } procedure TMamForm. FormCreate (Sender : TOb * ject) , var Child : TPict; begin Application. OnHint := ShowHmt; Screen. OnActiveFormChange := UpdateMenuIterns; TIFFJom := False; end; procedure TMamForm. ShowHmt (Sender : TOb * ]ect); begin StatusBar .SimpleText := Application. Hint; end; procedure TMamForm. CreateMDIChild (const ame: string); var Child: TPict; begin { create a new MDI child window } Child := * = TPict. Create (Application) ; Child. Caption := Name; end; procedure TMamForm. FileNewItemClick (Sender : TObiect); begin CreateMDIChild ( 'NONAME' + IntToStr (MDICh ldCount + 1) ) ; end; procedure TMamForm. FileOpenltemClick (Sender : TOb * ject) ; begin if OpenDialog. Execute then begin BatchSel := False; Screen. Cursor := crHourGlass; CreateMDIChild (OpenDialog. FileName) ; Screen. Cursor := crDefault; end; end; procedure TMamForm. FileCloseltemClick (Sender : TObiect); begin if ActiveMDIChild <> nil then ActiveMDIChild. Close; end; procedure TMamForm. FileSaveltemClick (Sender : TObiect); begin { save current file (ActiveMDIChild points to the window) } end; procedure TMamForm. FileSaveAsItemClick (Sender : TOb-ject) ; begin ιf( ActiveMDIChild <> nil ) AND (SaveDiaiog . Execute) then TPict (ActiveMDIChild) .Leadl.Save (SaveDiaiog. Filename, FILE TIF PACKBITS, 8, QFACTOR PQ2 , False); // TPict (ActiveMDIChild) . eadl . Save ( SaveDiaiog . ilename, FILE_BMP, 8, QFACTOR_PQ2, False); { save current file under new name ϊ end; procedure TMamForm. FileExitltemClick (Sender : TOb * ject) ; begin Close- end; procedure TMamForm. CutltemClick (Sender : TOb * ject); begin {cut selection to clipboard} end; procedure TMamForm. CopyltemCl ck (Sender : TObject); begin {copy selection to clipboard} Screen. Cursor := crHourglass; if TPict (ActiveMDIChild) .Leadl. Copy (COPY_EMPTY + COPY_DIB - * - COPY_PALETTE) <> 0 then MessageDlg (' Error copying to clipboard', mtError, [mbOk] , On ¬ screen. Cursor := crDefault; end; procedure TMamForm. PasteltemClick (Sender : TOb * ject); var Child: TPict; nret: smallmt; begin { create a new MDI child window } Screen. Cursor := crHourglass; // if HiddenLead. Paste (PASTE_ISREADY) <> 0 then // begin Child := TPict. Create (Application) ; Child. Caption := 'Clipboard image'; if Child. Leadl. Paste (0) <> 0 then Child. Close; // else // Child. FormResize (Sender) ; // end; Screen. Cursor := crDefault; end; procedure TMamForm. UpdateMenuItems (Sender : TObject) begin FileCloseltem. Enabled : * = MDIChildCount > 0; FileSaveltem. Enabled := MDIChildCount > 0; FileSaveAsItem. Enabled := MDIChildCount > 0; Cutltem. Enabled := MDIChildCount > 0; Copyltem. Enabled : * = MDIChildCount > 0; Pasteltem. Enabled : = MDIChildCount > 0; SaveBtn. Enabled : = MDIChildCount > 0; CutBtn. Enabled := MDIChildCount > 0; CopyBtn. Enabled := MDIChildCount > 0; PasteBtn. Enabled := MDIChildCount > 0; ZoomOut. Enabled := (MDIChildCount > 0) and (TPict (ActiveMDIChild) .ZoomFactor <> 25); Zoomln. Enabled := (MDIChildCount > 0) and (TPict (ActiveMDIChild) .ZoomFactor <> 400); end; procedure TMamForm. FormDestroy (Sender : TObject) ; begin Screen. OnActiveFormChange := nil; end; procedure TMamForm. HelpAboutltemClick (Sender : TOb * ject) ; begin AboutBox . ShowModal ; end; procedure TMamForm. SharpenlClick (Sender : TObiect) ; begin Screen. Cursor := crHourGlass; TPict (ActiveMDIChild) . Leadl . Sharpen ( 500 ) ; Screen. Cursor := crDefault; end; procedure TMamForm . MedianlClick ( Sender : TOb * j ect ) ; begin Screen. Cursor := crHourGlass; TPict (ActiveMDIChild) . Leadl .Median (5) ; Screen. Cursor := crDefault; end; procedure TMamForm. BatchEditlClick (Sender : TObject) ; begin BatchEdit . Show; end; procedure TMamForm. EdgeDetectlClick (Sender : TOb * ject) ; begin Screen. Cursor := crHourGlass; TPict (ActiveMDIChild) . Leadl . SpatialFilter (FLT_LAPLACE_DIAG) ; Screen. Cursor := crDefault; end; procedure TMamForm.AutoTπmlClick (Sender : TObiect); var Child : TPict; NameOfFile : TFilename; begin Screen. Cursor := crHourGlass; TPict (ActiveMDIChild) . Leadl .AutoTrim ( 100 ) ; TPict (ActiveMDIChild) .ClientWidth := TPict (ActiveMDIChild) .Leadl .Width; TPict (ActiveMDIChild) . ClientHeight TPict (ActiveMDIChild) . Leadl . Height; Screen. Cursor := crDefault; end; procedure TMamForm. ZoomlnClick (Sender : TOb * ject; begin case TPict (ActiveMDIChild) . ZoomFactor of 20 begin TPict (ActiveMDIChild) . ZoomFactor := 25; ZoomOut . Enabled := True; end; 25 TPict (ActiveMDIChild) . ZoomFactor : := 33; 33 TPict (ActiveMDIChild) . ZoomFactor : := 50; 50 TPict (ActiveMDIChild) . ZoomFactor : : * = 100 100 TPict (ActiveMDIChild) . ZoomFactor : ;= 200 200 TPict (ActiveMDIChild) . ZoomFactor : := 300 300 begin TPict (ActiveMDIChild) . ZoomFactor := 40 Zoomln . Enabled False; end; end; TPict (ActiveMDIChild) .Leadl .AutoRepamt := False; { eliminate the double repaint } TPict (ActiveMDIChild) . Leadl . SetDstRect (TPict (ActiveMDIChild) . Leadl . Ds tLeft, TPict (ActiveMDIChild) .Leadl .DstTop, TPict (ActiveMDIChild) . Leadl . BitmapWidth * TPict (ActiveMDIChild) .ZoomFactor / 100, TPict (ActiveMDIChild) . Leadl . BitmapHeight * TPict (ActiveMDIChild) .ZoomFactor / 100); TPict (ActiveMDIChild) . Leadl . SetDstClipRect (TPict (ActiveMDIChild) . Lead l.DstLeft, TPict (ActiveMDIChild) . Leadl . DstTop, TPict (ActiveMDIChild) . Leadl . DstWidth, TPict (ActiveMDIChild) . Leadl . DstHeight) ; TPict (ActiveMDIChild) .Leadl.AutoRepamt := true; TPict (ActiveMDIChild) .ClientHeight := Round (TPict (ActiveMDIChild) . Leadl . DstHeight) ; TPict (ActiveMDIChild) .ClientWidth := Round (TPict (ActiveMDIChild) . Leadl . DstWidth) ; TPict (ActiveMDIChild) .Leadl. idth := Round (TPict (ActiveMDIChild) . Leadl . DstWidth) ; TPict (ActiveMDIChild) . Leadl . Height : = Round (TPict (ActiveMDIChild) . Leadl . DstHeight ) ; end; procedure TMamForm. ZoomOutClick (Sender : TOb * ject) ; begin case TPict (ActiveMDIChild) . ZoomFactor of 25 : begin TPict (ActiveMDIChild) .ZoomFactor := 20; ZoomOut .Enabled := False; end; 33 : TPict (ActiveMDIChild) ZoomFactor : = 25; 50 ; TPict (ActiveMDIChild) ZoomFactor : = 33; 100 TPict (ActiveMDIChild) ZoomFactor : = 50; 200 TPict (ActiveMDIChild) ZoomFactor : = 100; 300 TPict (ActiveMDIChild) ZoomFactor : = 200; 400 begin TPict (ActiveMDIChild) . ZoomFactor := 300; Zoomln. Enabled := True; end; end; TPict (ActiveMDIChild) . Leadl .AutoRepamt := false; { eliminate the double repaint } TPict (ActiveMDIChild) . Leadl . SetDstRect (TPict (ActiveMDIChild) . Leadl . Ds tLeft, TPict (ActiveMDIChild) . Leadl . DstTop, TPict (ActiveMDIChild) . Leadl . BitmapWidth * TPict (ActiveMDIChild) .ZoomFactor / 100, TPict (ActiveMDIChild) . Leadl . BitmapHeight * TPict (ActiveMDIChild) .ZoomFactor / 100); TPict (ActiveMDIChild) . Leadl . SetDstClipRect (TPict (ActiveMDIChild) . Lead l.DstLeft, TPict (ActiveMDIChild) . Leadl . DstTop, TPict (ActiveMDIChild) . Leadl . DstWidth, TPict (ActiveMDIChild) . Leadl . DstHeight) ; TPict (ActiveMDIChild) .Leadl .AutoRepamt := true; TPict (ActiveMDIChild) .ClientHeight := Round (TPict (ActiveMDIChild) . Leadl .DstHeight) ; TPict (ActiveMDIChild) .ClientWidth := Round (TPict (ActiveMDIChild) . Leadl . DstWidth) ; TPict (ActiveMDIChild) .Leadl. Width := Round (TPict (ActiveMDIChild) . Leadl . DstWidth) ; TPict (ActiveMDIChild) . Leadl . Height := Round (TPict (ActiveMDIChild) . Leadl . DstHeight) ; end; procedure TMamForm. Orig allClick (Sender : TOb * ject) begin TPict (ActiveMDIChild) .ZoomFactor := 100; TPict (ActiveMDIChild) .Leadl .AutoRepamt := false; eliminate the double repaint } TPict (ActiveMDIChild) . Leadl . SetDstRect (TPict (ActiveMDIChild) , Leadl. Ds tLeft, TPict (ActiveMDIChild) . Leadl . DstTop, TPict (ActiveMDIChild) . Leadl . BitmapWidth * TPict (ActiveMDIChild) .ZoomFactor / 100, TPict (ActiveMDIChild) . Leadl . BitmapHeight * TPict (ActiveMDIChild) .ZoomFactor / 100); TPict (ActiveMDIChild) . Leadl . SetDstClipRect (TPict (ActiveMDIChild) . Lead l.DstLeft, TPict (ActiveMDIChild) . Leadl . DstTop, TPict (ActiveMDIChild) . Leadl . DstWidth, TPict (ActiveMDIChild) . Leadl . DstHeight ) ; TPict (ActiveMDIChild) .Leadl .AutoRepamt : = true; TPict (ActiveMDIChild) .ClientHeight := Round (TPict (ActiveMDIChild) . Leadl .DstHeight) ; TPict (ActiveMDIChild) .ClientWidth := Round (TPict (ActiveMDIChild) .Leadl .DstWidth) ; TPict (ActiveMDIChild) .Leadl. idth := Round (TPict (ActiveMDIChild) . Leadl . DstWidth) ; TPict (ActiveMDIChild) . Leadl . Height : = Roun (TPict (ActiveMDIChild) . Leadl .DstHeight) ; end; procedure TMamForm. FormMouseMove (Sender : TObiect; Shift: TShiftState; X, Y: Integer) ; begin Screen. Cursor := crDefault; end; procedure TMamForm. SpeedPanelMouseMove (Sender : TObiect; Shift: TShiftState; X, Y: Integer); begin Screen. Cursor := crDefault; end; procedure TMamForm. ShearlClick (Sender : TObiect); begin Screen. Cursor := crHourGlass; TPict (ActiveMDIChild) . Leadl . Shear (-150, True, RGB (255, 255,255) ) ; TPict (ActiveMDIChild) . Leadl . ForceRepamt ; Screen. Cursor := crDefault; end; procedure TMamForm. InvertlClick (Sender : TObiect*, begin Screen. Cursor := crHourGlass; TPict (ActiveMDIChild) . Leadl . Invert; //TPict (ActiveMDIChild) . Leadl . Rotate (-9000, True, RGB (255, 255, 255) ) ; TPict (ActiveMDIChild) .Leadl.AutoSetRects := True; {Make sure the display rectangles are adjusted} Screen. Cursor := crDefault; end; procedure TMamForm. DespecklelClick ( Sender : TObi ect ; , begin Screen. Cursor := crHourGlass; TPict (ActiveMDIChild) . Leadl . Despeckle ; TPict (ActiveMDIChild) .Leadl . ForceRepamt; Screen. Cursor := crDefault; end; procedure TMamForm . Rotate lClick ( Sender : TObi ect ) ; begin Screen. Cursor := crHourGlass; TPict (ActiveMDIChild) .Leadl .Rotate (-9000, True, RGB (255, 255, 255) ) ; TPict (ActiveMDIChild) .Leadl.AutoSetRects := True; {Make sure the display rectangles are adjusted} Screen. Cursor := crDefault; end; procedure TMamForm. TIFFJomlClick (Sender : TObiect); var xVal, yVal, x, y, loop, loop2, modVal, TifsPerPage : integer; xOff, yOff : integer; namel : TFilename; Child : TPict; xStnng, yStr g : string; LogFile : TextFile; begin Ass gnFile (LogFile, ' c: \leadtool\log.txt ' ) ; Reset (LogFile) ; Readln (LogFile, xStnng) ; Readln (LogFile, yStrmg); CloseFile (LogFile) ; //xOff := 56; xOff := StrToInt (xStnng) ; //yOff := 185; yOff := StrToInt (yStrmg) ; loop2 := 0; X := 4297; Y := 460; TIFFJoin := True; if Edιt2.Text = ' * then else Fname := Edιt2.Text; if Edιt3.Text = ' ' then else NofFiles := StrToInt (Edιt3.Text) ; if Edιt4.Text = ' ' then else TifsPerPage := StrToInt (Edιt4.Text) ; for loop : = 0 to NofFιles-1 do begin case loop of 0..9 : FName2 := ' c: \LeadTool\ ' + FName + '00' + IntToStr (loop) + '.tif ; 10..99 : FName2 := ' c: \LeadTool\ ' + FName + '0' + IntToStr (loop) + '.tif; else FName2 := ' c: \LeadTool\ ' + FName + IntToStr (loop) + ' .tif '; end; modVal := (loop+1) mod (TifsPerPage) ; case modVal of 1 : begin xVal := 1; yVal := 1; loop2 := loop2 + 1; namel := ' c: \leadtool\ ' + Fname + '_' + IntToStr (loop2) + ' .tif ; CreateMDIChild (namel) ; TPict (ActiveMDIChild) .Leadl .CreateBitmap (X, Y*TιfsPerPage, 0); TPict (ActiveMDIChild) .Leadl.AutoSetRects := False; TPict (ActiveMDIChild) .ClientHeight := TPict (ActiveMDIChild) .Leadl .Height; TPict (ActiveMDIChild) .ClientWidth :=TPιct (ActiveMDIChild) . Leadl . idth; TPict (ActiveMDIChild) .Lead2. Load (FName2, 0, 0, 1) ; TPict (ActiveMDIChild) .Leadl. Combine (xVal, yVal, X , Y*TιfsPerPage, TPict (ActiveMDIChild) .Lead2.Bitmap, 0, 0, CB_OP_ADD or CB_DST_0 ) ; end; 2..32: begin xVal := xVal - xOff; yVal := Y* (modVal-1) + 1 - yOff* (modVal-1) ; TPict (ActiveMDIChild) . ead2. Load (FName2, 0, 0, 1) ; TPict (ActiveMDIChild) .Leadl. Combine (xVal, YVal, X , Y*TιfsPerPage, TPict (ActiveMDIChild) . Lead2.Bitmap, 0, 0, CB_OP_ADD or CB_DST_0) ; end; 0 : begin xVal := xVal - xOff; yVal := Y* (modVal-1) + 1 - yOff* (modVal-1) ; TPict (ActiveMDIChild) . Lead2. Load (FName2, 0, 0, 1) ; TPict (ActiveMDIChild) .Leadl. Combine (xVal, YVal, X , Y*TιfsPerPage, TPict (ActiveMDIChild) .Lead2.Bitmap, 0, 0, CB_OP_ADD or CB_DST_0) ; if (modVal mod TifsPerPage) = 0 then begin {TPict (ActiveMDIChild) .Leadl . Shear (-150, True, RGB (0,0,0) TPict (ActiveMDIChild) .Leadl . Invert; TPict (ActiveMDIChild) .Leadl .Rotate (-9000, True, RGB (0,0,0)) TPict (ActiveMDIChild) . Leadl .AutoTrim ( 10) ; } TPict (ActiveMDIChild) .Leadl. AutoSetRects := True; //Make sure the display rectangles are ad usted TPict (ActiveMDIChild) .Leadl. Save (namel, FILE_TIF_PACKBITS, 8, QFACTOR_PQ2, False); //ActiveMDIChild. Close; TPict (ActiveMDIChild) .Leadl.AutoSetRects := False; end; end; end; // TPict (ActiveMDIChild) . Leadl . ForceRepamt; end; end; procedure TMamForm . calibratelClick ( Sender : TObj ect ) var x, y : integer; begin X := 4297; Y := 460; TIFFJoin := True; if Edit2.Text = '' then else Fname := Edit2.Text; CreateMDIChild (' c:\leadtool\' + Fname + '.tif'); TIFFJoin := False; TPict (ActiveMDIChild) .Leadl. CreateBitmap (X, Y*2, 0) ; TPict (ActiveMDIChild) .ClientHeight := TPict (ActiveMDIChild) . Leadl . Height; TPict (ActiveMDIChild) .ClientWidth :=TPict (ActiveMDIChild) . Leadl .Width; TPict (ActiveMDIChild) .Lead2.Load( 'c:\leadtoolV + Fname + '0001' + '.tif, 0, 0, 1); TPict (ActiveMDIChild) .Leadl. Combine (0, 0, X , Y, TPict (ActiveMDIChild) . Lead2. Bitmap, 0, 0, CB_OP_ADD or CB_DST_0) ; TPict (ActiveMDIChild) . Lead2. Load ( ' c: \leadtool\ ' + Fname + '0002' + '.tif, 0, 0, 1); TPict (ActiveMDIChild) .Leadl. Combine (0, Y+l, X*2 , Y*2, TPict (ActiveMDIChild) . Lead2. Bitmap, 0, 0, CB_OP_ADD or CB_DST_0) ; TPict (ActiveMDIChild) .Leadl . ForceRepamt; end; procedure TMainForm.TrimlClick (Sender : TObject); begin Screen . Cursor : = crHourGlass ; //TPict (ActiveMDIChild) . Leadl . Tπm (NewLeft, NewTop, NewWidth, NewHeight) ; //TPict (ActiveMDIChild) . Leadl . ForceRepamt ; Screen. Cursor := crDefault; end; end. 19 SUBSTTTUTE SHEET (Rule 26) (RO/AU)

Claims: Claims 1. An image scanning method for producing a digital representation of a scanned capture image, the method including: providing a capture image; sensing a plurality of subsets of said capture image using a sensor means which includes a corresponding plurality of NxM arrays of image sensors to produce a digital representation of each of the subsets of the capture image; and transporting said capture image relative to said sensor means by using a transport means; whereby said steps of sensing and transporting are co-ordinated to provide a digital representation of said capture image by combining the digital representations of each of the subsets of the capture image. 2. An image scanning method as claimed in claim 1 wherein the capture image is produced by projection of an image from an image source. 3. An image scanning method as claimed in claim 2 wherein the image source is a microfiche media 4. An image scanning method as claimed in claim 2 wherein the image source is a film based media. 5. An image scanning method as claimed in any one of claims 2 to 4 wherein the projection means is provided by way of an optical projection assembly in combination with a screen. 6. An image scanning method as claimed in any one of the preceding claims wherein each array of image sensors is a lxM array. 7. An image scanning method as claimed in any one of the preceding claims wherein each array of image sensors is a Nxl array. 8. An image scanning method as claimed in any one of the preceding claims wherein the transport means is directly connected to the capture image. 9. An image scanning method as claimed in any one of the preceding claims wherein the transport means includes at least one stepper motor. 10. An image scanning method as claimed in any one of the preceding claims wherein the transport means includes at least one mirror. 11. Image scanning apparatus including: means for providing a capture image; sensor means comprising a plurality of NxM arrays of image sensors to produce digital representations of each of a corresponding plurality of subsets of the capture image; transport means for moving said capture image relative to said sensor means; and control means for co-ordinating said sensor means with said transport means; whereby said step of sensing and transporting are co-ordinated to provide a digital representation of said capture image by combining the digital representations of each of the subsets of the capture image. 12. Image scanning apparatus as claimed in claim 11 wherein the control means includes a transport control means and a sensor control means. 13. An image scanning method as claimed in claim 11 further including means for producing the capture image by projection of an image from an image source. 14. An image scanning method as claimed in claim 13 wherein the image source is a microfiche media. 15. An image scanning method as claimed in claim 13 wherein the image source is a film based media. 16. An image scanning method as claimed in any one of claims 13 to 15 wherein the projection means is provided by way of an optical projection assembly in combination with a screen. 17. An image scanning method as claimed in any one of the preceding claims wherein each array of image sensors is a lxM array. 18. An image scanning method as claimed in any one of the preceding claims wherein each array of image sensors is a Nxl array. 19. An image scanning method as claimed in any one of claims 11 to 18 wherein the transport means is directly connected to the capture image. 20. An image scanning method as claimed in any one of the preceding claims wherein the transport means includes at least one stepper motor. 21. An image scanning method as claimed in any one of the preceding claims wherein the transport means includes at least one mirror. 22. An image scanning method as claimed in any one of claims 1 to 10, substantially as herein described with reference to the drawings. 23. Image scanning apparatus as claimed in any one of claims 11 to 21, substantially as herein described with reference to the drawings.

Inventors: ZIELINSKI BOGUMIL, ZIELINSKI, BOGUMIL
Applicants: ZIELINSKI BOGUMIL, ZIELINSKI, BOGUMIL
Application year: 1999
Main classification: H04N1
IPC codes: H04N1