Pixel interpolation device and camera adapted to perform pixel interpolation of captured image

A camera includes an image capture unit which captures the image of a subject to obtain image data, a pixel interpolation unit which, on the basis of pixel data from multiple pixels arranged on a line in the image data obtained by the image capture unit, creates image data in an interpolation position on the line, and a storage unit which is stored with common coefficient data for pixel data from multiple pixels which are n-th pixels counted from the interpolation position in opposite directions on the line, the pixel interpolation unit performing interpolation operations on the pixel data from the n-th pixels using the coefficient data stored in the storage unit to thereby create the image data in the interpolation position.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is based upon and claims the benefit of priority from prior Japanese Patent Application No. 2004-377373, filed Dec. 27, 2004, the entire contents of which are incorporated herein by reference.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to a pixel interpolation device for pixel interpolation in enlarging or reducing image data and a camera, such as a digital still camera, a digital video camera, or the like, which has the pixel interpolation device built in to provide a pixel interpolation function used in digitally enlarging or reducing a captured image.

2. Description of the Related Art

In general, cameras, such as digital still cameras, digital video cameras, etc., have a digital zoom function built in, which is adapted to enlarge or reduce an image without using optical operations/functions. Such cameras responds to a zoom operation by the user to enlarge or reduce (zoom in or out) an image by creating (interpolating) pixel data of the enlarged or reduced image on the basis of pixel data from the original image. At this point, the pixel data is created by performing operations on multiple pieces of existing pixel data and interpolation coefficients selected according to the interpolation position.

For example, an image enlarging device has been proposed in Japanese Unexamined Patent Publication No. 5-7584. According to this device, data from at least four neighbor pixels arranged in one of the horizontal and vertical directions are each multiplied by a given coefficient. The resulting products are then added together to thereby produce pixel data to be inserted between the two central ones of the four pixels. Further, at least four pieces of pixel data previously created and arranged in the other of the horizontal and vertical directions are each multiplied by a given coefficient. The resulting products are then added together to thereby create pixel data to be inserted between the central two pieces of pixel data.

Also, an imaging device has been proposed in Japanese Unexamined Patent Publication No. 10-63828, which enlarges an image formed by an array of pixels each containing digital data by interpolating between adjacent pixels in the image. This device includes a memory in the form of a lookup table which is stored with filter coefficients representing a spline weighting function and an operation circuit adapted to use the coefficients to calculate pixel values to be interpolated in the enlarged image.

Thus, the conventional image enlarging devices perform operations using coefficients on pixel data but merely use a table stored with general-purpose coefficient data and an operations circuit which do not take the features of coefficients in enlargement interpolation into consideration. Therefore, the table (memory) and the operation circuits have to become redundant in circuit arrangement, which may result an increase in circuit scale.

BRIEF SUMMARY OF THE INVENTION

An object of the present invention is to reduce the circuit scale of a pixel interpolation device by utilizing the characteristics of coefficients used in enlargement interpolation of an image.

According to an aspect of the invention, there is provided a camera comprising: an image capture unit which captures the image of a subject to obtain image data; a pixel interpolation unit which, on the basis of pixel data from multiple pixels arranged on a line in the image data obtained by the image capture unit, creates image data in an interpolation position on the line; and a storage unit which is stored with common coefficient data for pixel data from multiple pixels which are n-th pixels counted from the interpolation position in opposite directions on the line, the pixel interpolation unit performing interpolation operations on the pixel data from the n-th pixels using the coefficient data stored in the storage unit to thereby create the image data in the interpolation position.

According to another aspect of the invention, there is provided a pixel interpolation device which, on the basis of pixel data from multiple pixels arranged on a line, creates pixel data in an interpolation position on the line, comprising: a controller which provides interpolation position data indicating an interpolation position; a coefficient table which is stored with common coefficient data for pixel data from multiple pixels which are n-th pixels counted from the interpolation position in opposite directions on the line, the table storing coefficient data for each position that is taken as an interpolation position; a coefficient data output unit which outputs coefficient data for pixel data from each of the n-th pixels from the coefficient table in accordance with the position indicated by the interpolation position data from the controller; a buffer unit which stores pixel data from the multiple pixels on the line; and an operations unit which performs operations on each pixel data stored in the buffer unit using corresponding coefficient data output from the coefficient table by the coefficient data output unit.

