Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD FOR SKEW COMPENSATION BASED ON BLOCK
Document Type and Number:
WIPO Patent Application WO/2020/149880
Kind Code:
A1
Abstract:
An image scanning device and method for skew compensation are provided. The image scanning device includes an image sensor to scan a manuscript, a memory to store a scan image corresponding to the manuscript, and a processor to read a scan image stored in the memory in a block size unit having a predetermined first block size, generate a compensated image in a second block size by compensating the scan image in the first block size, store the generated compensated image in the second block size in the memory, calculate a quadrilateral skew angle of the scan image, and set the first block size based on the second block size and the calculated skew angle.

Inventors:
LEE EUL HWAN (KR)
Application Number:
PCT/US2019/041972
Publication Date:
July 23, 2020
Filing Date:
July 16, 2019
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
HEWLETT PACKARD DEVELOPMENT CO (US)
International Classes:
G06F3/12; G06K9/36; H04N1/00
Foreign References:
US20140177010A12014-06-26
US7340110B22008-03-04
US8270737B22012-09-18
Attorney, Agent or Firm:
HWANG, Byungho et al. (US)
Download PDF:
Claims:
WHAT IS CLAIMED IS:

1 . An image scanning device comprising:

an image sensor to scan a manuscript;

a memory to store a scan image corresponding to the manuscript; and a processor to:

read the scan image stored in the memory in a block size unit having a predetermined first block size,

generate a compensated image in a second block size by compensating the scan image in the first block size,

store the generated compensated image in the second block size in the memory,

calculate a quadrilateral skew angle of the scan image, and set the first block size based on the second block size and the calculated skew angle.

2. The image scanning device of claim 1 , wherein the processor is further to:

divide an original area into the second block size,

calculate coordinates on a block area having the first block size and including a division area in the scan image to sequentially generate a plurality of division areas, and

read the scan image in the first block size based on the calculated coordinates.

3. The image scanning device of claim 2, wherein the processor is further to:

calculate vertex coordinates on the original area for an enlarged division area including the division area and a predetermined number of pixels around the division area,

convert the calculated vertex coordinates to the vertex coordinates on the scan image, and calculate the coordinates on a block area in the first block size including an area defined by the vertex coordinates on the scan image.

4. The image scanning device of claim 1 , wherein the processor is further to set the first block size by considering a number of peripheral pixels corresponding to an interpolation method to be performed in skew compensation.

5. The image scanning device of claim 1 , wherein the processor is further to:

generate a compensated image in a third block size by performing skew compensation for the scan image in the first block size, and

generate the compensated image in the second block size by performing additional image compensation processing for the compensated image in the third block size.

6. The image scanning device of claim 5, wherein the first block size is set by further considering a number of peripheral pixels used for the additional image compensation processing.

7. The image scanning device of claim 1 , wherein the processor is further to:

divide the scan image in the first block size into a pixel block in a predetermined size, and

by simultaneously using a plurality of pixel blocks required for image processing of a specific pixel in a pixel unit, perform image processing for the specific pixel.

8. The image scanning device of claim 1 , wherein the processor is further to, based on the calculated skew angle being in a predetermined size range, perform skew compensation. 9. A method for skew compensation of an image scanning device, the method comprising:

calculating a quadrilateral skew angle of a scan image stored in a memory and setting a first block size based on a second block size and the calculated skew angle;

reading the scan image in the predetermined first block size unit;

generating a compensated image in a second block size by compensating the image in the first block size; and

storing the generated compensated image in a second block size in the memory.

10. The method for skew compensation of claim 9, wherein the reading comprises:

dividing an original area into the second block size;

calculating coordinates on a block area having the first block size and including a division area in the scan image to sequentially generate a plurality of division areas; and

reading the scan image in the first block size based on the calculated coordinates.

1 1 . The method for skew compensation of claim 10, wherein the calculating of the coordinates comprises:

calculating vertex coordinates on the original area for an enlarged division area including the division area and a predetermined number of pixels around the division area;

converting the calculated vertex coordinates to the vertex coordinates on the scan image; and

calculating the coordinates on a block area in the first block size including an area defined by the vertex coordinates on the scan image.

12. The method for skew compensation of claim 9, wherein the setting comprises setting the first block size by further considering a number of peripheral pixels corresponding to an interpolation method to be performed in skew compensation.

13. The method for skew compensation of claim 9, wherein the generating of the compensated image comprises:

generating a compensated image in a third block size by performing skew compensation for the scan image in the first block size; and

generating the compensated image in the second block size by performing additional image compensation for the compensated image in the third block size.

