Image processing apparatus and method

An apparatus for executing image processing by a plurality of serially connected image processing modules stores, in memory, set values for the plurality of image processing modules and image data to be processed by the plurality of image processing modules, adds headers to respective ones of the set values and image data that have been read out of the memory and transmits the result to a top image processing module among the plurality of image processing modules.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to an image processing apparatus and method.

2. Description of the Related Art

An image processing module generally has two types of interface, namely a CPU interface for setting a register and a data interface for inputting and outputting image data. In order for control to be performed by the CPU interface, such an image processing module requires execution of the following sequence:

notifying the CPU of end of image processing by an interrupt after a series of image processes ends; and

starting the next image processing operation after the setting of a register for the purpose of the next process.

Further, in a case where a change in the CPU is accompanied by a change in the CPU interface, the image processing module must be re-fabricated or the interface must be converted as by a wrapper.

In order to solve these problems, a method of putting data for setting a register and image data to be processed in the form of commands and transferring the commands on the same path has been proposed. The flow of processing according to this method will be described with reference toFIG. 1.

FIG. 1is a block diagram of an image processor for executing a series of image processing operations. Shown inFIG. 1are a CPU701; DMACs702,706for controlling DMA transfer; image processing modules703to705(modules A to C); a memory controller707; and a memory708. A gamma correction circuit and color conversion circuit, etc., can be mentioned as the image processing modules703to705. “DMA” is the abbreviation of “Direct Memory Access”.

Before the start of image processing or in predetermined units of processing, the CPU701generates a register command for reading and writing from and to a register in each image processing module, or a data command containing pixel data.

FIGS. 2A and 2Billustrate specific examples of formats of these commands. As shown inFIG. 2A, the register command contains header information, a register address and a register set value. The header information includes a command identification bit, a module ID and a read/write identification bit. The command identification bit indicates whether the command is a register command or a data command. For example, the command is a register command if the command identification bit is “1” and is a data command, which is shown inFIG. 2B, if the command identification bit is “0”. The image processing modules determine whether the command type is the register command or data command by referring to the command identification bit. The module ID indicates in which image processing module the register command will be set. By referring to the module ID, the image processing module determines whether the received register command is for setting its own register. The read/write identification bit represents whether the register command is a read or write command. For example, the register command is register write (register write command) if the read/write identification bit is “1” and register read (register read command) if the read/write identification bit is “0”.

On the other hand, as illustrated inFIG. 2B, the header information of the data command includes a command identification bit having a value of “0” indicative of the data command, and an image control signal such as a data-start bit and a data-end bit. The CPU701stores the created command in memory708.

Further, the CPU701also puts image data in the form of a command and stores it in the memory708as a data command. When a command in a prescribed unit of processing is stored in the memory708, the CPU701sets an access address, which is for accessing the memory708, in the registers of the DMACs702and706and starts operating.

The DMAC702reads in commands from the memory708successively and transfers the commands to image processing module A. In a case where the image processing module B (704) and image processing module C (705) have determined that an entered command is the register write command and, moreover, that the command is directed at itself as determined from the module ID, a register setting is performed. When the accepted command is the register read command, a value read from the target register indicated by the register address is set as the register set value of the read command and is transferred to the next image processing module. When the received command is the data command, processing is executed using this data, the result of processing is set in the data command and the command is transferred to the next image processing module. The DMAC706accepts the command that has been output from the image processing module C (705) and writes the command to the memory708.

Thus, it is so arranged that setting of a register and data input can be set from the same port. This means that any sequence can be executed without a CPU interrupt. A further advantage is that even if there is a change in the CPU interface, no change whatsoever is required of the image processing modules.

Further, Japanese Patent Application Laid-Open No. 10-011388 describes a DMA control apparatus having a controller for generating transfer-source and transfer-destination addresses in order to lighten the CPU load.

However, in a case where it is so arranged that header information other than a register set value and addresses are stored in the memory708, a large memory capacity and transmission band are required. As a consequence, needless memory capacity and transmission band are consumed. Further, in a case where it has been arranged to put image data in command form and store the command, the task of converting the image data to a command is required of the CPU701and the load on the CPU is increased. Furthermore, the task relating to the conversion to a command is not overcome even if the DMA control apparatus of Japanese Patent Application Laid-Open No. 10-011388 is applied.

SUMMARY OF THE INVENTION