According to still another aspect of the invention, there is provided a pixel interpolation device comprising: a capture unit which captures pixel data from existing pixels arranged at regular intervals; a specify unit which specifies an interpolation position in which an interpolated pixel is to be located; an image data output unit which outputs pixel data from multiple existing pixels located close to the interpolation position specified by the specify unit from the pixel data captured by the capture unit; a storage unit which is previously stored with multiple coefficient data according to a positional relationship between the interpolated pixel and the existing pixels; a coefficient data output unit which outputs from the storage unit multiple pieces of coefficient data for pixel data from the existing pixels output by the pixel data output unit; and an image data creation unit which creates pixel data in the interpolated position specified by the specify unit by performing predetermined operations on the pixel data output by the pixel data output unit and the coefficient data output by the coefficient data output unit, the storage unit storing either of coefficient data when the existing pixels are in a first direction with respect to the interpolated pixel and coefficient data when the existing pixels are in a second direction opposite to the first direction, and the coefficient data output unit outputting the coefficient data when the existing pixels are in the first direction with respect to the interpolated pixel and the coefficient data when the existing pixels are in the second direction with respect to the interpolated pixel on the basis of the coefficient data stored in the storage unit.

DETAILED DESCRIPTION OF THE INVENTION

FIG. 1is a block diagram of a camera having a built-in pixel interpolation device according to an embodiment of the present invention.

In this camera which is generally indicated at1inFIG. 1, in the capture mode which is the basic mode, a taking lens1is driven by a motor (M)10to move into the aperture position or normal shooting position. A CCD (Charge Coupled Device)12, placed at the back of the taking lens11and composed of a large number of pixels arranged in matrix form, is scan driven by a timing generator (TG)13and a vertical driver14to output a frame of pixel signals.

The pixels signals are subjected to gain adjustment for each of the primary colors R, G and B in the form of analog signals, then sampled and held in a sample and hold (S/H) circuit15, converted into digital data in an A/D converter16, and subjected to color processing including pixel interpolation and gamma correction in a color processing circuit17, thereby producing digital brightness and color difference signals Y, Cb and Cr. The resulting digital signals are output to a DMA (Direct Memory Access) controller18.

The color processing circuit17includes an enlargement interpolation section17acorresponding to the pixel interpolation device of this embodiment. The enlargement interpolation section17acarries out an enlargement interpolation process for enlarging an image under the control of a controller25associated with a digital zoom operation.

The DMA controller18temporarily writes the brightness signal Y and the color difference signals Cb and Cr from the color processing circuit17into its buffer and then DMA transfers them through a DRAM interface (I/F)20to a DRAM21as a buffer memory using a composite sync signal, a memory write enable signal, and a clock signal from the color processing circuit17.

The controller25includes a CPU, a ROM recorded with operation programs executed by the CPU and data, and a RAM used as work storage and exercises control over the entire camera1.

After the DMA transfer of the brightness and color difference signals to the DRAM21, the controller25reads these signals through the DRAM interface20from the DRAM21and then writes them via a VRAM controller26into a VRAM27.

A digital video encoder28periodically reads the brightness and color difference signals through the VRAM controller26from the VRAM27and produces a video signal on the basis of those signals. The video signal is then output to a display unit29.

The display unit29serves as a monitor display unit (electronic viewfinder) in capture mode and makes a display based on the video signal from the digital video encoder28. Thereby, an image (through image) based on image information from the VRAM controller26is displayed in real time on the display unit29.

In a display state in which a trough image is displayed in real time on the display unit29, when a shutter key in a key entry unit37is operated at a time a still image is captured, a trigger signal is produced.

In response to this trigger signal, the controller25stops the driving of the CCD12and then carries out an automatic exposure process to obtain proper exposure values. Thereby, the aperture of the lens optical system and the exposure time of the CCD12are controlled and then an image capture is carried out anew.

A frame of pixel data thus obtained is DMA transferred to and written into the DRAM21. The controller25then reads one frame of pixel data written in the DRAM21and writes it into an image processor30where the input pixel data is JPEG (Joint Photographic Experts Group) encoded.

The JPEG-encoded pixel data is written into a removably attached memory card32as a recording medium of the camera1or a built-in memory33when the memory card is not loaded into the camera.

