Image processing apparatus having dynamically reconfigurable circuits to perform image processing, control method thereof, and storage medium storing computer program therefor

Image processing corresponding to each of a plurality of pages of image data to be acquired as a target for job execution is determined. An image processing circuit that executes the determined image processing is configured in a logic device capable of dynamically configuring circuits. The image processing circuit configured in the logic device is caused to execute the determined image processing each of the plurality of pages of the image data acquired.

BACKGROUND OF THE INVENTION

Field of the Invention

The present invention relates to an image processing apparatus that performs image processing on image data, a control method and a storage medium that stores a computer program.

Description of the Related Art

In recent years, controllers for performing device control within an MFP (multifunctional peripheral) that are constituted by a high-speed general-purpose CPU and an image processing control CPU are known. In such a configuration, the general-purpose high-speed CPU performs general-purpose interface control of a network or the like and job sequence control, for example. Also, the image processing control CPU performs control of a document reading apparatus (scanner) and image processing control, for example. A print function and a scan function of the MFP are executed by the general-purpose high-speed CPU and the image processing control CPU operating in tandem.

There are cases where different image processing is required per page when executing a scan job. For example, the MFP may be configured to detect the presence of foreign particles between pages by reading the white plate or the document guide plate (Japanese Patent Laid-Open Nos. 2002-176542 and 2006-173933). In this case, whether or not to perform pixel correction corresponding to the position of foreign particles is determined on a page-by-page basis, according to the presence of foreign particles.

Also, the MFP may, for example, be configured to detect whether a page is achromatic or chromatic before performing document reading (Japanese Patent Laid-Open No. 2005-184101). In this case, whether to perform achromatic image processing or chromatic image processing is determined for the next page on a page-by-page basis, according to whether the page is achromatic or chromatic.

Also, the MFP may, for example, be configured to read consecutive pages using an ADF (Auto Document Feeder). Depending on factors such as the structure of the ADF and the attachment orientation of the sensor, the reading direction may be reversed between the front and back sides of the page; that is, the image data that is obtained may be a mirror image of the original. In this case, mirror image correction for correcting the mirror image to the correct image needs to be performed on the image data of whichever of the front or back side is the mirror image.

Also, the types of reading devices that are used in MFPs include CCD image sensors, CMOS image sensors, and contact image sensors (CISs). Technology for improving the reading speed by installing two of these reading devices for respectively reading the front side and back side is known. At this time, different reading devices may be installed for reading the front and back sides, such as a CMOS image sensor for the front side and a CIS for the back side. In the case of such a configuration, circuits that correct for issues particular to CISs such as inter-chip missing pixels (Japanese Patent Laid-Open No. 2003-348336) and resolution degradation (Japanese Patent Laid-Open No. 2002-199222) will be required in the image processing for the back side of the page only.

On the other hand, devices such as programmable logic devices (PLDs) and FPGAs (Field Programmable Gate Arrays) that are capable of reconfiguring internal logic circuits are known. Generally, PLDs and FPGAs are capable of switching the function of an internal logic block by writing logic circuit configuration information stored in a nonvolatile memory such as ROM to a configuration memory, which is an internal volatile memory, at the time of startup. Also, because information in the configuration memory is cleared at the time of power off, reconfiguration is performed by writing the logic circuit configuration information to the configuration memory again at the time of power on. A method for thus configuring a hardware resource only once is called static reconfiguration.

Also, a technique for loading configuration data to an FPGA via a general-purpose high speed bus such as PCIe (PCI-Express) that is connected to the FPGA, according to computational processing of an accelerator, with the CPU as the master device, is known (Japanese Patent Laid-Open No. 2013-98823). Such methods for changing the logic circuit during device operation are referred to as dynamic reconfiguration by CPU.

By applying a device capable of dynamic reconfiguration by CPU to the system of an MFP in which a general-purpose high-speed CPU and an image processing CPU operate in tandem, it is conceivable to, for example, add a function that enables the contents of image processing on image data to be changed on a page-by-page basis. However, in order to apply a device capable of dynamic reconfiguration by CPU to the system of an MFP in which a general-purpose high-speed CPU and an image processing CPU operate in tandem, a configuration that controls image processing by coordinating dynamic reconfiguration by the CPU with jobs is required. Although Japanese Patent Laid-Open No. 2013-98823 describes a system that is configured to load configuration data to an FPGA, there is no mention of controlling image processing through coordination with jobs.

SUMMARY OF THE INVENTION

An aspect of the present invention is to eliminate the problems with the conventional technology. The present invention provides an image processing apparatus and a control method that realize image processing control at the time of job execution in a system including a device capable of dynamic reconfiguration, and a storage medium storing a program for realizing the same.