An object of the present invention is to operate an image processing module with a memory having a small memory capacity and small transmission band.

Another object of the present invention is to alleviate CPU load.

A further object of the present invention is to provide an image processing apparatus comprising: a plurality of serially connected image processing units; a storage unit configured to store set values for the plurality of image processing units and image data to be processed by the plurality of image processing units; and a transmission unit configured to add headers to respective ones of the set values and image data that have been read out of the storage unit and to transmit the result to a top image processing unit among the plurality of image processing units.

A further object of the present invention is to provide a method of executing image processing by a plurality of serially connected image processing modules, the method comprises: a storage step of storing, in memory, set values for the plurality of image processing modules and image data to be processed by the plurality of image processing modules; and a transmission step of adding headers to respective ones of the set values and image data that have been read out of the memory and transmitting the result to a top image processing module among the plurality of image processing modules.

DESCRIPTION OF THE EMBODIMENTS

FIG. 3is a block diagram illustrating the configuration of an image processing apparatus according to an embodiment. Shown inFIG. 3are a CPU101; DMACs102,106; image processing modules103to105(modules A to C); a memory controller107; a memory108, a command generating unit109and a command decomposing unit110. AlthoughFIG. 3illustrates a case where there are three image processing modules, the number of image processing modules may be four or more or two or less.

The CPU101stores register set values and image data in the memory108. Register set values and image data will also be referred to generically as “data to be processed” below. The DMAC102reads the data to be processed out of the memory108by direct memory access. Using the read data to be processed (register set values or image data), the command generating unit109generates commands of the kind shown inFIGS. 2A and 2B. The DMAC102transfers the command generated by the command generating unit109to the image processing module A (103). The command generating unit109within the DMAC102generates a command by adding control information, which is for making the conversion to a command, to a register set value or image data that has been read out of the memory108.

As illustrated inFIG. 2A, control information for a register command is composed of header information and a register address. Control information for a data command is composed of header information, as shown inFIG. 2B. The image processing module A (103), image processing module B (104) and image processing module C (105) execute prescribed processing in accordance with the command that is input thereto. Specifically, these image processing modules process the commands, which are shown inFIGS. 2A,2B, having a form in which the control information has been added to the register set value or pixel data. A gamma correction circuit and color conversion circuit, etc., can be mentioned as examples of such image processing modules.

Further, the DMAC106transfers a register set value and pixel data to the memory controller107and writes these to the memory108. The command decomposing unit110within the DMAC106decomposes a command that has been received from the image processing module C (105) and generates a register set value or pixel data. That is, the DMAC106functions as a second transmission unit for writing, to memory108, a register set value or pixel data extracted by the command decomposing unit110from a processed command that has been output from the image processing module C (105).

Before a detailed description is given, the registers of an image processing module in which a register setting in accordance with a register command is to be made will be described.FIG. 4is a diagram explaining register configuration of the image processing modules. Assume that the ID of the image processing module A (103) is 1, that the starting address of a register is SA1and that the number of registers is N1. Similarly, assume that the ID of the image processing module B (104) is 2, that the starting address of a register is SA2and that the number of registers is N2. Furthermore, assume that the ID of the image processing module C (105) is 3, that the starting address of a register is SA3and that the number of registers is N3. Assume also that the data width of a register set value is 32 bits. In this embodiment, it is assumed that eight bits are allocated to one address.

Next, reference will be had toFIGS. 5A and 5Bto describe the manner in which data necessary for generating a command is stored in the memory108by the CPU101. In a case where a register set value is stored in the memory108, header information is stored first before the register set value is stored. Specifically, as indicated at MSA0, MSA0+4(N1+1), . . . inFIG. 5A, 32-bit control information is stored as the header information and contains the following:module ID from the 31stbit to the 26thbit;a read/write bit at the 25thbit (the command is assumed to be a write command when this bit is “1” and a read command when this bit is “0”);number of registers from the 24thbit to the 16thbit; andtop address of the register from the 15thbit to the 0thbit.

Register set values, which are data to be processed in the image processing module, are stored from the next memory address and the number thereof is equivalent to the number of registers mentioned above.

On the other hand, in a case where pixel data is stored, 32-bit control information is stored as the header information, as indicated at memory address MSA0+4(N1+N2+N3+3), and contains the following:0 as module ID from the 31stbit to the 26thbit; andnumber of input pixels from the 25thbit to the 0thbit.