Upon completion of writing of one frame of pixel data into the memory card32or the built-in memory33, the controller25resumes monitor display of a through image obtained from the CCD12via the DRAM21on the display unit29.

To the controller25are connected the key entry unit37, an audio processing unit40, and a flash driver41.

The key entry unit37includes a power key, the shutter key, a mode switch, a menu key, a select key, a zoom button, and a cursor control key. The signals resulting from operations of those keys are directly fed into the controller25.

The audio processing unit40includes a sound source circuit, such as a PCM sound source. At the recording time, the audio processing unit digitizes an audio signal input from a microphone (MIC)42and compresses the digital audio signal according to a predetermined file format, say, the MP3 (MPEG-1 Audio Layer-3) standard to create an audio data file. The data file is sent to the memory card32or the built-in memory33. At the time of audio reproduction, an audio data file from the memory card or the built-in memory is decompressed and converted into analog form to drive a loudspeaker (SP)43.

Further, the audio processing unit40, under the control of the controller25, produces various operation sounds, such as a pseudo-shutter sound associated with an operation of the shutter key, beeps associated with operations of the other keys, etc., from the loudspeaker43.

The flash driver41charges up a large-capacitance capacitor (not shown) connected to the flashgun45at still image capture time and then causes the flashgun to emit a flash of light under the control of the controller25.

The pixel interpolation device (enlargement interpolation section17a) of this embodiment will be described next.

Before describing a specific circuit arrangement (shown inFIG. 4) of the pixel interpolation device of this embodiment, a method of enlargement interpolation carried out by the enlargement interpolation section17awill be described. A description is given here of an example of interpolating a certain point (interpolated point) from multiple existing pixels arranged in matrix form, e.g., 6×6 existing pixels shown inFIG. 2.

The procedure of interpolation operations on 6×6 existing pixels involves calculating one point from six existing pixels on a line in the horizontal or vertical direction as an interpolated pixel, repeating this process for each of the six lines to create six interpolated pixels, and calculating one point from the six interpolated pixels on a line in the vertical or horizontal direction in the same manner as with the six interpolated pixels. Although, inFIG. 2, operations are performed on multiple pixels existing on the same line, all the pixels need not necessarily exist on the same line. That is, the invention can be applied to interpolation using multiple pixels which can be regarded as existing on one common line, for example, delta arranged pixels. In the description which follows, suppose that pixels existing on the same line are used for interpolation operations to simplify the description.

InFIG. 2, first, on the basis of six existing pixels P0to P5arranged on a line in the horizontal direction, a pixel Pt0in the position of interpolation on the same line is created. In the same manner, pixels Pt1to Pt5are created on the basis of six interpolating pixels arranged on each of the horizontal lines. Then, on the basis of the six interpolated pixels Pt1to Pt6arranged on a vertical line, a pixel Pt at one point on that vertical line is calculated and interpolated.

In general, interpolation from successive pixels can be considered as convolution of successive pixels and a rectangular function (RECT function). The Fourier transform of the rectangular function is given by sinc (t)=sin(πt)/πt.

In many cases, an approximate expression or lookup table (LUT) is used because the range of successive pixels used for operations is limited and the operations are complicated.

Interpolation coefficients based on a function using the sampling theorem which are frequently used in interpolation are expressed by
f(t)=sin(πt)/πt

Operations are performed within a range of existing pixels (i.e., the range/number of pixels used in convolution). Expressions which use existing pixels ranging from −∞ to ∞ like the above expression are not general. Usually, a window function that corresponds to a finite number of existing pixels is used to suppress the filter characteristics to within a finite rage.

For example, the interpolation coefficients based on the lanczos 3lobbed window function are expressed by
f(t)={sin(πt)/πt}×{sin(πt/3}/(πt/3}
where −3≦t≦3.

Assuming that the existing pixels at six points are represented by P0to P5and the interpolated pixel is represented by Pt, the value of Pt is represented by
Pt=Σf(tn)Pn
where tn is the distance from existing pixel Pn to Pt.

In many cases, the convolution arithmetic circuit is used in various filter operations, such as LFP, HPF, etc., by making the coefficients versatile. In view of only the enlargement interpolation coefficients in the above function used in the sampling theorem, their values have characteristics which depend to some extent on t. The graph of sin(πt)/πt in the sampling theorem and the relationship between existing pixels and interpolated pixel have the following features 1, 2, and 3:

1. As the coefficients for n-th neighbor pixels ‘e.g., P2and P3), a value in the same interval can be used.