14. The method for skew compensation of claim 13, wherein the setting comprises setting the first block size by further considering a number of peripheral pixels required for the additional image compensation processing.

15. The method for skew compensation of claim 9, further comprising: determining whether the calculated skew angle is in a predetermined size range.

Description:
METHOD FOR SKEW COMPENSATION BASED ON BLOCK

BACKGROUND

[0001] An image scanning device is a device for scanning an original image such as a document, a picture, or a film and converting the original image into digital data. In this case, the digital data may be displayed on a monitor of a computer or printed by a printer to be generated as an output image. An example of such an image scanning device includes a printer, a scanner, a copier, a facsimile, and a multi-function peripheral (MFP) for performing functions thereof in a complex manner through a single device.

[0002] In the image scanning device, printing paper may not be aligned due to device characteristics such as alignment deviation of a sensor, a movement of a roller or a motor, and the like, thereby causing distortion of the scan image which makes the scan image different from the original image.

BRIEF DESCRIPTION OF THE DRAWINGS

[0003] Examples of the disclosure will be more apparent from the following description taken in conjunction with the accompanying drawings, in which:

[0004] FIG. 1 is a block diagram illustrating a configuration of an image scanning device according to an example;

[0005] FIG. 2 is a block diagram illustrating a configuration of an image scanning device according to an example;

[0006] FIG. 3 is a view illustrating a quadrilateral skew of a scan image according to an example;

[0007] FIG. 4 is a view illustrating a processor according to an example;

[0008] FIG. 5 is a view illustrating a configuration of a skew compensation device according to an example;

[0009] FIG. 6 is a view illustrating a configuration of a skew compensation device according to an example;

[0010] FIG. 7 is a view provided to describe a method for determining a block size and position for skew processing according to an example; [0011] FIG. 8 is a view provided to describe a method for determining a block size and position for skew processing according to an example;

[0012] FIG. 9 is a view illustrating a configuration of a rubber sheet transform (RST) core according to an example;

[0013] FIG. 10 is a view illustrating a number of peripheral pixels used for a bicubic interpolation method according to an example;

[0014] FIG. 1 1 is a view provided to illustrate a data storing method according to an example; and

[0015] FIG. 12 is a view provided to describe a method for skew compensation according to an example.

DETAILED DESCRIPTION

[0016] Certain examples will now be described with reference to the accompanying drawings. The examples described below may be modified in various different forms.

[0017] When it is described that one constituent element is“connected to” another constituent element, it includes a case in which the two constituent elements are connected to each other with another constituent element intervened therebetween as well as a case in which the two constituent elements are directly connected to each other. Further, when one constituent element “comprises” another constituent element, unless specifically stated to the contrary, it includes examples in which other constituent elements may be further included rather than precluding the same.

[0018] The expression“image forming job” as used herein may refer to various jobs related with an image, such as, formation of an image or generation/storage/transmission of image files (e.g., copying, printing, scanning, or faxing), and the expression“job” as used herein may refer to not only the image forming job, but also a series of processes required for performance of the image forming job.

[0019] Further, the expression“image scanning device” as used herein may refer to an apparatus that scans an image of a document and generates a scan image. Examples of an image scanning device may include a printer, a scanner, a copier, a facsimile, or a multi-function printer (MFP) implementing functions of the above. As an example, when the image scanning device is a printer, a scanner, a copier, a facsimile, an MFP, or the like, which are capable of the image forming job, the image scanning device may also be referred to as the image forming device. Furthermore, the terms “image scanning device” and “image scanning apparatus” may be used interchangeably.

[0020] Further, the expression“hard copy” as used herein may refer to an operation of outputting an image on a recording medium such as paper, and the expression“soft copy” as used herein may refer to an operation of outputting an image on a display device such as a TV, a monitor, or the like or outputting an image to a memory.

[0021] Further, the expression“scanned data” as used herein may refer to a scan image generated at a scanner, may be a black and white image, a color image, or the like, and may have various file formats (e.g., bitmap (BMP), joint photographic group (JPG), tagged image file format (TIFF), portable document format (PDF), or the like).

[0022] Further, the expression“user” as used herein may refer to a person who performs a manipulation related with the image forming job using the image scanning device or a device connected to the image scanning device in a wired or wireless manner. Further, the expression“manager” as used herein may refer to a person who has an authority to access all the functions and systems of the image scanning device. The“manager” and the“user” may refer to the same person.

[0023] FIG. 1 is a block diagram illustrating a configuration of an image scanning device according to an example.

[0024] Referring to FIG. 1 , an image scanning device 100 includes an image sensor 1 10, a memory 120, and a processor 130.