The present invention in one aspect provides an image processing apparatus comprising: an acquisition unit configured to acquire, as a target for job execution, image data that includes a plurality of pages; a logic device configured to dynamically configure a circuit; a determination unit configured to determine image processing corresponding to each of the plurality of pages of the image data to be acquired by the acquisition unit; a configuration unit configured to configure, in the logic device, an image processing circuit for executing the image processing determined by the determination unit; and a control unit configured to cause the image processing circuit configured in the logic device by the configuration unit to execute the image processing determined by the determination unit for each of the plurality of pages of the image data acquired by the acquisition unit.

According to the present invention, image processing control at the time of job execution can be realized in a system including a device capable of dynamic reconfiguration.

DESCRIPTION OF THE EMBODIMENTS

Preferred embodiments of the present invention will now be described hereinafter in detail, with reference to the accompanying drawings. It is to be understood that the following embodiments are not intended to limit the claims of the present invention, and that not all of the combinations of the aspects that are described according to the following embodiments are necessarily required with respect to the means to solve the problems according to the present invention. Note that the same reference numerals are given to constituent elements that are the same, and description thereof will be omitted.

First Embodiment

Configuration of Image Forming Apparatus

FIG. 1is a diagram showing a system configuration including an image processing apparatus. A system100includes an image processing apparatus10and an information processing apparatus11. The image processing apparatus10includes a controller13, an operating unit14, a storage device15, a scanner16, and a printer17. The image processing apparatus10is used as a multifunctional peripheral (MFP) that includes a print function, a reading function and a fax function, for example. The image processing apparatus10is communicably connected to the information processing apparatus11, which is a PC or the like, via a network12such as a LAN. The image processing apparatus10executes the functions of the image processing apparatus10based on jobs received from the information processing apparatus11. The jobs are jobs corresponding to the functions executable by the image processing apparatus10, and include scan jobs and print jobs, for example. Also, jobs may be received from a user via the operating unit14, in addition to being received from the information processing apparatus11.

The scanner16optically reads images from a document placed on a platen or from a document supplied continuously from an ADF (Automatic Document Feeder), and converts the read images to image data. The printer17prints images to printing media such as print sheets based on the image data, using an electrophotographic printing method or an inkjet printing method. Here, image data may be generated by the scanner16or may be acquired externally. The operating unit14receives user instruction operations regarding functions that are executable by the image processing apparatus10. The storage device15is a hard disk, for example, and stores image data and programs, as well as logic circuit configuration information (configuration data) for forming circuits in a logic device capable of dynamically reconfiguring internal circuits. Hereinafter, the storage device15will be described as being a hard disk15. An FPGA (Field Programmable Gate Array), for example, is used as the logic device of the present embodiment.

The controller13is connected to each of the modules from the operating unit14to the printer17in a bus configuration, and executes jobs by controlling the modules. The operating unit14is connected to the controller13via an operating unit bus21. The hard disk15is connected to the controller13via a hard disk bus22. The scanner16is connected to the controller13via a scanner bus23. The printer17is connected to the controller13via a printer bus24. The network20may be a wired network or a wireless network. In the case of a wireless network, the information processing apparatus11is, for example, a mobile terminal. In the case where the network20is constituted by a wireless network, access points or the like may be configured on the network20.

In the case where the copy function is executed in the image processing apparatus10, image data generated with the scanner16is output to the controller13via the scanner bus23. The controller13controls the printer17via the printer bus24so as to print to printing media such as print sheets with the printer17, based on the image data.

FIG. 2is a diagram showing a block configuration of the controller13. The controller13includes a main board200, a sub-board220, and an option board210. The main board200and the sub-board220are connected to each other via an external bus230. The main board200and the option board230are connected to each other via an external bus241. The sub-board220and the option board210are connected to each other via setting bus232and an external bus233.

The operating unit14is connected to the main board200via the operating unit bus21. The hard disk15is connected to the main board200via the hard disk bus22. The scanner16is connected to the sub-board220and the option board210via the scanner bus23. The printer17is connected to the sub-board220via the printer bus24.

The main board200executes overall control of the image processing apparatus10. The main board200is a general-purpose CPU system, and performs job control, connects to other boards using a general-purpose bus, and connects via a general-purpose bus to a storage device such as a hard disk, a network or the like. A CPU201controls the controller13. A ROM202is a general-purpose ROM, and stores a boot program, for example. A RAM203is a general-purpose RAM, and is used as a work memory for the CPU201, for example. A bus bridge204has a bridge function with the external bus230. A bus bridge208has a bridge function with the external bus231. A panel controller206controls the operating unit14via the operating unit bus21. A disk controller207controls the hard disk15via the hard disk bus22. A network controller205communicably connects the main board200to the network12. The system bus209connects the modules included within the main board200.

