This application is based upon and claims the benefit of priority from prior Japanese Patent Applications No. 2009-150004, filed Jun. 24, 2009; and No. 2010-13774, filed Jun. 16, 2010, the entire contents of both of which are incorporated herein by reference.
1. Field of the Invention
This invention relates to the technique for shortening the processing time of an image processing apparatus.
2. Description of the Related Art
An image processing apparatus which divides one frame of image data into a plurality of blocks, inputs divided blocks of image data via a lower-capacity memory to a plurality of image processing blocks connected in series, and processes the divided blocks has been disclosed in, for example, Jpn. Pat. Appln. KOKAI Publication No. 2000-312327. With the configuration of Jpn. Pat. Appln. KOKAI Publication No. 2000-312327, image data can be read from a frame memory, such as an SDRAM, once and written into the frame memory once, thereby processing a plurality of images.
In the configuration of Jpn. Pat, Appln. KOKAI Publication. No. 2000-312327, a process completion interrupt signal is issued to the CPU acting as a control block each time the processing of a block is completed. With such a configuration, since the CPU must process the next block each time an interrupt signal is issued, the load on the CPU is liable to increase. Therefore, in Jpn. Pat. Appln. KOKAI Publication No. 2005-78608, a sequencer, another control block differing from the CPU, is used as means for decreasing the load on the CPU. In Jpn. Pat. Appln. KOKAI Publication No. 2005-78608, the sequencer can control the processing of a halfway block in one frame to decrease the load on the CPU.
Furthermore, Jpn. Pat. Appln. KOKAI Publication No. 2005-44098 has disclosed a configuration (or a distortion correction range computing unit) which calculates an input image range where distortion correction is to be made from an output image range when a distortion correction process is carried out as image processing. In Jpn. Pat. Appln. KOKAI Publication No. 2005-44098, when a sequencer controls the distortion correction block, the sequencer has to control the distortion correction range computing unit for each of a plurality of blocks into which one frame has been divided.
According to a first aspect of the invention, there is provided an image processing apparatus comprising: an image processing block configured to carry out a specific process based on input setting data; a plurality of control blocks configured to control the specific process of the image processing block independently; and a plurality of register sets configured to be used in data communication between each of the plurality of control blocks and the image processing block, wherein each of the remaining control blocks performs data communication with the image processing block using the corresponding register set when any one of the plurality of control blocks is controlling the specific process of the image processing block.
According to a second aspect of the invention, there is provided an image processing apparatus comprising: an image processing apparatus comprising: a plurality of control blocks; an image processing block configured to be accessible equally by the plurality of control blocks, wherein any one of the plurality of control blocks not only accesses the image processing block without intervention of a bus line but also issues a start trigger signal to the image processing block when accessing the image processing block, the image processing block not only carries out a specific process in response to the start trigger signal but also issues an interrupt signal to the control block that issued the start trigger signal at the end of the specific process, and exclusive control of the image processing block is performed based on the start trigger signal and the interrupt signal.
Advantages of the invention will be set forth in the description which follows, and in part will be obvious from the description, or may be learned by practice of the invention. Advantages of the invention may be realized and obtained by means of the instrumentalities and combinations particularly pointed out hereinafter.
The accompanying drawings, which are incorporated in and constitute a part of the specification, illustrate embodiments of the invention, and together with the general description given above and the detailed description of the embodiments given below, serve to explain the principles of the invention.
Hereinafter, referring to the accompanying drawings, an embodiment of the invention will be explained.
The image processing apparatus 100 divides one frame of image data stored in the frame memory 300 into a plurality of blocks and performs specific image processing on each of the divided blocks. The configuration of the image processing apparatus 100 of
The bus line 200 is a transfer path for transferring various types of digital data, including data generated at the image processing apparatus 100 and the image data stored in the frame memory 300. The image processing apparatus 100, imaging unit 300, frame memory 400, and display unit 500 are connected to the bus line 200. The image processing apparatus 100, imaging unit 300, frame memory 400, and display unit 500 are configured to enable data communication via the bus line 200.
The imaging unit 300 obtains image data by imaging a subject. The frame memory 400 stores various types of digital data, including image data obtained by the imaging unit 300. The display unit 500 displays an image based on the image data stored in the frame memory 400 as a result of image processing at the image processing apparatus 100.
Next, the image processing apparatus 100 will be explained in detail. The image processing apparatus 100 of
The CPU 101 functioning as a control block supervises the overall operation of the image processing system, including control of a distortion correction process for each of the blocks divided at the image processing unit 104, control of the operation of the imaging unit 300, and control of the operation of display unit 500. The sequencer 102 functioning as a control block differing from the CPU 101 controls the distortion correction process for each of the blocks divided at the image processing module 104 without the intervention of the bus line 200, while monitoring the operating cycle of the CPU 101.
In the embodiment, the CPU 101 and sequencer 102 set a setting register in the image processing unit 104 when a distortion correction process is started block by block. In addition, the CPU 101 and sequencer 102 issue a start trigger signal after having set the setting register, thereby controlling a distortion correction range computing unit in the image processing module 104. Furthermore, after the distortion correction range computing unit has calculated a distortion correction range, the CPU 101 and sequencer 102 refer to a register value held in a result storage register and input the register value to the distortion correction unit of the image processing module 104, thereby starting a distortion correction process.
The sequencer 102 of the embodiment includes a start trigger register 102a acting as a holding block. The start trigger register 102a is a register for holding a start trigger signal issued by the CPU 101.
The CPU interface 103 functions as an interface for enabling the CPU 101 to communicate with the sequencer 102 and image processing unit 104. The CPU interface 103 also functions as an interface for enabling the sequencer 102 to communicate with the CPU 101 and image processing unit 104.
The image processing unit 104 performs a distortion correction process on image data read from the frame memory 400 via the bus line 200 under the control of the CPU 101 or sequencer 102. The image processing unit 104 includes a distortion correction range computing unit 1041, setting registers 1042a, 1042b, result storage registers 1043a, 1043b, selectors 1044a, 1044b, and a distortion correction unit 1045.
The distortion correction range computing unit 1041 functioning as an image processing block calculates a distortion correction range for each block according to setting data set in setting register 1042a or setting register 1042b. Generally, in a distortion correction process for each block, a rectangular block as shown in
In the embodiment, the CPU 101 sets setting data corresponding to a block to be processed first in one frame of image data (e.g., block 1, a block at the top left) and the sequencer 102 sets setting data corresponding to the remaining blocks. With this configuration, the CPU 101 need not control the distortion correction processes performed on all the blocks. Accordingly, the load on the CPU 101 can be decreased.
Setting register 1042a and result storage register 1043a are a register set for enabling the CPU 101 to communicate with the distortion correction range computing unit 1041. Setting register 1042a holds setting data set by the CPU 101. Result storage register 1043a holds the result of calculating a distortion correction range based on the setting data set by the CPU 101 (i.e., distortion correction range data).
Setting register 1042b and result storage register 1043b are a register set for enabling the sequencer 102 to communicate with the distortion correction range computing unit 1041. Setting register 1042b holds setting data set by the sequencer 102. Result storage register 1043b holds the result of calculating a distortion correction range based on the setting data set by the sequencer 102 (i.e., distortion correction range data).
As described above, in the embodiment, setting register 1042a and result storage register 1043a are used exclusively by the CPU 101. Setting register 1042b and result storage register 1043b are used exclusively by the sequencer 102. With this configuration, setting data set by one of the CPU 101 and sequencer 102 will not be overwritten when the other sets setting data. Result data held under the control of the distortion correction computing unit 1041 of one of the CPU 101 and sequencer 102 will not be overwritten when the distortion correction computing unit 1041 of the other performs control.
According to the start trigger signal input from the sequencer 102, selector 1044a selects either setting register 1042a or setting register 1042b. According to the start trigger signal input from the sequencer 102, selector 1044b selects either result storage register 1043a or result storage register 1043b.
In the embodiment, the start trigger signal issued by the CPU 101 differs from the start trigger signal issued from the sequencer 102 in logic level. Selector 1044a and selector 1044b can identify a start trigger signal. If the input start trigger signal has been issued by the CPU 101, selector 1044a selects setting register 1042a. If the input start trigger signal has been issued by the sequencer 102, selector 1044a selects setting register 1042b. If the input start trigger signal has been issued by the CPU 101, selector 1044b selects result storage register 1043a. If the input start trigger signal has been issued by the sequencer 102, selector 1044b selects result storage register 1043b.
The distortion correction unit 1045 reads image data in a range according to a value (a distortion correction range) in result storage register 1043a referred to by the CPU 101 or a value (a distortion correction range) in result storage register 1043b referred to by the sequencer 102 from the frame memory 400 via the bus line 200 and carries out a distortion correction process.
Next, the operation of the image processing apparatus 100 of
As described above, a distortion correction process for block 1, the first block in each frame, is controlled by the CPU 101. In this case, control shown in
The sequencer 102 determines whether the CPU 101 has issued a start trigger signal (step S102). The sequencer 102 waits until the CPU 101 issues a start trigger signal. In step S102, when the CPU 101 has issued a start trigger signal, the sequencer 102 stores the start trigger signal issued by the CPU 101 in the start trigger register 102a via the CPU interface 103 (step S103). Thereafter, the sequencer 102 determines whether the sequencer 102 itself is using the distortion correction range computing unit 1041, or controlling the distortion correction range computing unit 1041 (step S104). If it has been determined in step S104 that the sequencer 102 itself is using the distortion correction range computing unit 1041, the sequencer 102 waits, while making a determination in step S104. If it has been determined in step S104 that the sequencer 102 itself is not using the distortion correction range computing unit 1041, the sequencer 102 outputs the start trigger signal held in the start trigger register 102a (step S105). In response to the start trigger signal, the distortion correction range computing unit 1041 reads the setting data set in the setting register 1042a via selector 1044a and computes a distortion correction range corresponding to block 1 using the read setting data. As shown in
After having calculated a distortion correction range, the distortion correction range computing unit 1041 stores the distortion correction range calculation result into result storage register 1043a via selector 1044b (step S107). After having stored the calculation result, the distortion correction range computing unit 1041 issues an interrupt signal to the CPU 101 via the CPU interface 103 (step S108). In response to the interrupt signal, the CPU 101 refers to the calculation result stored in result storage register 1043a via the CPU interface 103 and inputs the calculation result to the distortion correction unit 1045 via the CPU interface 103 (step S109). In response to the input of the calculation result, the distortion correction unit 1045 carries out a distortion correction process on block 1. After having input the calculation result to the distortion correction unit 1045, the CPU 101 issues a start trigger signal to the sequencer 102 to cause the sequencer 102 to operate. In response to the start trigger signal, the sequencer 102 reads the sequence code stored in the frame memory 400 via the bus line 200 and carries out a distortion correction process on block 2 and subsequent ones. In this case, control shown in
At the time when the distortion correction range computing unit 1041 issues an interrupt signal, the CPU 101 might be controlling another block whose priority is higher than that of the image processing apparatus 100. In such a case, after an interrupt processing response time, the time required to complete control of another block with a higher priority, has passed, the calculation result stored in result storage register 1043a is referred to.
In
After having calculated a distortion correction range, the distortion correction range computing unit 1041 stores the distortion correction range calculation result in result storage register 1043b via selector 1044b (step S205). After having stored the calculation result, the distortion correction range computing unit 1041 issues an interrupt signal to the sequencer 102 via the CPU interface 103 (step S206). In response to the interrupt signal, the sequencer 102 refers to the calculation result stored in result storage register 1043b via the CPU interface 103 and inputs the calculation result to the distortion correction unit 1045 via the CPU interface 103 (step S207). As a result, the distortion correction unit 1045 carries out a distortion correction process. The operations in step S201 to step S207 are repeated until the processing of one frame of image data in a block has been completed.
As described above, in the embodiment, a setting register and a result storage register are provided for each of the CPU and the sequencer. Accordingly, even in a period excluding a distortion correction process of block 1, the CPU 101 can use the distortion correction range computing unit 1041 in a period when the sequencer 102 is not controlling the distortion correction range computing unit 1041. Therefore, as shown in
In the embodiment, to input the start trigger signal issued by each of the CPU 101 and sequencer 102 exclusively to the distortion correction range computing unit 1041, the start trigger signal issued by the CPU 101 is stored in the start trigger register 102a. Alternatively, for example, a configuration shown in
In the embodiment, the distortion correction apparatus has been used as the image processing apparatus. However, the techniques of the embodiment may be applied not only to the distortion correction apparatus but also to various image processing apparatuses where a plurality of control blocks control a common image processing block.
Furthermore, in the embodiment, the CPU 101 and sequencer 102 have been used as control blocks. The techniques of the embodiment may be applied to various image processing apparatuses where a plurality of control blocks control a common image processing block, including an image processing apparatus where two CPUs control one image processing block. Moreover, the number of control blocks is not limited to two. For instance, in the case of an image processing apparatus where three control blocks control a common image processing block, three setting registers and three storage registers are provided. Even with this configuration, the image processing time can be shortened by causing the remaining control blocks to set the setting registers during the period when a certain control block is controlling an image processing block.
In the embodiment, the CPU 101 and sequencer 102 can communicate with the register set in the image processing unit 104 via the common bus line 200. In contrast, the CPU 101 may be connected directly to setting register 1042a and result storage register 1042a and the sequencer 102 may be connected directly to setting register 1042b and result storage register 1042b.
Additional advantages and modifications will readily occur to those skilled in the art. Therefore, the invention in its broader aspects is not limited to the specific details and representative embodiments shown and described herein. Accordingly, various modifications may be made without departing from the spirit or scope of the general inventive concept as defined by the appended claims and their equivalents.
Number | Date | Country | Kind |
---|---|---|---|
2009-150004 | Jun 2009 | JP | national |
2010-137745 | Jun 2010 | JP | national |