[0025] The image sensor 1 10 may scan a manuscript. For example, the image sensor 1 10 may irradiate light onto a manuscript and scan image information of the manuscript from light (or glow) reflected from the manuscript. The image sensor 1 10 may include a charge coupled device (CCD) disposed in a row along the main scanning direction or a CMOS image sensor (CIS). The image sensor 1 10 may be disposed on a lower end of a flatbed and disposed within an automatic document feeder (ADF).

[0026] The memory 120 may store data for image processing. For example, the memory 120 may store a program to perform the image processing of the processor 130, a signal scanned from the image sensor 1 10, or data (for example, a skew-compensated image) processed by the processor 130.

[0027] The memory 120 may be a volatile memory such as a dynamic random access memory (DRAM), a synchronous RAM (SRAM), or the like, or a non-volatile memory such as a hard disk drive (FIDD), a solid state drive (SSD), a flash memory, or the like, or may be a combination of the volatile memory and the non-volatile memory.

[0028] The processor 130 may control each element within the image scanning device 100. In an example, the processor 130 may be implemented as a central processing unit (CPU), an application-specific integrated circuit (ASIC), or the like, and sense whether a scan command is inputted from a user. The scan command may be inputted through a manipulation input device provided on the image scanning device 100 or received through a communication device from an external device (for example, a personal computer (PC), a smartphone, etc.)

[0029] When a scan command is input, the processor 130 may control the image sensor 1 10 to generate a scan image. The processor 130 may generate a scan image using the signal output from the image sensor 1 10. The processor 130 may store the generated scan image in the memory 120.

[0030] The processor 130 may determine whether image processing is required. Flere, the image processing may include adjusting the skew of the scan image, adjusting the color and brightness, removing a background of the paper included in the scan image, or the like.

[0031] When a quadrilateral skew is detected, the processor 130 may calculate an angle of the quadrilateral skew. If the calculated angle of the quadrilateral skew is in a predetermined range (for example, -5 degrees to +5 degrees), the processor 130 may determine to perform image processing for the quadrilateral skew compensation. When the quadrilateral skew is detected, if the calculated skew angle is out of the predetermined range, the processor 130 may determine not to perform the quadrilateral skew compensation processing, or perform skew compensation with an extreme value in a predetermined range. In implementation, if the angle is too narrow to recognize the quadrilateral skew, it may be determined that the skew compensation will not be performed.

[0032] The range of angle may be set and provided by a manufacturer, or the range may be set or modified by a user or a manager.

[0033] The processor 130 may perform an operation of confirming whether there is a quadrilateral skew in the image of the manuscript and an operation of confirming the angle of the quadrilateral skew. In the above description, the quadrilateral skew is confirmed and the skew angle is calculated. However, in the implementation, the skew angle may be calculated and the quadrilateral skew may be confirmed accordingly. Still further, the skew angle may be calculated and the quadrilateral skew may be confirmed in parallel.

[0034] The processor 130 may perform image processing by sequentially reading image data stored in the memory 120 in a line unit corresponding to a horizontal size of the image. The processor 130 may perform image processing by dividing the image data into a plurality of blocks and reading the divided blocks in a block size unit.

[0035] The processor 130 may be implemented as a device such as an application-specific integrated circuit (ASIC) or a system-on-chip (SoC) and may read and process image data by reading the image data on a block-by-block basis due to a restriction of a size of the internal memory. Hereinbelow, an example operation of reading the image data by a unit of a block will be described.

[0036] The processor 130 may determine an image block size necessary for image processing in order to read image data in units of block size and perform image processing. For example, when skew compensation is performed, the processor 130 may calculate the skew angle of the scan image and determine a block size (hereinafter, first block size) required for image processing based on the calculated skew angle. In an example, the processor 130 may determine the first block size by considering the number of peripheral pixels necessary for image processing. [0037] For example, in the case of using a bicubic interpolation method using a 4 x 4 block of pixels for skew compensation, the processor 130 may determine the first block size which may include, on the scan image, an enlarged division area, which is larger by the 4 x 4 block of pixels than the target division area.

[0038] When the processor 130 has to perform a plurality of image processing, the processor 130 may calculate a block size (that is, a first block size) to be read from the memory 120 based on the image block size required for each image processing and the final output image block. Example operations for determining a block size by the processor 130 will be described later with reference to FIG. 6.

[0039] The processor 130 may perform image processing on the generated scan image. For example, the processor 130 may read the scan image stored in the memory 120 in a first block size unit. As an example, the processor 130 may divide the original area into a second block size, and calculate coordinates on a block area which has the first block size and includes a division area within the scan image in order to sequentially generate a plurality of division areas, and read the scan image of the first block size based on the calculated coordinates.