Pixel data, which is data to be processed in the image processing module, is stored from the next memory address and the number of items thereof is equivalent to the number of pixels.

Thus, as illustrated inFIG. 5A, data used in generating control information for converting data to a command and data to be processed and that is to be transferred are stored in continuous address space of memory108such as at MSA0to MSA0+4*(N1). Continuous address space in memory for storing data used in generating control information and data to be processed and that is to be transferred, such as indicated inFIG. 5A, will also be referred to as a “first address space” below.

Next, the CPU101stores header information in the memory108. The header information is necessary in order to store data read out of the image processing module C (105) by the DMAC106in the memory108. That is, in a case where register set values are stored, the following are stored as indicated at memory addresses MSA1, MSA1+4(N1+1), . . . inFIG. 5B:module ID from the 31stbit to the 26thbit; andnumber of registers from the 24thbit to the 16thbit.

On the other hand, in a case where pixel data are stored, the following are stored as indicated at memory addresses MSA1+4(N1+N2+N3+3) inFIG. 5B:0 as module ID from the 31stbit to the 26thbit; andnumber of input pixels from the 25thbit to the 0thbit.

Further, as illustrated inFIG. 5B, a continuous address space for storing the register and pixel data in the numbers indicated by the control data is reserved following the address storing the header information.

Thus, data indicating the data amount of register set values or pixel data to be stored successively is stored over a prescribed address range at the beginning of the continuous address space of memory108. A memory area having a size corresponding to this data amount is reserved following the prescribed address range within the continuous address space. It should be noted that this continuous address space in the memory will also be referred to as a “second address space” below.

Next, the CPU101sets memory address MSA0in the register of DMAC102and sets memory address MSA1in the register of DMAC106. Thus, the CPU101functions as a first storage unit that stores data for control-information generation in a prescribed address range at the beginning of the first address space of memory108and that stores data to be processed in an area that follows the prescribed address range. The CPU101sets the top address MSA0of the first address space in the DMAC102as the starting address of direct memory access. Further, the CPU101functions as a second storage unit that stores control information, which indicates the data amount to be stored from now onward, in a prescribed address range at the beginning of the second address space of memory108, and that reserves a area corresponding to the above-mentioned data amount following the prescribed address range of the second address space. The CPU101sets a top address MSA1of the second address space in the DMAC106as the starting address of direct memory access.

After operation starts, the DMAC102sets the memory address MSA0, which has been set in the register, in an address counter within the DMAC102. Owing to such processing, the DMAC102reads the data to be processed out of the first address space of memory108successively by direct memory access. The command generating unit109adds control information onto the data to be processed that has been read out, thereby generating a command capable of being processed by an image processing module, and transmits the command to the image processing module A (103). That is, the DMAC102and command generating unit109construct a first transmission unit for converting the data to be processed, which has been read out out of the memory108, to a command and transmitting the command to the image processing module A (103).

Next, processing for generating a command by the command generating unit109within the DMAC102will be described in detail with reference to the flowchart shown inFIG. 6.

InFIG. 6, the DMAC102starts register setting processing (step S401). The DMAC102then reads data from a memory address of memory108indicated by the address counter and stores this data in a register (not shown) possessed by the DMAC102(step S402). As a result of this processing, header information is stored in the register of the DMAC102. The address counter is then incremented (step S403).

Next, the command generating unit109determines whether the command identification bit in the header information stored in the register at step S402is 0 or not (step S404). If the command identification bit is not 0, then the command generating unit109decides that the command is a register command (FIG. 2A). In this case, the data that has been read out of the memory108is module ID, value of the read/write identification bit, number of registers and register address. Accordingly, the command generating unit109stores the module ID, the value of the read/write identification bit, the number of registers and the register address in its own register (step S405).

Next, the command generating unit109determines whether the subsequent processing (steps S407to S410) has been executed a stipulated number of times (step S406). In this embodiment, the data of one register is 32 bits (FIG. 5A) and four addresses are necessary. Therefore, 4×(number of registers stored at step S405) is the stipulated number. If the number of processing cycles has reached the stipulated number, the processing according to this flowchart is exited (step S416). If the number of processing cycles has not reached the stipulated number, on the other hand, then the command generating unit109reads data (a register set value) from the memory address of memory108indicated by the address counter (step S407). The command generating unit109then generates a register command having the format ofFIG. 2Ausing the module ID, read/write bit value and register address stored at step S405(step S408). The command generating unit109then increments the register address (step S409) and increments the address counter (step S410). Processing then returns to step S406.