The sub-board220is an image processing CPU system that includes a configuration consisting of a connection with another board via a general-purpose bus, a connection with a scanner, a printer and the like via dedicated bus, and an image processing unit. A CPU221performs control within the sub-board220. A ROM222is a general-purpose ROM, and stores a boot program, for example. A RAM223is a general-purpose RAM, and is used as a work memory for the CPU221, for example. A bus bridge225has a bridge function with the external bus230. A bus bridge226has a bridge function with the external bus233. A serial controller227has a bridge function with the setting bus232. An image processing unit224executes real time digital image processing on image data. For example, the image processing unit224performs image processing such as correction, processing and editing on image data input via the scanner bus23. Also, the image processing unit224outputs image data that has undergone image processing such as correction according to print settings via the printer bus24. The internal bus229connects the abovementioned modules of the sub-board220to each other. The sub-board220receives image data from and transmits read start instructions to the external scanner16via the scanner bus23. Also, the sub-board220performs image data transmission and transmits print start instructions to the printer17via the printer bus24.

The option board210includes a dynamic reconfiguration unit211connected to each of the external bus231, the external bus233, the setting bus232, and the scanner bus23. The dynamic reconfiguration unit211is able to dynamically configure an arbitrary circuit internally using configuration data input from the external bus231, and is realized by a logic device such as an FPGA. The dynamic reconfiguration unit211configures the settings of the circuit dynamically configured internally using data input from the setting bus232. Also, the dynamic reconfiguration unit211inputs image data input from the scanner bus23to the internally configured circuit, executes image processing using that circuit, and outputs the processed image data to the sub-board220via the external bus233.

Although a large amount of peripheral hardware such as chip sets, bus bridges and clock generators, for example, are included in the CPU201, the CPU221and the dynamic reconfiguration unit211, description thereof will be omitted for convenience of description.

FIG. 3is a diagram showing information on the correspondence between configuration data and page settings that is transferred to the dynamic reconfiguration unit211. The correspondence information is shown in table form inFIG. 3, but may be realized in forms other than a table as long as the correspondence between configuration data and page settings is shown. A correspondence table300is stored in the ROM202, for example. As shown in the correspondence table300, the image processing that is applied differs according to the type of page. In the case ofFIG. 3, if a page to be read in executing a scan job is an odd page with foreign matter, this corresponds to circuit data for performing foreign matter correction but not mirror image correction, and the image processing circuit is configured in the dynamic reconfiguration unit211using this circuit data. Foreign matter correction is processing that is performed in the case where foreign matter such as foreign particles on the document reading position is detected between pages when so-called moving document reading is performed from the ADF, and involves correcting pixels corresponding to the position of the foreign matter on the following page through interpolation or the like. Mirror image correction is processing performed in the case where image data is obtained as a mirror image due to the structure of the ADF or the reading mechanism such as the attachment orientation of the sensor, and involves correcting the image data of whichever of the front side or back side is the mirror image from the mirror image to the correct image.

Also, in the case where the page to be read is an odd page without foreign matter, the image processing circuit is configured in the dynamic reconfiguration unit211using circuit data for not performing foreign matter correction or mirror image correction. Also in the case where the page to be read is an even page with foreign matter, the image processing circuit is configured in the dynamic reconfiguration unit211using circuit data for performing foreign matter correction and mirror image correction. Also, in the case where the page to be read is an even page without foreign matter, the image processing circuit is configured in the dynamic reconfiguration unit211using circuit data for performing mirror image correction but not foreign matter correction.

As shown inFIG. 3, in the present embodiment, the configuration data for when foreign matter correction is performed on the following page and the configuration data for when foreign matter correction is not performed are exclusively used, according to the inter-page foreign matter reading result. Also, the configuration data for when performing mirror image correction on either the front or back side of the page (on an odd page or an even page) and the configuration data for when not performing mirror image correction are used exclusively, according to the structure of the ADF and the attachment direction of the reading device.

With the configuration data shown inFIG. 3, whether or not to execute foreign matter correction or mirror image correction is determined on a page-by-page basis, but it may be determined whether or not to enable a circuit for achromatic image processing or a circuit for chromatic image processing, according to the result of determining whether the read page is chromatic. The correspondence table300is constituted by a structure table or the like as a program. Also, the correspondence table300may, for example, be generated dynamically by the CPU201, or stored in advance in a hard disk or a ROM.

Operation of Controller

Next, operations of the controller13will be described, taking the case where a document consisting of a plurality of sheets is read by executing a scan job as an example. However, other jobs such as a copy job or a print job may be executed, as long as processing is executed on a plurality of pages of image data. At the time the controller13executing a scan job, the CPU201of the main board200executes the scan job and the CPU221of the sub-board220executes page image processing. Furthermore, the CPU201, the dynamic reconfiguration unit211, the CPU221and the scanner16operate in tandem.