[0040] As an example, the processor 130 may calculate vertex coordinates of the original area for the enlarged division area including the division area and the predetermined number of pixels around the division area, convert the calculated vertex coordinates of the original area to the vertex coordinates of the scan image, and calculate the coordinates of the block area of the first block size including the area defined by the coordinates of the vertex on the scan image, to read the scan image of the first block size.

[0041] The processor 130 may perform image processing on the read scan image of the first block size. When a plurality of image processing is performed on the scan image, the processor 130 may sequentially perform a plurality of image processing on the read scan image of the first block size. For example, the processor 130 may perform skew compensation on the scan image of the first block size, and sequentially perform operations such as edge compensation for the skew-compensated image block and color compensation for the edge- compensated image block, or the like.

[0042] In the image processing, the processor 130 may divide the scan image of the first block size, which has been read, into pixel blocks of a predetermined size, combine the plurality of divided pixel blocks into a form that may be read at a time, and store the same temporarily. Accordingly, the processor 130 may scan a plurality of pixel values required in the interpolation process for a specific pixel at a time. Examples will be described later with reference to FIGS. 9 to 1 1 .

[0043] When image processing is completed, the processor 130 may store the compensated image of the second block size in the memory 120.

[0044] An example configuration of an image scanning device has been described. However, in implementation, various configurations may be added additionally. Examples of additional configurations will be described with reference to FIG. 2.

[0045] FIG. 2 is a block diagram illustrating a configuration of an image scanning device according to an example.

[0046] Referring to FIG. 2, the image scanning device 100 may include the image sensor 1 10, the memory 120, the processor 130, a communication device 140, a display 150, a manipulation input device 160, and a printing engine 170.

[0047] The operation of the image sensor 1 10 and the memory 120 has been described with reference to FIG. 1 , and a redundant description will be omitted. The processor 130 is also described with reference to FIG. 1 , and the contents described in FIG. 1 will not be again described. Rather, only the contents related to the configuration added in FIG. 2 will be described below.

[0048] The communication device 140 may be connected to a terminal (not illustrated) such as a mobile device (e.g., a smart phone, a tablet PC, etc.), a PC, a notebook PC, a personal digital assistant (PDA), a digital camera, or the like, and transmit a scan image previously stored in the memory 120 or a compensated scan image to the terminal.

[0049] For example, the communication device 140 may be configured to connect the image scanning device 100 to an external device. The communication device 140 may connect the image scanning device 100 to the external device using a local area network (LAN) or an internet network, or using a universal serial bus (USB) port, a wireless communication port (e.g., WiFi 802.1 1 a/b/g/n, NFC, Bluetooth), or the like. The communication device 140 may be referred to as a communication interface, a transceiver, or the like.

[0050] The display 150 may display various pieces of information provided from the image scanning device 100. For example, the display 150 may display a user interface window to receive a selection of various functions provided by the image scanning device 100. The display 150 may be a monitor such as a liquid crystal display (LCD), a cathode-ray tube (CRT), an organic light emitting diode (OLED), or the like, and may be implemented as a touch screen that may simultaneously perform a function of the manipulation input device 160 which will be described later.

[0051] Further, the display 150 may display a control menu for performance of functions of the image scanning device 100. As an example, a user may input a scan command on the displayed control menu. In an example, the scan command may be a command to perform the scanning job and may include a command such as scan-to-server, scan-to-digital living network alliance (DLNA), scan-to-cloud, or the like, which transmits a scanning job to a specific server.

[0052] Further, when the image scanning device 100 is a multi-function printer (MFP) that includes printing and copying capabilities, the scan command may be a copy command that uses a scan function. Although it is described herein that a scan command is inputted through the manipulation input device 160, in another implementation, the scan command may be received from a terminal (not illustrated) through the communication device 140.

[0053] Further, the display 150 may display the generated scan image and information about the scan image. In an example, the displayed scan image may be the scan image itself or a preview image of the scan image.

[0054] The display 150 may display a user interface window for receiving a selection of an image processing method to be performed after scanning a manuscript, and so on. The user interface window may include an input area for receiving an angle range for performing skew compensation.

[0055] The manipulation input device 160 may receive a function selection and a control command for the function from a user. The function may include a print function, a copy function, a scan function, a fax transmission function, or the like. The manipulation input device 160 may be implemented as a plurality of buttons, a keyboard, a mouse, or the like, and may be implemented as a touch screen that may simultaneously perform functions of the display 150 described above.