As mentioned above, the control information added onto a register set value includes the register address of the storage location of this register set value in the image processing module. Accordingly, when the first command is generated, the command generating unit109decides the first register address based upon the control data (steps S405, S408). With regard to register addresses of commands from the second onward, use is made of a value obtained by adding a prescribed value to the register address included in the control information of the immediately preceding command (step S409).

On the other hand, if it is determined at step S404that the command identification bit is 0, then the command generating unit109acquires the number of pixels as a data command from the applicable header information and stores the number in its own register (step S411). Next, the command generating unit109determines whether the subsequent processing (steps S413to S415) has been executed a stipulated number of times (step S412). Here the stipulated number is a value obtained by dividing “number of pixels” by “number of pixels stored at one address”, by way of example. In this embodiment, since one pixel has 48 bits, as shown inFIG. 5B, six addresses are necessary and 6×(number of pixels stored at step S411) is the stipulated number. The command generating unit109ends processing if the stipulated number is attained (step S416).

In a case where it is determined at step S412that the stipulated number has not been attained, the command generating unit109then reads data from the memory address indicated by the address counter (step S413) and generates a data command having the format ofFIG. 2B(step S414). It should be noted that in the creation of the command at step S414, the command generating unit109refers to the number of times the loop at step S412is executed, sets the data-start bit to “1” at creation of the data command of the initial pixel and sets the data-start bit to “0” with respect to data commands of other pixels. Further, with respect to the data command of the final pixel, the command generating unit109sets data end to “1” and sets data end to “0” with respect to data commands of other pixels. Next, the command generating unit109increments the address counter (step S415). Control then returns to step S412.

An example of commands generated by the above-described processing is illustrated inFIG. 7. The order in which commands are generated and transmitted is indicated by the arrow inFIG. 7. Headers1to3are headers for register commands (FIG. 2A), and “1” is stored as the command identification bit. Further, values 1, 2, 3 are stored as module IDs of the headers1to3, and “1” indicative of “write” is stored as the read/write identification bit. Here it is assumed that the CPU101has stored “1”, indicative of “write”, in a storage area of the read/write identification bit of memory108in order to perform the register setting. Further, header (DS), header (D) and header (DE) represent the headers of the respective data commands, and “0” has been stored as the command identification bit. Further, as flags for data control, data start=“1” and data end=“0” have been stored in the header (DS), data start=“0” and data end=“0” have been stored in the header (D), and data start=“0” and data end=“1” have been stored in the header (DE).

As mentioned above, on the basis of the data that has been stored in the prescribed address range at the beginning of the first address space, the command generating unit109generates control information for changing a register set value or pixel data within the first address space to a command. By adding data to be processed, which has been read out from the prescribed address range onward in the first address space, onto the control information, the command generating unit109converts the data to a command and transmits the command to the image processing module A (103).

The generated command is transmitted to the image processing module A (103), passes through all of the image processing modules and the register setting is performed.

After operation of the DMAC106starts, the memory address MSA1set in the register beforehand is set in the address counter within the DMAC106.

Next, the command decomposing unit110within the DMAC106executes command decomposing processing. This processing will be described with reference to the flowchart ofFIG. 8.

InFIG. 8, the command decomposing unit110within the DMAC106starts command decomposing processing (step S901), reads data from the memory address of memory108indicated by the address counter and stores this data in its own register (not shown) (step S902). Here the data read out and stored is the header information at address MSA1shown inFIG. 5B. Next, the command decomposing unit110increments the address counter (step S903).

Next, the command decomposing unit110determines whether the command identification bit of the header information stored at step S902is 0 (step S904). If the command identification bit is not 0, the command decomposing unit110determines whether this header information relates to a register command. The command decomposing unit110then reads out the value represented by the 16thto 24thbits of the header information of the module ID stored in the memory108ofFIG. 5Band stores the value in the register of the DMAC106as the number of registers (step S905). Next, the command decomposing unit110determines whether the subsequent processing (steps S907and S908) has been executed a stipulated number of times (step S906). The stipulated number is similar to that described at step S406. If the number of processing cycles has reached the stipulated number, the processing according to this flowchart is exited (step S913). If the number of processing cycles has not reached the stipulated number, the command decomposing unit110continues processing. That is, the command decomposing unit110receives the command from the image processing module C (105) and stores the register set value within this command at the memory address indicated by the address counter (step S907). The command decomposing unit110then increments the address counter (step S908) and processing returns to step S906.