Job Processing

FIG. 4is a flowchart showing a procedure for scan job processing. The respective processing shown inFIG. 4is, for example, realized by the CPU201reading a program stored in the ROM202or the hard disk15into the RAM203and executing the program.

In step S401, the CPU201determines whether a start instruction for scan job processing given by a user has been detected via the operating unit14. If it is determined at step S401that a start instruction for scan job processing has been detected, the procedure advances to step S402, and if it is determined that a start instruction for scan job processing has not been detected, the processing of step S401is repeated.

In step S402, the CPU201selects the configuration data corresponding to the image processing required for the next page that follows, with reference to the correspondence table300shown inFIG. 3. In the present embodiment, foreign matter correction will be described as an example of image processing required for the next page.

With MFPs, there is a problem in that when moving document reading using an ADF is performed in a state where residual correction liquid, bits of paper or the like are stuck to the reading device as foreign particles or other foreign matter, black stripy images result. For this reason, first, one line of image data obtained by reading an unshown document guide board (white reference board) built into the scanner16is acquired prior to page reading. Next, the read value of each pixel is compared with the average value of all the read pixels, and it is determined that foreign matter is stuck to positions corresponding to pixels with respect to which the difference in values is greater than or equal to a threshold. If foreign matter is detected when reading of the white reference board for foreign matter detection is performed before processing each page, the processing of the next page that follows will necessarily involve foreign matter correction for performing correction after estimating the pixel data of pixels corresponding to the foreign matter from neighboring pixels. Here, if the next page is an odd page, the CPU201selects configuration data 0 with reference to the table300ofFIG. 3, because the page is an odd page with foreign matter.

In step S402, the CPU201selects configuration data in the manner described above. In step S403, the CPU201reads the selected configuration data from the hard disk15. In step S404, the CPU201transmits the configuration data read at step S403to the dynamic reconfiguration unit211of the option board210via the bus bridge208and the external bus231. Circuit reconfiguration in the dynamic reconfiguration unit211is thus started.

In step S405, the CPU201determines whether the end of reconfiguration in the dynamic reconfiguration unit211has been detected. For example, the CPU201determines whether the end of reconfiguration has been detected, based on reception of an interrupt signal by the external bus231or a reconfiguration end notification from the dynamic reconfiguration unit211via the external bus231. If it is determined at step S405that the end of reconfiguration has been detected, the procedure advances to step S406, and if it is determined that the end of reconfiguration has not been detected, the processing of step S405is repeated.

In step S406, the CPU201transmits page image processing settings and a start instruction for page reading processing via the bus bridge204and the external bus230, in order to cause the CPU221of the sub-board220to start page image processing control.

In step S407, the CPU201determines whether the bus bridge204has received, via the external bus230, notification of the end of page image processing that is transmitted at the end of page image processing control executed by the CPU221. If it is determined at step S407that the bus bridge204has received notification of the end of page image processing, the procedure advances to step S408, and if it is determined that this notification has not been received, the processing of step S407is repeated.

In step S408, the CPU201determines whether the processing of this flowchart has ended for the last page of the pages to be read in executing the scan job. Here, if it is determined that the processing has ended for the last page, the procedure shown inFIG. 4is ended. On the other hand, if it is determined that the processing has not ended for the last page, the processing from step S402is repeated.

Page Image Processing Control

FIG. 5is a flowchart showing a procedure for image processing control on a page-by-page basis. The respective processing shown inFIG. 5is realized, for example, by the CPU221reading a program stored in the ROM222or the hard disk15into the RAM223and executing the program.

In step S501, the CPU221determines whether the bus bridge225has received page image processing settings and a start instruction for page reading processing via the external bus230. If it is determined at step S501that page image processing settings and a start instruction for page reading processing have been received, the procedure advances to step S502, and if it is determined that the settings and start instruction have not been received, the processing of step S501is repeated.

In step S502, the CPU221sets the page image processing settings in the image processing unit224and in the dynamic reconfiguration unit211via the serial controller227and the setting bus232. A page image processing setting is setting information on image processing that is executed by an image processing circuit configured in the dynamic reconfiguration unit211, and in the case of the foreign matter correction circuit, for example, is a correction condition such as the number of pixels to be interpolated.

In step S503, the CPU221controls the scanner16to start reading, via the image processing unit224and the scanner bus23. This control is realized by some of the dedicated signal lines on the scanner bus23or commands using communication lines on the scanner bus23, for example. As a result of the processing of step S503, the scanner16starts reading of the document and image data output from the scanner16is input to the dynamic reconfiguration unit211. The image data image processed by the dynamic reconfiguration unit211is stored by the dynamic reconfiguration unit211in the RAM223of the sub-board220via the external bus233and the bus bridge226.