[0056] The printing engine 170 prints a compensated scan image. The printing engine 170 may form an image on an image forming medium such as a photoconductive drum, an intermediate transfer belt, a paper feeding belt, or the like, transfer an image formed on the image forming medium on the print paper, and perform a printing operation.

[0057] When a copy command is received from a user, the processor 130 may control the image sensor 1 10 to perform a scan operation to generate a scan image, perform image compensation on the generated scan image, and control the printing engine 170 to print the compensated scan image.

[0058] Alternatively, when commands such as scan-to-server, scan-to- DLNA, scan-to-cloud, or the like are received from the user, the processor 130 may control the communication device 140 to transmit the compensated scan image to a storage corresponding to the command.

[0059] The image scanning device 100 may further include a fax trans receiver to perform the fax trans-receive function, or the like according to functions supported by the image scanning device 100.

[0060] As described above, the image scanning device according to an example is capable of compensating for quadrilateral skew, and is thus capable of outputting a high-quality scan image. In addition, skew compensation may be performed at a faster rate by performing hardware-based skew compensation based on blocks of data.

[0061] FIG. 3 is a view illustrating a quadrilateral skew of a scan image according to an example. [0062] Referring to FIG. 3, in a process where a manuscript to be scanned is moved to a scan area of an image forming device, there may be processing anomalies that cause the manuscript to be deformed in a quadrilateral shape. For example, when a left and right speed (or power) of a feeding or a moving roller is different, the manuscript may be deformed to a quadrilateral shape.

[0063] In an example, a quadrilateral skew may not be corrected by using a compensating method for a general skew (that is, skew due to rotation). Rather, in an example, the quadrilateral skew may be corrected by use of a rubber sheet transform (RST).

[0064] An example of an RST method may compensate the quadrilateral distortion using backward mapping. The backward mapping detects four vertexes of an input image 310 corresponding to four vertexes of an output image 320 to be obtained, finds a pixel position of the input image 310 corresponding to a pixel of the output image 320, and calculates the pixel value at that position when the manuscript is distorted in a quadrilateral shape.

[0065] Equation 1 as shown below is a mathematical formula used to calculate a pixel position of the input image 310 corresponding to a pixel of the output image 320 in order to compensate for quadrilateral distortion.

... Equation 1 [0066] Here, x and y are coordinate values in the input image, u and v are coordinate values in the output image, aO, a1 , a2, a3, bO, b1 , b2, and b3 are constants, X LT , Y LT , X RT , Y RT , X LB , Y LB , X RB , Y RB are the vertex coordinates of the input image, and W and H are the length information (i.e. , the width and height) of the output image.

[0067] In order to compensate for quadrilateral skew by a hardware method in a device such as an ASIC or an SoC, a method of reading and processing an image in a block unit may be used. As an example, a processor such as an ASIC or an SoC having a data size that may be processed at one time corresponding to a size of an SRAM or a line memory may be used.

[0068] In an example, even in a case where an SRAM (or line memory) having a small size is used, image processing is performed in block units so that the quadrilateral skew may be compensated.

[0069] FIG. 4 is a view illustrating a processor according to an example.

[0070] Referring to FIG. 4, the processor 130 may include a scanner interface 131 , a central processing unit (CPU) 132, an RST processor 200, a memory controller 134, a scan image processor 135, a print image processor 136, and a video controller 137. The processor 130 may be an ASIC or an SoC.

[0071] The scanner interface 131 may communicate with the image sensor 1 10 to receive a scan image.

[0072] The CPU 132 may control the overall operation of the processor 130. For example, the CPU 132 may control the scanner interface 131 to read the information of the image sensor 1 10 in accordance with the scan speed, and control the memory controller 134 to store the read information in the memory 120. If the quadrilateral skew compensation is performed, the CPU 132 may control the RST processor 200 to perform skew compensation.

[0073] The RST processor 200 may perform image processing related to quadrilateral skew. An example configuration and operation of the RST processor 200 will be described with reference to FIGS. 5 and 6.

[0074] The memory controller 134 may communicate with the memory 120. As an example, the memory controller 134 may transmit data to the memory [0075] The scan image processor 135 may perform image processing on the scan image. Although it has been described in the illustrated example that the RST processor 200 is a configuration separate from the scan image processor 135, the RST processor 200 may include some functions of the scan image processor 135, or the RST processor 200 and the scan image processor 135 may be integrated into one processor.

[0076] The print image processor 136 may perform operations related to a print job. For example, when print data is received, the print image processor 136 may perform a rendering operation on the received print data and generate a bitmap image.