On the other hand, if it is determined at step S904that the command identification bit is 0, then the command decomposing unit110stores the value that has been recorded at bits0to25of the applicable header information stored in memory108shown inFIG. 5Bin the register of the DMAC106as the number of pixels.

Next, the command decomposing unit110determines whether the subsequent processing (steps S911and S912) has been executed a stipulated number of times (step S910). The stipulated number is similar to that described at step S412. If the number of processing cycles has reached the stipulated number, the processing according to this flowchart is exited (step S913). If the number of processing cycles has not reached the stipulated number, then the command decomposing unit110receives the command from the image processing module C (105) and stores the pixel data within this command at the memory address of memory108indicated by the address counter. The command decomposing unit110then increments the address counter (step S912) and processing returns to step S910.

Thus, the DMAC106and the command decomposing unit110extract data from commands output successively from the image processing module C (105) and store the data successively in the second address space of memory108. The extraction and storing processing is repeated a number of times decided based upon the data amount (number of registers and number of pixels) acquired at step S905or step S909.

FIG. 9illustrates how register set values and image data have been stored in memory108by the above-described processing. Specifically, register set values and pixel data of commands received from the image processing module C (105) are stored in the address space of memory108, which has been prepared as shown inFIG. 5B, by the DMAC106in the manner illustrated inFIG. 9.

By thus adopting an arrangement in which the DMAC102performs command generation and the DMAC106performs command decomposition, there is no longer redundant data such as header information stored in a case where commands are stored in memory. As a result, it is possible to reduce memory capacity and the transmission band between the DMAC and memory. Further, there is no longer any load upon the CPU101in terms of converting register set values and pixel data to commands.

The present invention includes cases where the object of the invention is attained also by supplying a software program directly or remotely to a system or apparatus, reading the supplied program codes with a computer of the system or apparatus, and then executing the program codes. In this case, the program supplied is a program corresponding to the flowcharts illustrated in the drawings of the embodiment.

Accordingly, since the functional processing of the present invention is implemented by computer, the program codes per se installed in the computer also implement the present invention. In other words, the present invention also covers a computer program that is for the purpose of implementing the functional processing of the present invention.

In this case, so long as the system or apparatus has the functions of the program, the form of the program, e.g., object code, a program executed by an interpreter or script data supplied to an operating system, etc., does not matter.

Examples of recording media for supplying the program are a flexible disk, hard disk, optical disk, magneto-optical disk, CD-ROM, CD-R, CD-RW, magnetic tape, non-volatile type memory card, ROM, DVD (DVD-ROM, DVD-R), etc.

As for the method of supplying the program, a client computer can be connected to a website on the Internet using a browser possessed by the client computer, and the computer program of the present invention can be downloaded to a recording medium such as a hard disk. In this case, the program downloaded may be a file that is compressed and contains an automatic installation function. Further, implementation is possible by dividing the program codes constituting the program of the present invention into a plurality of files and downloading the files from different websites. In other words, a WWW server that downloads, to multiple users, the program files that implement the functional processing of the present invention by computer also is included in the present invention.

Further, it is also possible to encrypt and store the program of the present invention on a storage medium such as a CD-ROM and distribute the storage medium to users. In this case, users who meet certain requirements are allowed to download decryption key information from a website via the Internet, the program decrypted using this key information can be executed and the program can be installed on a computer.

Further, besides implementing the functions of the embodiment by executing a read program using a computer, the functions of the embodiment may be implemented in cooperation with an operating system running on a computer, based upon commands from the program. In this case, the operating system, etc., executes some or all of the functions of actual processing and the functions of the above-described embodiment are implemented by this processing.

Furthermore, a program that has been read from a recording medium may be written to a memory provided on a function expansion board inserted into the computer or provided in a function expansion unit connected to the computer, and some or all of the functions of the embodiment may be implemented. In this case, after the program has been written to the function expansion board or function expansion unit, a CPU or the like provided on the function expansion board or function expansion unit performs some or all of the actual processing based upon the indications in the program.

This application claims the benefit of Japanese Patent Application No. 2007-264969, filed Oct. 10, 2007, which is hereby incorporated by reference herein in its entirety.