In step S504, the CPU221determines whether the bus bridge226has received notification of the end of page image processing from the dynamic reconfiguration unit211via the external bus233. The determination processing of step S504is realized as an interrupt signal on the external bus233showing the end of image processing on one page of image data calculated from the setting information set at step S502by the image processing circuit configured in the dynamic reconfiguration unit211, for example. Alternatively, a configuration may be adopted in which the bus bridge226detects that the transfer of image data output from the dynamic reconfiguration unit211has ended. If it is determined at step S504that the bus bridge226has received notification of the end of page image processing, the procedure advances to step S505, and if it is determined that this notification has not been received, the processing of step S504is repeated. In step S505, the CPU221transmits the notification of the end of page image processing to the CPU201via the bus bridge225and the external bus230, and ends the processing ofFIG. 5.

Tandem Operation at the Time of Job Execution

A sequence in which the CPU201, the CPU221, the dynamic reconfiguration unit211and the scanner16operate in tandem will be described with reference toFIG. 6.

FIG. 6is a sequence diagram representing the flowcharts ofFIG. 4that is executed by the CPU201andFIG. 5that is executed by the CPU221in time series. Processing601indicates processing that is executed by the CPU201. Processing602indicates processing that is executed by the CPU221. Processing603indicates processing that is executed by the dynamic reconfiguration unit211. Processing604indicates processing that is executed by the scanner16.

In step S601, the CPU201selects configuration data corresponding to the page image processing settings. Next, in step S602, the CPU201starts transferring the selected configuration data to the dynamic reconfiguration unit211. The dynamic reconfiguration unit211, having received the configuration data, performs circuit reconfiguration in step S603, and transmits an end notification to the CPU201in step S604when the reconfiguration ends. In step S605, the CPU201receives the notification of the end of dynamic reconfiguration.

In step S606, the CPU201transmits page image processing settings and a start instruction for page reading processing to the CPU221. In step S607, the CPU221receives the page image processing settings and the start instruction for page reading processing. In step S608, the CPU221transmits the page image processing settings received at step S607to the dynamic reconfiguration unit211. Then, in step S609, the CPU221instructs the scanner16to start page reading via the image processing unit224and the scanner bus23.

In step S610, the scanner16generates image data by optically reading the document, and transmits image data to the dynamic reconfiguration unit211. This image data is image data corresponding to the page with respect to which the start of page reading was instructed. In step S611, the dynamic reconfiguration unit211executes image processing on the image data transmitted at step S610, using the image processing circuit reconfigured at step S603.

In step S612, the dynamic reconfiguration unit211transmits notification of the end of image processing to the CPU221when image processing on the page ends. Here, the dynamic reconfiguration unit211transmits notification of the end of image processing, in the case where, for example, a synchronization signal indicating the end of the effective region of the page in the image data or the like is detected or a value exceeding a threshold is detected in the image processing determination. In step S613, the CPU221receives the notification of the end of image processing. As a result, the CPU221is able to recognize the end of page image processing. In step S614, the CPU221transmits the notification of the end of page image processing to the CPU201. In step S615, the CPU201receives the notification of the end of page image processing. As a result, the CPU201is able to recognize the end of page image processing.

As a result of the above sequence of steps S601to S615, the page sequence of tandem operation for one page of a scan job is completed. Note that, although not illustrated toFIG. 6, the determination processing of step S408inFIG. 4is subsequently performed, and if it is determined not to be the last page, the procedure returns to step S601. The scan job is executed by repeating steps S601to S615for every page.

According to the present embodiment, with regard to a scan job performed in tandem by the CPU201and the CPU221, an image processing circuit is configured in the dynamic reconfiguration unit211by the CPU201, enabling image processing of read image data to be performed on a page-by-page basis by the dynamic reconfiguration unit211. Circuits that are configured in a device capable of dynamic reconfiguration can be changed even after completion of the image processing apparatus. Therefore, in the present embodiment, the foreign matter correction circuit and mirror image correction circuit that are modified after completion of image processing apparatus can be readily applied to execution of a scan job. Also, because dynamic reconfiguration in the dynamic reconfiguration unit603is performed on a page-by-page basis, as shown in step S603ofFIG. 6, the present invention can also be readily adapted to cases where, for example, the gate scale of an FPGA is restricted.

Note that although, in the present embodiment, a scan job was described as an example, the same applies to a job that is executed on image data having a plurality of pages, such as a copy job that realizes a copy function, for example.

Second Embodiment

In the first embodiment, the CPU201performs dynamic reconfiguration of circuits in the dynamic reconfiguration unit211, and the CPU221instructs the start of page reading. The present embodiment describes a configuration that is able to further improve the processing efficiency of the overall job by shortening the page acquisition interval in the operations of the first embodiment.