2. The coefficients for n-th neighbor pixels takes positive values if n is odd and negative values otherwise.

3. The larger n, the smaller the coefficient value.

The features 1, 2 and 3 will be explained in sequence. The feature 1 is explained first.

When the distance between P2and Pt is 1, the positions of the respective existing pixels with respect to the interpolated pixel are represented by −(t+2), −(t+1), −t, 1−t, 2−t, and 3−t. The positions of n-th neighbor pixels are represented by −(t−n−1) and n−1. The enlargement coefficients for n-th neighbor pixels are obtained from f(t)=sin(πt)/πt as follows:
f(−(t−n−1))=sin(−(t−n−1)π)/(−(t−n−1)π)=sin((t−n−1)π)/(−(t−n−1)π)
Setting t′=1−t leads the above expression to
sin((n−t′))/(n−t′)π=f(n−t′)
Since 0≦t≦1 and t′=1−t, 0≦t′≦1.

The interpolation coefficients for n-th neighbor pixels can be covered by a value in the same interval. (This is also evident from that the function is an even function and the existing pixels are spaced at regular intervals. Even in a function which is limited to a finite range by a window function, such as the lanczos 3lobbed window function, this is evident because the window function is an even function.)

Next, the feature 2 will be explained.

The intervals of n-th neighbors are n−1≦tn≦n and −n≦tn≦1−n.

Taking only n−1≦tn≦n as an example since the function is an even function, the function sin(πt) for the interval of n-th neighbors is
f(tn)=sin(πtn)/πtn