[0077] The video controller 137 may control the printing engine 170. For example, the video controller 137 may convert a generated bitmap image into a video signal (e.g., an image signal), and transmit the converted video signal to the printing engine 170. The video signal may be provided to a laser scanning unit (LSU) of the printing engine 170.

[0078] FIG. 5 is a view illustrating a configuration of a skew compensation device according to an example.

[0079] Referring to FIG. 5, the RST processor 200 may include a direct memory access (DMA) RX 210, an RST core 220, and a DMA TX 230.

[0080] The DMA RX 210 may read a scan image stored in the memory 120 (e.g., a DRAM) in a block size having a predetermined first block size (IBW, IBH) of an input block 101 . For example, the DMA RX 210 may calculate the block position of the first block size to be read, and read the scan image of the calculated position from the memory 120.

[0081] An example of calculating the first block size will be described with reference to FIGS. 6 to 8.

[0082] The RST core 220 may generate an output image having a second block size (OBW, OBFI) using the read scan image data. Flere, since the RST processor 200 performs skew compensation only, the second block size is equal to the final block size (CBW, CBFI) of a final block 105. When the RST processor 200 performs additional image processing, the second block size may be different from the final block size (CBW, CBFI) of the final block 105. An example configuration and operation of the RST core 220 will be described later with reference to FIG. 9.

[0083] The DMA TX 230 stores the image-processed image in the memory 120.

[0084] In the illustrated example, it has been described that the RST processor 200 performs skew compensation only. However, in implementation, the RST processor 200 may perform a plurality of other image processing simultaneously as well as skew compensation. An example operation of an RST processor will be described below with reference to FIG. 6.

[0085] FIG. 6 is a view illustrating a configuration of a skew compensation device according to an example. The example of FIG. 6 includes not only a skew compensation process but also a plurality of additional image processes.

[0086] Referring to FIG. 6, an RST processor 200 may include the DMA RX 210, the RST core 220, the DMA TX 230, an A core 240, a B core 250, and a C core 260.

[0087] The DMA RX 210, the RST core 220, and the DMA TX 230 have been described with reference to FIG. 5, and will not be described again for conciseness.

[0088] The A core 240, the B core 250, and the C core 260 perform image processing using different algorithms. For example, the A core may be an image processing algorithm that performs image processing using 9x9 peripheral pixels in image processing, the B core may be an image processing algorithm that performs image processing using 7x7 peripheral pixels, and the C core may be an image processing algorithm that performs image processing using 5x5 peripheral pixels.

[0089] In FIG. 6, the A core 240, the B core 250, and the C core 260 are illustrated for convenience of description. However, in implementation, one or two image processing cores may be included in the configuration of FIG. 6, or four or more image processing cores may be included.

[0090] As described above, various image processing may be performed in block units. That is, image processing for performing block processing by configuring a plurality of image processing cores in a pipeline is possible. [0091] Image processing may be performed considering the number of peripheral pixels, and an input image larger than the size of the output image may be used. Accordingly, for the size of a final block 105 (CBW, CBH (256, 128)) to be finally outputted as illustrated, the C core 260 using the 5x5 peripheral pixels requires an input image 104 in the size of (260, 132). The B core 250 using the 7x7 peripheral pixels requires an input image 103 in the size of (266, 138), and the A core 240 using 9x9 peripheral pixels requires an input image 102 in the size of (274, 146).

[0092] The RST core 220 may determine the size of an input block 101 where the output block 102 may have a size of (274, 146). For example, based on the skew angle, a first block size that may be the size of the output block 102 (274, 146) may be determined. Hereinafter, an example of determining a block size for skew processing will be described with reference to FIGS. 7 and 8.

[0093] FIGS. 7 and 8 are views provided to describe a method for determining a block size and position for skew processing according to an example.

[0094] Referring to FIGS. 7 and 8, when four vertexes of an original image or an output image are Q0, Q1 , Q2, and Q3, four vertexes on a distorted scan image correspond to P0, P1 , P2, and P3.

[0095] In FIG.7, the output image D (u, v) is divided into block units having a size of (CBW, CBH).

[0096] It is assumed that the size of the enlarged division area including the pixels around the division area is referred to as a second block size (OBW, OBH) and the four vertexes are qO, q1 , q2, and q3 for a plurality of image processing.

[0097] For the case of performing skew compensation only as illustrated in FIG. 5, the second block size (OBW, OBH) has the same size as the final block size (CBW, CBH).

[0098] As shown in FIG. 6, when there are a plurality of cores for image processing, the second block sizes (OBW, OBH) are larger than the final block size (CBW, CBH). [0099] When the RST core 220 needs to output an image block having a second block size (OBW, OBH) through one block processing, the input block having a size which is larger than the second block size (OBW, OBH) needs to be input. As an example, for image processing using interpolation, a 4x4 pixel value around a specific pixel is required.