Configuration of Image Processing Apparatus

The configuration of the image processing apparatus in the present embodiment is similar to the description inFIG. 1. Furthermore, the configuration of the controller13is similar to the description inFIG. 2.

FIG. 7is a diagram showing correspondence information in which a plurality of configuration data transferred to the dynamic reconfiguration unit211are associated with page settings. The correspondence information is shown in the form of a table inFIG. 7, but may be realized in forms other than a table, as long as the correspondence between configuration data and page settings is shown. Lines703,704and705of a table700show image processing circuits associated with types of pages to be read. Also, the lines703to705are each identified by an ID701.

Line703, which is identified by ID “1”, corresponds to an image processing circuit for color pages. Color pages use images in which intermediate gradations are heavily used such as photographs. Therefore, the image processing circuit for color pages performs image region separation of text, photographs and the like, and executes image processing that depends on each image region. In addition, because the image may appear to have deteriorated due to texture being produced when edges are strongly enhanced, for example, image processing that reduces gamma is executed in the image processing circuit for color pages. Such an image processing circuit optimized for color pages is configured in the dynamic reconfiguration unit211.

Line704, which is identified by ID “2”, corresponds to an image processing circuit for black-and-white pages. The image processing circuit for black-and-white pages performs image region separation of half-tone photographs, text and the like, and executes image processing according to each image region. Also, this circuit executes image processing that enhances clarity by increasing gamma. Such an image processing circuit optimized for black-and-white pages is configured in the dynamic reconfiguration unit211.

The image processing circuit for color pages and the image processing circuit for black-and-white pages are exclusively used according to whether the page to be read is achromatic or chromatic, as a result of the chromatic determination processing of a page performed before document reading.

Line705, which is identified by ID “3”, corresponds to an image processing circuit that performs mirror image correction (mirror image reversal). The image processing circuit for mirror image processing executes mirror image correction on whichever of the front side or back side (odd pages or even pages) is a mirror image due to the structure of the ADF or the attachment direction of the reading device. InFIG. 7, executing mirror image correction on odd pages is determined.

The table700defines the configuration specifications of the dynamic reconfiguration unit211, as mentioned above. The table700is defined by a structure or the like in a program. The table700may be dynamically generated by the CPU201and may be stored in advance in the hard disk15or the ROM202.

Job Processing

Next, operations of the controller13will be described, taking the case where a document consisting of a plurality of sheets is read by executing a scan job as an example. However, another job such as a copy and a print may be executed, as long as processing is executed on a plurality of pages of image data. At the time of a scan job being executed by the controller13, the CPU201of the main board200executes the scan job, and the CPU221of the sub-board220executes page image processing. Furthermore, the CPU201, the dynamic reconfiguration unit211, the CPU221and the scanner16operate in tandem.

FIG. 8is a flowchart showing a procedure for scan job processing. The respective processing shown inFIG. 8is realized, for example, by the CPU201reading a program stored in the ROM202or the hard disk15to the RAM203and executing the program.

In step S801, the CPU201determines whether a start instruction for scan job processing given by a user has been detected via the operating unit14. If it is determined at step S801that a start instruction for scan job processing has been detected, the procedure advances to step S802, and if it is determined that a start instruction for scan job processing has not been detected, the processing of step S801is repeated.

In step S802, the CPU201generates a table700that includes the contents of image processing used in the scan job. In step S803, the CPU201reads all of the configuration data that is needed to execute the scan job from the hard disk15. In the present embodiment, the configuration data 0 to 2 corresponding to IDs “1” to “3” inFIG. 7are read from the hard disk15.

In step S804, the CPU201transfers the configuration data read at step S803to the dynamic reconfiguration unit211via the bus bridge208and the external bus231. Circuit reconfiguration in the dynamic reconfiguration unit211is thus started. In step S805, the CPU201determines whether the end of reconfiguration in the dynamic reconfiguration unit211has been detected. For example, the CPU201determines whether the end of reconfiguration has been detected, based on reception of an interrupt signal via the external bus231or a reconfiguration end notification using the external bus231from the dynamic reconfiguration unit211. If it is determined at step S805that the end of reconfiguration has been detected, the procedure advances to step S806, and if it is determined that the end of reconfiguration has not been detected, the processing of step S805is repeated. At the point in time that reconfiguration in the dynamic reconfiguration unit211ends, the plurality of types of image processing circuits shown inFIG. 7have been configured in the dynamic reconfiguration unit211.

In step S806, the CPU201transmits the table700to the bus bridge225of the sub-board220via the bus bridge204and the external bus230, after detecting the end of reconfiguration in the dynamic reconfiguration unit211. The CPU221of the sub-board220is able to recognize what types of image processing circuits were reconfigured in the dynamic reconfiguration unit211, by acquiring the table700from the bus bridge225.