f(tn)=0 when tn is an integer other than 0. Also, f′(tn)=(π2cos(πtn)−sin(πtn)/π2tn2From this, the inclination at f(tn)=0 when n is odd is
f′(n−1)≧0 fortn=n−1(0 whentn=0) and
f′(n−1)<0 fortn=n
When n is even,
f′(n−1)<0 fortn=n−1
f′(n−1)>0 fortn=n
Therefore, in the interval of n-th neighbors, the coefficient becomes positive if n is odd and negative if n is even.

FIG. 3Ashows a graph of sinc (t) function.FIG. 3Bshows a relationship among the interpolation position (pixel Pt), the existing pixel positions (pixels P0to P5), and coefficients for the existing pixels. The coefficient for each existing pixel (the value by which the pixel value is multiplied) is a value of f(t).

As shown inFIG. 3B, the values of coefficients for the first neighbor pixels P2and P3and the third neighbor pixels P0and P5are positive and the values of coefficients for the second neighbor pixels P1and P4are negative.

InFIGS. 3A and 3B, the values of coefficients are normalized to 1. On the circuit, use is made of values normalized to, say, 256 and the sum of products of existing pixel values and coefficients is divided by 256.

The feature 3 will be explained next.

The function in the denominator of the function f(t) is a periodic function. 1/πtn approaches 0 as t increases. Thus, the function f(t) converges to 0 as the absolute value of t increases.

As shown inFIGS. 3A and 3B, the larger the distance between Pn and Pt, the smaller the coefficient value for Pn is.

In view of the features 1, 2 and 3, the circuit scale can be reduced by imposing constraints on the circuit arrangement associated with the enlargement coefficients. The constraints include:

1. Not to store multiple pieces of coefficient data for n-th neighbor pixels in individual tales.

2. To perform convolution so that the coefficients for n-th neighbor pixels are treated as positive if n is odd and negative otherwise. Thereby, all the coefficient data can be stored as positive numbers in a table.

3. To reduce the bit width of registers storing coefficient data for n-th neighbor pixels in the table as the value of n increases.

Since the enlargement coefficients cannot be held with decimal points in circuit design, they are normalized to, say, 256. As a value for normalization, a value equal to a power of 2 is used in view of division by bit shifts.

In regarding the interpolated pixel position as being the same as or extremely close to the existing pixel position, the enlargement coefficient becomes 256 (normalized value) in order for the interpolated pixel to take a value comparable to that of the most neighbor existing pixel. If the normalization value is 256, this results in an increase in the bit width of coefficients only for 256, which is inefficient. In a configuration to change the enlargement characteristics by changing the values of coefficient data stored in a table, in order to allow enlargement processing using the most neighbor pixel-based method, the circuit is set such that the results of operations comparable to operations using 256 are output when the coefficient data for one of the first neighbor pixels which is closer to the interpolation position is 0 and 0 is output when the coefficient data for the other of the first neighbor pixels is 0. Thereby, desired enlargement interpolation coefficients can be obtained with an increase in the bit width of the table to store enlargement coefficient data checked.

Next, the pixel interpolation device (enlargement interpolation section17a) of this embodiment arranged taking the aforementioned restrictions 1, 2 and 3 into consideration will be described in detail.FIG. 4is a block diagram of the enlargement interpolation section17aof this embodiment. Suppose that the enlargement interpolation section17ais arranged to create pixel data in the interpolation position on the basis of pixel data from existing pixels arranged in a 6 by 6 matrix form by way of example.

InFIG. 4, an enlarger controller50, which is adapted to control interpolation based on pixel data from 6×6 existing pixels, outputs horizontal interpolation position data indicating the interpolation position in the horizontal direction to a horizontal LUT (lookup table) section54. The controller further outputs vertical interpolation position data indicating the interpolation position in the vertical direction to a vertical LUT section56.

A stick buffer section52, which is adapted to buffer pixel data, comprises six buffers arranged in parallel in the horizontal direction each of which holds input pixel data in the vertical direction. From the stick buffer52thus arranged are output pixel data from the six existing pixels P0through P5shown inFIG. 2. In the description which follows, P0through P5may denote pixel data.

The horizontal LUT section54is provided with an enlargement coefficient table54a, which is stored with coefficient data used in performing interpolation operations in the horizontal direction on pixel data held in the stick buffer section54. The horizontal LUT section54receives horizontal interpolation position data from the enlarger controller50and outputs coefficient data (enlargement coefficients) for pixel data P0to P5from pixels close to the interpolation position in the horizontal direction. The horizontal LUT section54selects and divides data stored in the enlargement coefficient table54ato output coefficient data for neighbor positions according to the structure of coefficient data in the coefficient table, that is, according to which of structures shown inFIGS. 6A to 6Cthe coefficient data has.

Multipliers600to605multiply pixel data P0to P5in the horizontal direction output from the stick buffer section52and coefficient data for neighbor positions output from the horizontal LUT section54. For example, the multiplier600multiplies pixel data from the pixel P0and coefficient data for the pixel P0.

Registers620to625each store pixel data from a corresponding one of the multipliers600to605. For example, the register600holds output data from the multiplier600.

An adder64adds data held in the registers620and625together. An adder65adds data held in the registers621and624together. An adder68adds data held in the registers622and623together. An adder70adds the outputs of the adders64and68together. That is, the sum of the results of operations on pixel data from odd-numbered pixels counted from the interpolation position is calculated through the adders64,68, and70. The sum of the results of operations on pixel data from even-numbered pixels counted from the interpolation position is calculated through the adder66.

A register72holds output data of the adder70, i.e., the sum of the results of operations on pixel data from the odd-numbered pixels (the first and third neighbor pixels) from the interpolation position. A register74holds output data of the adder66, i.e., the sum of the results of operations on pixel data from the even-numbered pixels (the second neighbor pixels) from the interpolation position.

A subtracter76subtracts the output data of the register74from the output data of the register72, i.e., subtracts the sum of the results of operations on pixel data from the even-numbered pixels from the sum of the results of operations on pixel data from the odd-numbered pixels.

That is, through the use of the multipliers600to605, the adders64,66,68and70and the subtracter76, operations are performed on pixel data from n-th neighbor pixels from the interpolation position with the result of operations as a negative value if n is odd and as a positive value if n is odd. Therefore, even if all the coefficient data output from the horizontal LUT section54is positive, the results of multiplication involving negative coefficients can be obtained.

Thereby, pixel data Pt in the interpolation position can be created on the basis of six pieces of pixel data P0to P5on the same line in the horizontal direction and coefficient data stored in the horizontal LUT section54.

A buffer section80has registers800to805to sequentially hold the results of operations by the subtracter76(pixel data in the interpolation position in the horizontal direction). The buffer section80holds six pieces of pixel data Pt0to Pt5located on the same line in the vertical direction, each of which corresponds to the interpolated pixel data Pt on a corresponding one of the six lines in the horizontal direction.

A vertical LUT section56is provided with an enlargement coefficient table56astored with coefficient data used in performing interpolation operations in the vertical direction on the pixel data held in the buffer section80. The vertical LUT section56receives vertical interpolation position data from the enlarger controller50and outputs coefficient data (enlargement coefficients) for the interpolated pixel data Pt0to Pt5close to the interpolation position in the vertical direction.

Multipliers820to825multiply pixel data Pt0to Pt5in the horizontal direction output from the buffer section80and coefficient data for neighbor positions output from the vertical LUT section56. For example, the multiplier820multiplies pixel data Pt0from the register800in the buffer80and coefficient data (P0enlargement coefficient) for the interpolation position.

Registers840to845each store pixel data which is output from a corresponding one of the multipliers820to825. For example, the register840holds output data from the multiplier820.

An adder86adds data held in the registers840and845together. An adder88adds data held in the registers841and844together. An adder90adds data held in the registers842and843together. An adder92adds the outputs of the adders86and90together. That is, the sum of the results of operations on pixel data from odd-numbered pixels is calculated through the adders86,90, and92. The sum of the results of operations on pixel data from even-numbered pixels is calculated through the adder88.

A register94holds output data of the adder92, i.e., the sum of the results of operations on pixel data from the odd-numbered pixels (the first and third neighbor pixels). A register96holds output data of the adder90, i.e., the sum of the results of operations on pixel data from the even-numbered pixels (the second neighbor pixels).

A subtracter98subtracts the output data of the register96from the output data of the register94, i.e., subtracts the sum of the results of operations on pixel data from the even-numbered pixels from the sum of the results of operations on pixel data from the odd-numbered pixels.

That is, through the use of the multipliers820to825, the adders86,88,90and92and the subtracter98, operations are performed on pixel data from n-th neighbor pixels from the interpolation position with the result of operations as a negative value if n is odd and as a positive value if n is odd. Therefore, even if all the coefficient data output from the vertical LUT section56is positive, the results of multiplication involving negative coefficients can be obtained.

Thereby, pixel data P in the interpolation position can be output on the basis of six pieces of pixel data Pt0to Pt5on the same line in the vertical direction and coefficient data stored in the vertical LUT section56.

Specific examples of coefficient data stored in the enlargement coefficient tables54aand56awill be described next.

FIG. 5Ashows one example of enlargement coefficient data for first to third neighbor pixel data when normalized to 256. The interval between adjacent pixels is divided by eight and the position of one of the resulting dividing points is specified as the interpolation position by horizontal or vertical interpolation position data. InFIG. 5Ais shown coefficient data for neighbor pixels P0to P5when the interpolation position (t) is set to each of 0, 0.125, 0.25, 0.375, . . . , and 0.875. Each coefficient data used in this embodiment is set to have a positive value.

In the example ofFIG. 5, the interval between adjacent existing pixels is divided by eight and hence eight pieces of coefficient data are set to each of the existing pixels P0to P5. The number of pieces of coefficient data set to each of the existing pixels is determined according to the resolution (the number of divisions).

For coefficient data0for the pixel P2when the interpolation position is 0, pixel data from the pixel P2is output as the result of operations.

FIG. 5Bshows an example of coefficient data in which the values normalized to 256 shown inFIG. 5Aare represented in binary form. As shown inFIG. 5B, each coefficient data has its bit width fixed according to its magnitude.

That is, the coefficient data for the first neighbor pixels P2and P3is represented by eight bits. The coefficient data for the second neighbor pixels P1and P4is represented by six bits. The coefficient data for the third neighbor pixels P0and P5is represented by four bits. That is, the more distant pixels are from the interpolation position, the shorter the bit width of coefficient data for them is set. This allows the effect on interpolation to be lessened and the circuit scale of the horizontal LUT section54(enlargement coefficient table54a) and the vertical LUT section56(enlargement coefficient table56a) to be reduced.

FIG. 6Ashows one example of coefficient data stored in the enlargement coefficient tables54aand56aof this embodiment configured based on the table shown inFIG. 5B.

The table ofFIG. 6Ais configured such that two pieces of coefficient data for the first neighbor pixels P2and P3are stored as one piece of data. In this example, the coefficient data for the pixel P2and the coefficient data for the pixel P3(indicated by slant characters) are arranged as high-order bits and low-order bits, respectively, of one piece of data. The coefficient data for the first two neighbor pixels is set to 16 bits in width as the result of being combined into one piece of data.

For the n-th neighbor pixels (e.g., P2and P3), there is only one combination of coefficient data therefor for each interpolation position. Therefore, if the interpolation position is determined, one piece of coefficient data can be read. When the distance between the pixel P2and the interpolation position Pt is t, the coefficient data for 1−t is simply used for the pixel P3.

Similarly, for the second and third neighbor pixels (P1, P4; and P0, P5) as well, the coefficient data therefore are combined and stored in the table as one piece of coefficient data. Therefore, the coefficient data for the second neighbor pixels P1and P4is 12 bits in width and the coefficient data for the third neighbor pixels P0and P5is 8 bits in width.

In this case, the horizontal LUT section54reads coefficient data for neighbor pixels stored in a location specified by an LUT address indicated by horizontal interpolation position data from the enlarger controller50from the enlargement coefficient table54aand outputs them with division.

For example, when one piece of coefficient data “1110010001000101” for the pixels P2and P3in a location specified by the LUT address2is read from the coefficient table54a, its high-order bits “11100100” are output to the multiplier602as coefficient data for the pixel P2and the low-order bits “01000101” are output to the multiplier603as coefficient data for the pixel P3. Similarly, for the pixels P0and P5as well, one piece of coefficient data is read and then divided so that its high-order bits and low-order bits are applied to the multipliers600and605, respectively. For the pixels P1and P4as well, one piece of coefficient data is read and then divided so that its high-order bits and low-order bits are applied to the multipliers601and604, respectively.

In the vertical LUT section56, as in the horizontal LUT section54, one piece of coefficient data is read from the enlargement coefficient table56aand its data is divided into high-order bits and low-order bits for application to the multipliers820to825. Further description is omitted.

Thus, as shown inFIG. 6A, two pieces of coefficient data for pixel data from the two n-th neighbor pixels are stored, not individually, but in combination into the coefficient tables54aand56bas one piece of data, allowing coefficient data for n-th neighbor pixels to be shared. With interpolation based on 6×6 existing pixels, therefore, coefficient data for three neighbor positions are simply stored in the tables.

FIG. 6Bshows an example of a table configured to allow the circuit scale to be further reduced on the basis of the coefficient data shown inFIG. 6A.

The table ofFIG. 6Bis configured to store coefficient data for interpolation positions from t=0 through t=0.5 of the coefficient data shown inFIG. 6A.

Two pieces of coefficient data for n-th neighbor pixel data are symmetrical with respect to the center of the first neighbor existing pixels and therefore the same. From t=1−t′, the combination of coefficient data when t=0 to 0.5 and the combination of coefficient data when t′=0 to 0.5 are equal to each other. Therefore, the enlargement coefficient tables54aand56asimply store coefficient data corresponding to half of the interpolation position resolution.

In this case, the horizontal LUT section54reads from the coefficient table54acoefficient data for neighbor pixels specified by an LUT address indicated by horizontal interpolation position data from the enlarger controller50and outputs them with division. The coefficient data designated by LUT addresses0to4are the same as when the table ofFIG. 6Ais used.

When the horizontal interpolation position data indicates 0.625, 0.75, or 0.875 (when the LUT address is5,6, or7inFIG. 6A), one piece of coefficient data is read from a location specified by the LUT address1,2, or3according to the interpolation position. That is, when the horizontal interpolation position data indicates 0.625 as interpolation position, coefficient data is read from the location identified by the LUT address3. When the horizontal interpolation position data indicates 0.75, coefficient data is read from the location identified by the LUT address2. When the horizontal interpolation position data indicates 0.875, coefficient data is read from the location identified by the LUT address1.

Suppose, for example, that, when the horizontal interpolation position data indicates 0.75, one piece of coefficient data “1110010001000101” for the pixels P2and P3has been read from the location identified by the LUT address2. In this case, the low-order bits “01000101” are output to the multiplier602as coefficient data for the pixel P2and the high-order bits “11100100” are output to the multiplier603as coefficient data for the pixel P3, which differs from the allocation of coefficient data when the interpolation position is 0.25. With the pixels P0and P5or P1and P4as well, one piece of coefficient data is read and divided for each pixel. Each divided coefficient data is selectively applied to the multiplier600,601,604, or605.

In the vertical LUT section56, as in the horizontal LUT section54, one piece of coefficient data is read from the coefficient table56aand divided. Each divided coefficient data is selectively applied to the multiplier820,821,822,823,824, or825. In this case, when the interpolation position is 0.625, 0.75, or 0.875, the high-order bits and the low-order bits are interchanged. Further description is omitted.

Thus, as shown inFIG. 6Bby configuring the tables to record coefficient data corresponding to interpolation positions through the center (t=0.5), it becomes possible to reduce the amount of coefficient data to be stored in the coefficient tables54aand56aand simplify the control circuits of the horizontal and vertical LUT sections54and56. As the result, the circuit scale can be reduced.

FIG. 6Cshows an example of a table configured to further reduce the circuit scale on the basis of the coefficient data shown inFIG. 6C.

The table ofFIG. 6Cis configured such that three pieces of coefficient data for each interpolation position are arranged in series and stored as one piece of data.

In this case, the horizontal LUT section54reads one piece of coefficient data for neighbor pixels from a location in the table54aidentified by an LUT address corresponding to horizontal interpolation position data from the controller50and then divides it for each neighbor pixel.

When the horizontal interpolation position data indicates 0.625, 0.75, or 0.875 (when the LUT address is5,6, or7inFIG. 6A), one piece of coefficient data is read from a location designated by the LUT address1,2, or3according to the interpolation position in the same way as when the table ofFIG. 6Bis used.

For example, when the horizontal interpolation position data indicates 0.75, one piece of coefficient data “100000101000100100011110010001000101” in which individual data for the pixels P0and P5, P1and P4, P2and P3are arranged is read from the location identified by the LUT address2.

The read coefficient data is divided into the bit widths corresponding to the first, second and third neighbor pixels P0and P5, P1and P4, and P2and P3. That is, the coefficient data is divided into the high-order 8 bits for the third neighbor pixels P0and P5, the intermediate 12 bits for the second neighbor pixels P1and P4, and the low-order 16 bits for the first neighbor pixels P2and P3.

Each divided coefficient data is further divided for each of the corresponding neighbor pixels. The divided coefficient data corresponding to each of the pixels is output to a corresponding one of the multipliers600to605in the same way as when the table ofFIG. 6Bis used.

In the vertical LUT section56as well, one piece of coefficient data is read from the coefficient table56aand divided into the bit widths corresponding to the first, second and third neighbor pixels P0and P5, P1and P4, and P2and P3. Each divided coefficient data is further divided for each of the corresponding neighbor pixels. The divided coefficient data corresponding to each of the pixels is output to a corresponding one of the multipliers820to825.

Thus, as shown inFIG. 6Cby configuring the tables to record one piece of coefficient data for each of the interpolation positions (LUT addresses), it becomes possible to reduce the amount of coefficient data to be stored in the coefficient tables54aand56aand reduce addresses for reading coefficient data for each interpolation position, allowing the circuit scale to be reduced.

The embodiment has been described in terms of an example where the enlargement coefficients are set on the basis of the sinc function or the sinc function having its characteristic restricted to a finite range. Functions other than the sinc function can also be used if the characteristic of the function of enlargement coefficients is the same. For example, the invention is also applicable to the case where bilinear (linear) interpolation, hyperbolic third-order spline interpolation, bicubic interpolation, or the like is used.

In the embodiment, all the coefficient data output from the horizontal and vertical LUT sections54and56are set to positive values, and operations are carried out with and with the results of operations for even-numbered pixels as negative values and the results of operations for odd-numbered pixels as positive values through the use of the adders,64,66,68, and70and the subtracter76for the horizontal interpolation and the adders86,88,90, and92for the vertical interpolation. By outputting each coefficient data from the horizontal and vertical LUT sections54and56with a sign added, the arrangement of the operation circuit can be simplified. In this case, it is only required to store positive coefficient data in the coefficient tables54aand56aand output coefficient data only for even-numbered pixels with a sign added. Thereby, the results of operations by the multipliers are simply added, allowing the circuit arrangement to be simplified.

Although, inFIG. 1, the enlargement interpolation section17ais shown built into the color process circuit17, it may be built into another module which carries out image enlargement processing.

Although the embodiment has been described in terms of image enlargement interpolation, the present invention is also applicable to image reduction interpolation.