[00100] If the vertexes of the block having the size determined according to the above process are q0, q1 , q2, and q3, the four vertexes on the distorted scan image may have values of p0, p1 , p2, and p3 as Equation 2 below.

P0 : x 0 = f(u 0 , v 0 ), y 0 = g(u 0 , v 0 )

P1 x 1 = f(u 1 ,V 1 ), y 1 = g(u 1 , V 1 )

P2 x 2 = f(u 2 , v 2 ), y 2 = g(u 2 , v 2 ) p 3 : x 3 = f(u 3 , v 3 ), y 3 = g(u 3 , v 3 )

... Equation 2

[00101] Here, P0 , p1 , p2, and p3 are coordinates on the scan image respectively corresponding to q0, q1 , q2, and q3, and f (), and g () represent an RST formula as in Equation 1.

[00102] Accordingly, the RST core 220 may calculate four vertexes on the scan image, and calculate the vertexes r0, r1 , r2, and r3 of the rectangular block including all four vertexes as shown in FIG. 8. Here, a block defined by r0, r1 , r2, and r3 may have the first block size as described above.

[00103] As an example, in order to calculate a smallest quadrangle surrounding P0 , p1 , p2, and p3, Equations 3 to 12 may be calculated, and vertexes r0, r1 , r2, and r3 as in Equation 13 may be calculated.

Dx 0 = ([x 0 ] > [x 2 ] ? ([x 0 ] - [x 2 ]) + 1: 1

... Equation 3

[00104] Here, [ ] denotes a floor.

Dy 0 = ([y 0 ] > [y 2 ] ? ([y 0 ] - [y 2 ]) + 1: 1

... Equation 4 x r = [x 0 ] - Dx 0

...Equation 5 y r =[y 0 ] - Dy 0

...Equation 6

Dx 3 = ([x 3 ] >[x 1 ])? 1: (x 3 ] -[x 1 ]) + 1

...Equation 7

[00105] Here, [ ] denotes a ceiling.

Dy 3 = ([y 3 ] >[y 2 ])? 1: (y 3 ] -[y 2 ]) + 1