In step S807, the CPU201transmits page image processing settings and a start instruction for page reading processing via the external bus230, in order to cause the CPU221of the sub-board220to start page image processing control. In step S808, the CPU201determines whether the bus bridge204has received notification of the end of page image processing transmitted at the time of the end of the page image processing control executed by the CPU221via the external bus230. If it is determined at step S808that the bus bridge204has received notification of the end of page image processing, the procedure advances to step S809and if it is determined that this notification has not been received, the processing of step S808is repeated.

In step S809, the CPU201determines whether processing of this flowchart has ended for the last page of the pages to be processed in executing the scan job. Here, if it is determined that the processing has ended for the last page, the procedure shown inFIG. 8is ended. On the other hand, if it is determined that the processing has not ended for the last page, the processing from step S807is repeated.

Page Image Processing Control

FIG. 9is a flowchart showing a procedure for image processing control on a page-by-page basis. The respective processing shown inFIG. 9is realized, for example, by the CPU221reading a program stored in the ROM222or the hard disk15to the RAM223and executing the program.

In step S901, the CPU221determines whether the bus bridge225has received the table700via the external bus230. If it is determined at step S901that the table700has been received, the procedure advances to step S902, and if it is determined that the table700has not been received, the processing of step S901is repeated.

In step S902, the CPU221determines whether the bus bridge225has received page image processing settings and a start instruction for page reading processing via the external bus230. If it is determined at step S902that page settings and a start instruction for page reading processing have been received, the procedure advances to step S903, and if it is determined that the page settings and the start instruction have not been received, the processing of step S902is repeated.

In step S903, the CPU221selects a configuration ID701corresponding to page information of the page to be read from the page information of the current reading target, with reference to the table700. The CPU221then transmits the selected configuration ID701to the dynamic reconfiguration unit211via the setting bus232, and activates one of the image processing circuits respectively corresponding to the image processing of lines703to705of the table700.

Selection of a configuration ID701will be described with reference toFIG. 11. As shown inFIG. 11, the image processing circuits703to705respectively corresponding to the configuration IDs “1” to “3” defined by the table700are configured to be changeable by the dynamic reconfiguration unit211when a reconfiguration end notification is received from the dynamic reconfiguration unit211at step S805. In step S903, the CPU221transmits the configuration ID701selected via the setting bus232and changes a switch1101. This change configuration enables the image processing circuit that executes image processing on image data received via the scanner bus23to be dynamically changed at an arbitrary timing, without the mediation of the CPU201. In the present embodiment, changing of the image processing circuits703to705is configured as a switch that can be exclusively selected. However, a configuration may be adopted in which a plurality of image processing circuits are connected in a pipeline manner, and can be sequentially activated/deactivated.

In step S904, the CPU221sets the page image processing settings received at step S902in the image processing unit224and an image processing circuit configured in the dynamic reconfiguration unit211. For example, in the state showing inFIG. 11, the page image processing settings are set in the image processing circuit703. The page image processing settings are set similarly to the description in the first embodiment.

In step S905, the CPU221controls the scanner16to start reading, via the image processing unit224and the scanner bus23. This is realized by some of the dedicated signal lines of the scanner bus23or commands using communication lines on the scanner bus23, for example. As a result of the processing of step S503, the scanner16starts reading of the document, and image data that is output from the scanner16is input to the dynamic reconfiguration unit211. The image data that has undergone image processing in the dynamic reconfiguration unit211is stored by the dynamic reconfiguration unit211in the RAM223of the sub-board220via the external bus233and the bus bridge226.

In step S906, the CPU221determines whether the bus bridge226has received notification of the end of page image processing from the dynamic reconfiguration unit211via the external bus233. Determination processing of step S906is realized, for example, as an interrupt signal on the external bus233indicating the end of image processing of one page of image data calculated from the page image processing settings set up at step S904in the image processing circuit configured in the dynamic reconfiguration unit211. Alternatively, a configuration may be adopted in which the bus bridge226detect that transfer of image data from the dynamic reconfiguration unit211has ended. If it is determined that the bus bridge226has received notification of the end of page image processing at step S906, the procedure advances to step S907, and if it is determined that this notification has not been received, the processing of step S906is repeated. In step S907, the CPU221transmits notification of the end of page image processing to the CPU201via the bus bridge225and the external bus230, and ends the procedure inFIG. 9.

Tandem Operation at the Time of Job Execution

A sequence in which the CPU201, the CPU221, the dynamic reconfiguration unit211and the scanner16operate in tandem will be described with reference toFIGS. 10A and 10B.

FIGS. 10A and 10Bare sequence diagrams representing the flowcharts ofFIG. 8that is executed by the CPU201andFIG. 9that is executed by the CPU221in time series. Processing1001indicates processing that is executed by the CPU201. Processing1002indicates processing that is executed by the CPU221. Processing1003indicates processing that is executed by the dynamic reconfiguration unit211. Processing1004indicates processing that is executed by the scanner16.

In step S1001, the CPU201generates a table700including all of the contents of image processing used in a scan job. In step S1002, the CPU201starts transferring the configuration data 0 to 2 corresponding to the image processing circuits703to705to the dynamic configuration unit211. After transfer has been started, the dynamic configuration unit21, in step S1003, starts configuring the internal image processing circuits703to705. In step S1004, the dynamic configuration unit211transmits an end notification to the CPU201at the time of the end of dynamic reconfiguration. In step S1005, the CPU201receives notification of the end of dynamic reconfiguration.

In step S1006, the CPU201transmits the table700shown inFIG. 7to the CPU221. The CPU221receives the table700. As a result, the CPU221is able to recognize what types of image processing circuits have being configured in the dynamic reconfiguration unit211, and is able to recognize the configuration ID corresponding to each image processing circuit.

In step S1007, the CPU201transmits page image processing settings and a start instruction for page reading processing to the CPU221. In step S1008, the CPU221receives the page image processing settings and the start instruction for page reading processing.

In step S1009, the CPU221selects an configuration ID701from the table700based on the page image processing settings received at step S1008, and transmits selected configuration ID701to the dynamic reconfiguration unit211. In step S1010, the switch1101of the dynamic reconfiguration unit211changes such that the image processing circuit corresponding to configuration ID701transmitted in step S1009is activated. In step S1011, the CPU221transmits the page image processing settings received at step S1008to the dynamic reconfiguration unit211. In step S1012, the CPU221then instructs the scanner16to start page reading, via the image processing unit224and the scanner bus23.

In step S1013, the scanner16generates image data by optically reading the document, and transmits the image data to the dynamic reconfiguration unit211. This image data is image data corresponding to the page with respect to which the start of page reading was instructed. In step S1014, the dynamic reconfiguration unit211executes image processing on image data transmitted at step S1013, using the image processing circuit activated by the switch1101.

In step S1015, the dynamic reconfiguration unit211transmits notification of the end of image processing to the CPU221when image processing on this page ends. Here, the dynamic reconfiguration unit211transmits notification of the end of image processing, in the case where, for example, a synchronization signal indicating the end of the effective region of the page in image data or the like is detected or a value exceeding a threshold in the image processing determination or the like is detected. In step S1016, the CPU221receives the notification of the end of image processing. As a result, the CPU221is able to recognize the end of page image processing. In step S1017, the CPU221transmits the notification of the end of page image processing to the CPU201. In step S1018, the CPU201receives the notification of the end of page image processing. As a result, the CPU201is able to recognize the end of page image processing.

Although not illustrated inFIGS. 10A and 10B, processing for determining the last page of step S809inFIG. 8is performed after the processing of step S1018, and the procedure returns to step S1007if it is determined not to be the last page. That is, in the present embodiment, the CPU201does not perform the processing of step S1003for every page. Instead, image processing is executed in step S1014by the CPU221changing the switch1101via the setting bus232for every page to be read.

The present embodiment differs from the first embodiment in that in step S1010the CPU221selects an image processing circuit that is configured in the dynamic reconfiguration unit211. In the present embodiment, the CPU201initially performs reconfiguration in the dynamic reconfiguration unit211only once, and thus even in the case where the dynamic reconfiguration unit211has a limited number of writings due to a NAND process or the like, the rate at which the limited number of writings are consumed can be reduced. Also, compared with the first embodiment that performs circuit reconfiguration at the timing of each interval between pages, the processing time between pages during scanning can be shortened, and, as a result, the processing efficiency of the overall scan job can be further improved.

Also, changing in the dynamic reconfiguration unit211must be performed when image data is not being communicated on the scanner bus23, and thus needs to be performed after detecting the end of scanning. In the present embodiment, the CPU221that controls the scanner16performs changing, and thus changing can be performed quickly immediately after detecting the end of scanning. As a result, it becomes possible, for example, to scan continuously without affecting the continuous feeding operation of the ADF.

Although, the above embodiments were described in terms of scanning being performed using image processing circuits that have been dynamically configured, a configuration may be adopted in which image processing circuits are also dynamically configured on a page-by-page basis at the time of executing other types of jobs. For example, the configurations ofFIGS. 1 and 2may be adopted with regard to a print job, and image processing according to each page may be performed.

Other Embodiments

This application claims the benefit of Japanese Patent Application No. 2014-255442, filed Dec. 17, 2014, which is hereby incorporated by reference herein in its entirety.