...Equation 8 x r3 = ([x 3 ] + Dx 3

...Equation 9 y r3 =[y 3 ] + Dy 3

...Equation 10

IBW = x r3 — x r

...Equation 11

[00106] Here, IBW is a width of the first block.

IBH = y r3 - y r

...Equation 12

[00107] Here, IBH is a height of the first block.

r 0 :(x r ,y r ) r 1 : (x r + IBW,y r ) r 2 : (x r , y r + IBH) r 3 : (x r + IBW, y r + IBH)

... Equation 13

[00108] In the above examples, IBH and IBW are used for calculation. However, in implementation, using a predetermined value based on the skew angle is also possible.

[00109] For example, the larger the skew angle, the larger the block composed of r0, r1 , r2, and r3 becomes, and the data to be read in the memory 120 becomes larger. However, the typical skew angle is, for example, in the range of -5 to +5 degrees, and the memory inside the processor also has a fixed size. In consideration of the foregoing, if the skew angle is determined, IBW and IBH may be used in a fixed manner, corresponding to the skew angle. In this case, r0 may be calculated using Equations 2 to 6, and r1 , r2, and r3 may be directly calculated through Equation 13 using the fixed IBW and IBH.

[00110] In the calculation process above, when the values of P0, P1 , P2, and P3 corresponding to the values Q0, Q1 , Q2, and Q3 are equal, or a difference therebetween is not large, that is, when the skew angle is very small, the RST may not be performed. Alternatively, the RST core 220, when the inner angle of the quadrilateral or the length of the quadrilateral exceeds the predetermined range using the P0, P1 , P2, and P3 values, that is, when the skew angle is very large, may not perform RST or perform the RST with the extreme values in the range.

[00111] FIG. 9 is a view illustrating a configuration of an RST core according to an example. FIG. 10 is a view illustrating a number of peripheral pixels for a bicubic interpolation method according to an example. FIG. 1 1 is a view provided to illustrate a data storing method according to an example.

[00112] Referring to FIG. 9, an RST core 900 may be composed of an input block interface 910, an SRAM interface 920, an interpolation unit 930, and an output block interface 940. [00113] The input block interface 910 controls the DMA RX 210 and performs an operation to read a scan image of a predetermined size. For example, the input block interface 910 may receive a scan image of a first block size (IBW x IBH).

[00114] The SRAM interface 920 performs an operation of reading and writing data to and from the SRAM 190. The SRAM 190 may be a volatile memory, a line memory within the processor 130, or a dedicated memory of the RST processor 200 or an image processor. The SRAM 190 may have a size of IBW horizontally and IBH vertically corresponding to the first block size, but the SRAM may have a size of IBWx IBH2 (where IBH2 <IBH) that is smaller than the first block size.

[00115] For example, the SRAM interface 920 may divide the scan image of the first block size read from the input block interface 910 into pixel blocks of a predetermined size, and store the scan image in the SRAM 190.

[00116] In the interpolation operation, the SRAM interface 920 may read only a part of the pixel blocks necessary for the interpolation operation from the SRAM 190. An example of a writing and reading operation will be described later with reference to FIGS. 10 and 1 1 .

[00117] The interpolation unit 930 may perform an interpolation operation using the read image. As an example, the interpolation unit 930 may calculate a value for a specific pixel using pixel values of a plurality of pixel blocks. For example, the interpolation unit 930 may perform a compensation using several interpolation methods such as bilinear, quadratic, bicubic, or the like.

[00118] Hereinbelow, to facilitate description, an example of applying a bicubic interpolation method using 4x4 peripheral pixels is assumed and described.

[00119] Referring to FIG. 10, in order to calculate a pixel value at a specific position, 16 peripheral pixel values are required. If pixel values of each line are stored in different SRAM lines in the SRAM 190, it takes four clock signals to read 16 pixel values.

[00120] Accordingly, the interpolation unit 930, so as to read data necessary for interpolation during the time of one clock signal, may divide the scan image of the first block size read from the input block interface 910 into a plurality of pixel blocks (for example, four pixels), and control the SRAM interface 920 so that a plurality of pixel blocks required for one interpolation are stored in one line of the SRAM 190.

[00121] Referring to FIG. 11 , the interpolation unit 930 may read 16 pixel values required for interpolation at one time by storing a scan image of the first block size in the SRAM 190 which is divided into four pieces in a horizontal direction and separately configured in a vertical direction.

[00122] The output block interface 940 outputs the compensated image, which is output from the interpolation unit 930. At this time, the outputted compensated image may have a second block size (OBW, OBH). If the RST processor 200 performs additional image processing, the image output by the output block interface 940 may have a size corresponding to the size required for subsequent image processing.

[00123] FIG. 12 is a view provided to describe a method for skew compensation according to an example.

[00124] Referring to FIG. 12, a first block size is set in operation S1210. For example, a quadrilateral skew angle of the scan image may be calculated, and the first block size may be set based on a second block size and the calculated skew angle. At this time, the first block size may be set by further considering the number of peripheral pixels corresponding to an interpolation method to be performed in the skew compensation. In addition, when performing additional image processing as well as the skew compensation, it is possible to set the first block size by additionally considering the number of peripheral pixels required for the additional image processing.

[00125] A scan image stored in the memory is read in the set first block size unit in operation S1220. For example, the original area may be divided into the second block size. In order to sequentially generate a plurality of division areas, the coordinates for the block area having the first block size and including the division area in the scan image may be calculated and the scan image of the first block size may be read based on the calculated coordinates. [00126] In an example, the coordinate calculation may be performed by calculating the vertex coordinates on the original area of the enlarged division area including the division area and the predetermined number of pixels around the division area, converting the calculated vertex coordinates into the vertex coordinates on the scan image, and calculating coordinates in a block area of a first block size including an area defined by vertex coordinates on the scan image.

[00127] A compensated image of the second block size is generated by performing image compensation on the scan image of the first block size in operation S1230. When performing additional image processing, the additional image processing may be performed in the form of a pipeline for the skew- compensated image.

[00128] The generated compensated image of the second block size is stored in the memory in operation S1240. The above operation may be performed repeatedly to perform image compensation for the entire scan image.

[00129] As described above, the skew compensation method according to an example may compensate a quadrilateral skew, and is thus capable of outputting a scan image of higher quality. In addition, a skew compensation may be performed at a higher speed by hardware-based skew compensation based on blocks of data.

[00130] The examples of skew compensation methods as described above may be embodied as a program and provided to a management server. As an example, a program including a skew compensation method may be stored in a non-transitory computer readable medium and provided.

[00131] The foregoing examples and advantages are merely exemplary and are not to be construed as limiting the inventive concept. The examples may be readily applied to another type of device or apparatus. Also, the description of the examples is intended to be illustrative, and not to limit the scope of the inventive concept, and many alternatives, modifications, and variations will be apparent to those skilled in the art.