The present invention relates to image processing apparatuses and methods, programs and program recording media, and data structures and data recording media. For example, the present invention relates to an image processing apparatus and method, a program and program recording medium, and a data structure and data recording medium with which an image in accordance with a user's viewpoint can be displayed.
In conventional displays based on CRTs (Cathode Ray Tubes), liquid crystal panels, or projectors, an image captured, for example, by a video camera (hereinafter simply referred to as a camera when appropriate) is displayed, which is simply as viewed from a camera's position as a viewpoint, as shown in
Thus, for example, even when a user moves his/her head to change his/her viewpoint for viewing an image displayed on a display, the image displayed on the display remains an image as viewed from a lens center of the camera (hereinafter referred to as a camera's viewpoint when appropriate), and the image displayed on the display does not change in accordance with the change in the user's viewpoint.
In view of this situation, as an example of image display method by which an image displayed on a display changes in accordance with a user's viewpoint, a method called zebra imaging is used.
However, zebra imaging is a method based on holography. Since an image displayed by zebra imaging is a hologram, a large amount of computation and time is required for generating the image.
As another example of image display method by which an image displayed on a display changes in accordance with a user's viewpoint, VR (Virtual Reality) systems based on IPT (Immersive Projection Technology) or IPD (Immersive Projection Display), such as CAVE developed at Illinois University, are known.
However, such VR systems are directed to images of CG (Computer Graphics), and it is difficult to display real images captured by video cameras.
The present invention has been made in view of the situation described above, and it allows even a real image actually captured to be readily changed in accordance with a user's viewpoint.
A first image processing apparatus according to the present invention comprises converting means for converting first image data into second image data as viewed from a user's viewpoint, using light-ray information representing trajectories of light rays for the capture of the first image data and representing pixel values corresponding to the light rays.
A first image processing method according to the present invention comprises a converting step of converting first image data into second image data as viewed from a user's viewpoint, using light-ray information representing trajectories of light rays for the capture of the first image data and representing pixel values corresponding to the light rays.
A first program according to the present invention comprises a converting step of converting first image data into second image data as viewed from a user's viewpoint, using light-ray information representing trajectories of light rays for the capture of the first image data and representing pixel values corresponding to the light rays.
A first program recording medium according to the present invention has recorded thereon a program comprising a converting step of converting first image data into second image data as viewed from a user's viewpoint, using light-ray information representing trajectories of light rays for the capture of the first image data and representing pixel values corresponding to the light rays.
A second image processing apparatus according to the present invention comprises converting means for converting image data into intermediate data, the intermediate data being image data in which pixel values of predetermined pixels constituting the image data are pixel values at intersections of light rays incident on the predetermined pixels and a plane perpendicular to the light rays and passing through a predetermined point.
A second image processing method according to the present invention comprises a converting step of converting image data into intermediate data, the intermediate data being image data in which pixel values of predetermined pixels constituting the image data are pixel values at intersections of light rays incident on the predetermined pixels and a plane perpendicular to the light rays and passing through a predetermined point.
A second program according to the present invention comprises a converting step of converting image data into intermediate data, the intermediate data being image data in which pixel values of predetermined pixels constituting the image data are pixel values at intersections of light rays incident on the predetermined pixels and a plane perpendicular to the light rays and passing through a predetermined point.
A second program recording medium according to the present invention has recorded thereon a program comprising a converting step of converting image data into intermediate data, the intermediate data being image data in which pixel values of predetermined pixels constituting the image data are pixel values at intersections of light rays incident on the predetermined pixels and a plane perpendicular to the light rays and passing through a predetermined point.
In a data structure according to the present invention, intersections of light rays incident on predetermined pixels constituting original image data and a plane perpendicular to the light rays and passing through a predetermined point serve as pixels, and pixel values of the pixels are used as pixel values of the predetermined pixels.
A data recording medium according to the present invention has recorded thereon image data wherein intersections of light rays incident on predetermined pixels constituting original image data and a plane perpendicular to the light rays and passing through a predetermined point serve as pixels, and wherein pixel values of the pixels are used as pixel values of the predetermined pixels.
A third image processing apparatus according to the present invention comprises intermediate-data output means for outputting intermediate data in a predetermined format, the intermediate data including pixel values corresponding to light rays from an object; viewpoint output means for outputting position information of a viewpoint for the object; and intermediate-data converting means for generating an image of the object as viewed from the viewpoint, using the intermediate data.
A third image processing method according to the present invention comprises an intermediate-data output step of outputting intermediate data in a predetermined format, the intermediate data including pixel values corresponding to light rays from an object; a viewpoint output step of outputting position information of a viewpoint for the object; and an intermediate-data converting step of generating an image of the object as viewed from the viewpoint, using the intermediate data.
A third program according to the present invention comprises an intermediate-data output step of outputting intermediate data in a predetermined format, the intermediate data including pixel values corresponding to light rays from an object; a viewpoint output step of outputting position information of a viewpoint for the object; and an intermediate-data converting step of generating an image of the object as viewed from the viewpoint, using the intermediate data.
A third program recording medium according to the present invention has recorded thereon a program comprising an intermediate-data output step of outputting intermediate data in a predetermined format, the intermediate data including pixel values corresponding to light rays from an object; a viewpoint output step of outputting position information of a viewpoint for the object; and an intermediate-data converting step of generating an image of the object as viewed from the viewpoint, using the intermediate data.
According to the first image processing apparatus, image processing method, program, and program recording medium according to the present invention, first image data is converted into second image data as viewed from a user's viewpoint, using light-ray information representing trajectories of light rays for the capture of the first image data and representing pixel values corresponding to the light rays.
According to the second image processing apparatus, image processing method, program, and program recording medium according to the present invention, image data is converted into intermediate data, the intermediate data being image data in which pixel values of predetermined pixels constituting the image data are pixel values at intersections of light rays incident on the predetermined pixels and a plane perpendicular to the light rays and passing through a predetermined point.
According to the data structure and data recording medium according to the present invention, intersections of light rays incident on predetermined pixels constituting original image data and a plane perpendicular to the light rays and passing through a predetermined point serve as pixels, and wherein pixel values of the pixels are used as pixel values of the predetermined pixels.
According to the third image processing apparatus, image processing method, program, and program recording medium, intermediate data in a predetermined format, the intermediate data including pixel values corresponding to light rays from an object is output, position information of a viewpoint for the object is output, and an image of the object as viewed from the viewpoint is generated using the intermediate data.
The image data may be either a still picture or a moving picture. Furthermore, the image data may be, for example, either real image data actually captured or CG.
A computer 1 is, for example, a workstation, and it converts original image data stored in an image database 2 into intermediate data, which will be described later, and stores the intermediate data in an intermediate database 3. Furthermore, the computer 1 controls a receiver 4 and a transmitter 5 that function as a position sensor, and it detects a user's position (and an attitude as required) based on an output of the receiver 4. Furthermore, the computer 1 sets the user's position as a position of a user's viewpoint, and converts the intermediate data stored in the intermediate database 3 into image data as viewed from the user's viewpoint (hereinafter referred to as presentation image data when appropriate). Then, the computer 1 supplies the presentation image data to a display 6, where the presentation image data is displayed.
The image database 2 stores original image data that is image data actually captured by an imaging apparatus such as a camera, as will be described later. The intermediate database 3 stores intermediate data supplied from the computer 1, obtained by converting the original image data.
The receiver 4 is mounted on a user, and it detects a magnetic field generated by the transmitter 5, and supplies an intensity of the magnetic field to the computer 1. The transmitter 5 generates a magnetic field under the control of the computer 1. That is, in the embodiment shown in
The receiver 4 is, for example, mounted on the head of the user. Alternatively, for example, if a user is wearing a tiepin or glasses, the receiver 4 may be mounted on the tiepin or the frame of the glasses.
The magnetic sensor that functions as a position sensor may be implemented, for example, by a three-dimensional position sensor from Polhemus, Inc.
Alternatively, the position sensor may be implemented, for example, by mechanically linked positioning means (e.g., a three-dimensional digitizer) instead of the magnetic sensor. Yet alternatively, the position sensor may be implemented by means that allows input of change in the user's position, e.g., a joystick or a trackball. That is, the position sensor herein need not be means for detecting an actual user's position, and may be means that allows input of a virtual user's position.
The display 6 is implemented, for example, by a CRT or a liquid crystal panel, and it displays presentation image data supplied from the computer 1. The display 6 may be implemented, for example, by a projector, an HMD (Head Mount Display), or other means capable of displaying images, instead of a CRT or a liquid crystal panel.
Next,
On the computer 1, programs for executing a series of processes that will be described later have been installed.
The programs may be recorded in advance in a hard disc 15 or a ROM 13 that serves as a recording medium, included in the computer 1.
Alternatively, the programs may be stored (recorded) temporarily or permanently on a removable recording medium 21, e.g., a flexible disc, a CD-ROM (Compact Disc Read Only Memory), an MO (Magneto Optical) disc, a DVD (Digital Versatile Disc), a magnetic disc, or a semiconductor memory. The removable recording medium 21 may be provided in the form of what is called package software.
Instead of installing the programs from the removable recording medium 21 on the computer 1 as described above, the programs may be transferred by wireless from a downloading site to the computer 1 via an artificial satellite for digital satellite broadcasting, or transferred by wire to the computer 1 via a network, e.g., a LAN (Local Area Network) or the Internet, allowing the computer 1 to receive the program transferred as described above by a communication unit 18 and to install the programs on the hard disc 15 included therein.
The computer 1 includes a CPU (Central Processing Unit) 12. The CPU 12 is connected to an input/output interface 20 via a bus 11. The CPU 12, when a command is input, for example, in response to an operation by a user of an input unit 17 including, for example, a keyboard, a mouse, and a microphone, accordingly executes a program stored in the ROM (Read Only Memory 13). Alternatively, the CPU 12 loads into a RAM (Random Access Memory) 14 and executes a program stored in the hard disc 15, a program transferred via a satellite or a network, received by the communication unit 18, and installed on the hard disc 15, or a program read from the removable recording medium 21 mounted on a drive 19 and installed on the hard disc 15. Thus, the CPU 12 executes processes that will be described later with reference to flowcharts, or processes executed by arrangements that will be described later with reference to block diagrams. As required, the CPU 12, for example, outputs results of the processes through an output unit 16 such as a speaker, sends results of the processes through the communication unit 18, or records results of the processes on the hard disc 15, via the input/output interface 20.
In the embodiment shown in
In this specification, processing steps defining programs for allowing the computer 1 to execute various processes need not necessarily be executed sequentially in the orders that will be described later with reference to flowcharts, and include processes executed in parallel or individually (e.g., parallel processing or processing by objects).
The programs may be executed either by a signal computer or by distributed processing involving a plurality of computers. Also, the programs may be transferred to and executed by a remote computer via a network.
The image display apparatus shown in
That is, in the real world, when a user is observing an object and moves his/her viewpoint, the user is allowed to observe the object as viewed from the viewpoint after the movement. More specifically, in the real world, part that is viewable and part that is unviewable of an object change as the user moves his/her viewpoint.
Similarly, in the image display apparatus shown in
Thus, when the user has moved his/her viewpoint, the image display apparatus shown in
The image processing apparatus for executing the same processes as processes implemented by execution of programs by (the CPU 12 of) the computer 1 includes a data converter 30 and a sensor controller 33.
The data converter 30 includes an image-data converter 31 and an intermediate-data converter 32. The data converter 30, using light-ray information representing trajectories of light rays for the capture of original image data stored in the image database 2 and representing pixel values corresponding to the light rays, converts the original image data into presentation image data as viewed from a user's viewpoint supplied from the sensor controller 33, and supplies the presentation image data to the display 6, where the presentation image data is displayed.
More specifically, the image-data converter 31 reads original image data from the image database 2, and geometrically converts the original image data into intermediate data. Furthermore, the image-data converter 31 supplies the intermediate data to the intermediate database 3, where the intermediate data is stored.
The intermediate-data converter 32 converts the intermediate data into presentation image data based on a user's viewpoint supplied from the sensor controller 33, that is, it reconstructs image data as viewed from the user's viewpoint, and supplies the presentation image data to the display 6, where the presentation image data is displayed.
The sensor controller 33 controls the receiver 4 and the transmitter 5 that function as a position sensor, thereby detecting a user's viewpoint, and supplies the user's viewpoint to the intermediate-data converter 32. More specifically, the sensor controller 33 controls the transmitter 5 to generate a magnetic field. Furthermore, the sensor controller 33 detects a user's position based on a result of detection of the magnetic field generated by the transmitter 5, supplied from the receiver 4. The sensor controller 33 sets the user's position as a user's viewpoint, and supplies the user's viewpoint to the intermediate-data converter 32.
Next, image processing by the image processing apparatus (computer) 1 shown in
First, in step S1, the image-data converter 31 reads original image data from the image database 2, and converts the original image data into intermediate data. Furthermore, in step S1, the image-data converter 31 supplies the intermediate data to the intermediate database 3, where the intermediate data is stored. The process then proceeds to step S2.
In step S2, the sensor controller 33 detects a user's position based on an output of the receiver 4, sets the user's position as a user's viewpoint, and supplies the user's viewpoint to the intermediate-data converter 32.
The process then proceeds to step S3, in which the intermediate-data converter 32 converts the intermediate data into presentation image data based on the user's viewpoint supplied from the sensor controller 33. The process then proceeds to step S4.
In step S4, the intermediate-data converter 32 supplies the presentation image data to the display 6, where the presentation image data is displayed. The process then proceeds to step S5.
In step S5, the CPU 12 (
On the other hand, if it is determined in step S5 that the input unit 17 has been operated to exit image processing, the process is exited.
If the image processing shown in
In the embodiment shown in
The buffer 42 temporarily stores the omnidirectional image data supplied from the camera 41.
An omnidirectional-image converter 43 reads the omnidirectional image data stored in the buffer 42, converts the omnidirectional image data into original image data in a latitude-longitude representation which will be described later, and supplies the original image data to a buffer 44.
The buffer 44 temporarily stores the original image data supplied from the omnidirectional-image converter 43.
A driving mechanism 45, under the control of a driving-mechanism controller 46, moves an object to be imaged by the camera 41. BY moving the object by the driving mechanism 45, the viewpoint (optical center) of the camera 41 for the object is relatively changed to a plurality of positions.
The driving-mechanism controller 46 drives the driving mechanism under the control of the controller 47.
The controller 47 controls the timing of imaging by the camera 41, the speed and direction for driving the driving mechanism 45 by the driving-mechanism controller 46, and so forth. Furthermore, the controller 47 supplies information indicating a timing of imaging by the camera 41 (imaging time), a position of an object moved by the driving mechanism 45 (including an attitude of the object as required), and so forth to a mux (multiplexer) 48.
The multiplexer 48 adds, to each frame of original image data stored in the buffer 44, information output from the controller 47 for the relevant frame, and supplies the result to the image database 2, where the result is stored.
Next, an image generating process executed by the image generating apparatus shown in
First, the controller 47 moves an object to a designated position, controls the camera 41 and the driving-mechanism controller 46 to image the object, and supplies information representing the designated position and timing of imaging of the object to the mux 48.
The controller 47 presets, for example, a three-dimensional coordinate system in the real world (hereinafter referred to as an imaging coordinate system when appropriate), and outputs coordinates of the object in the imaging coordinate system as information representing a position of the object (hereinafter referred to as position information when appropriate). Furthermore, the controller 47 also outputs an angle representing a change in the object with a certain attitude of the object (e.g., an attitude of the object at the start of imaging of the object) as a reference attitude, the angle being included in the position information. Furthermore, the controller 47 outputs information representing coordinates of a position of the camera 41 (e.g., the position of a lens center) and a direction of an optical axis thereof (viewing direction), the information being included in the position information.
If the object is moved by a motion base system described later with reference to
The coordinates and attitude of the object described above is actually grasped from the status of the driving mechanism 45 that moves the object. The status of the driving mechanism 45 is recognized by the controller 47 that controls the driving mechanism 45 via the driving-mechanism controller 46.
In step S11, the driving-mechanism controller 46, under the control of the controller 47, controls the driving mechanism 45 to change the position of the object. The process then proceeds to step S12. In step S12, the camera 41, under the control of the controller 47, images the object, and supplies the resulting omnidirectional image data to the buffer 42, where the omnidirectional image data is stored.
In step S13, the omnidirectional-image converter 43 reads the omnidirectional image data stored in the buffer 42, converts the omnidirectional image data into original image data in the latitude-longitude representation, and supplies the original image data to the buffer 44. The process then proceeds to step S14, in which the mux 48 adds information supplied from the controller 47 to the frames of the original image data stored in the buffer 44, and supplies the result to the image database 2, where the result is stored.
After the processing in step S14, the process proceeds to step S15, in which the controller 47 determines whether the object has been moved to all the preset positions (and whether the object has been placed in all the preset attitudes, as required). If it is determined that the object has not been moved to all the positions, the controller 47 controls the camera 41 and the driving-mechanism controller 46 so that the object will be moved to a position where the object has not yet been moved and the object will then be imaged, and supplies information representing the position where the object has been moved, timing of imaging of the object, and so forth, to the mux 48. Then, the process returns to step S11, and then the same process is repeated.
On the other hand, if it is determined in step S15 that the object has been moved to all the preset positions, that is, if the object has been imaged at all the preset positions, the process is exited.
Next, systems for moving an object when an omnidirectional image of the object is to be captured by the image generating apparatus shown in
The image generating apparatus shown in
In the motion base system, a motion base is used as the driving mechanism 45, as shown in
More specifically, in the motion base system, for example, the motion base acting as the driving mechanism 45 is gradually moved from left to right while moving it in the vertical direction, as shown in
According to the motion base system shown in
In the turntable system, a turntable is used as the driving mechanism 45, as shown in
According to the turntable system shown in
In the image generating apparatus shown in
In the image generating apparatus shown in
The image generating apparatus shown in
In the embodiment shown in
The supporter 51 is composed of a transparent material having a low reflectivity, such as glass. The supporter 51, in order to minimize refraction of light on the glass surface, forms a spherical surface centered at a focal point of the condenser 52, which will be described later, such that incident light will be perpendicular to the glass surface.
The condenser 52 is implemented, for example, by a mirror in a hyperboloidal shape (hyperboloidal mirror). The condenser 52 reflects ambient light incident through the supporter 51 towards the direction of the imager 53.
The imager 53 is implemented, for example, by a photoelectric converter element such as a CCD (Charge Coupled Device), and it converts light incident thereon into image data in the form of electric signals. The image data acquired by the imager 53 is supplied, as an output of the camera 41, to the buffer 42 shown in
The configuration of the omnidirectional camera shown in
The omnidirectional image data is segmented by circumferences F1 and F2 of two circles centered at a center point C1. In
That is, the omnidirectional image data includes a region R1 that is insider of the larger circumference F1 and outside of the smaller circumference F2, a region R2 outside of the larger circumference F1, and a region (inner region) R3 surrounded by the smaller circumference F2.
Of the three regions R1 to R3, image data corresponding to ambient light reflected by the condenser 52 is captured in the region R1, part outside of the condenser 52 is imaged in the region R2, and the imager 53 itself is imaged in the region R3.
In the embodiment shown in
Next, a hyperboloid constituting the condenser 52 shown in
The condenser 52 is formed by a part of a hyperboloid. More specifically, a mirror surface is formed on a convex surface of a convex top portion of a hyperboloid, formed by cutting the hyperboloid by a plane perpendicular to the axis of the hyperboloid.
The condenser 52 can be formed using a two-sheeted hyperboloid, which is a type of hyperboloid. As shown in
Of the two sheets of hyperboloid H1 and H2, the hyperboloid H1 existing in the region Z>0 is used. Hereinafter, the Z axis will be referred to as a center axis or simply an axis of the hyperbola when appropriate.
In the three-dimensional orthogonal coordinate system of X, Y, and Z, shown in
In equation (1), constants a and b define the shapes of the hyperboloids H1 and H2. More specifically, the constant b denotes the distance from an origin O to an intersection of the hyperboloid H1 (H2) and the Z axis. The constant a denotes a radius of a circle formed by a line of intersection of a plane crossing through the intersection and parallel to the XY plane and an asymptotic plane A1 of the hyperboloid H1 (H2).
Furthermore, in equation (1), a constant C defines the positions of the focal points of the hyperboloids H1 and H2. More specifically, a position of +c on the Z axis (0, 0, +c) is the focal point f1 of the hyperboloid H2, and a position of −c on the Z axis (0, 0, −c) is the focal point f2 of the hyperboloid H1.
The constants a, b, and c have the relationship expressed in the following equation:
C=√{square root over (a2+b2)} (2)
Assuming that the condenser 52 is formed by the hyperboloid H1 described with reference to
In this case, letting the center point C1 of the circles of the circumferences F1 and F2 be denoted as (X0, Y0), the radius of the circle of the circumference F1 as rF1, and the radius of the circle of the circumference F2 as rF2, points (x, y) constituting the region R2 outside of the circumference F1 can be expressed by equation (3), and points (x, y) constituting the region R3 inside of the circumference F2 can be expressed by equation (4):
(x−X0)2+(y−Y0)2>rF12 (3)
(x−X0)2+(y−Y0)2<rF22 (4)
The omnidirectional-image converter 43 shown in
In converting the pixel values, the coordinates (X0, Y0) of the center point C1 and the radii rF1 and rF2 are needed. This information is supplied from the camera 41 to the omnidirectional-image converter 43 via the buffer 42.
For simplicity of description, exposure time, aperture, and zoom are assumed to be fixed herein.
Regarding the omnidirectional image data that is image data in the region R1 shown in
As shown in
The above-described distortion in the omnidirectional image data output from the camera 41 that functions as an omnidirectional camera can be considered separately as a distortion in the circumferential direction of a circle passing through the center point C1 and a distortion in the radial direction thereof.
First, regarding the distortion in the circumferential direction, in the omnidirectional image data shown in
Referring to
Considering a light ray r′ that is incident toward the Z axis with an angle θ′ with respect to the X axis, the light ray r′ is also reflected by the hyperboloid H1 and thereby reaches a point p′(x′, y′) on the photo-receiving surface (image surface) A3. Also in this case, the point p′(x′, y′) makes the same angle θ′ with the X axis as the light ray r′ makes with the X axis.
Furthermore, if the light rays r and r′ have the same elevation angle (which will be described later) with respect to the Z axis, the light rays r and r′ are received at points on the photo-receiving surface A3 at different positions but having the same distance rp from the X axis.
From what has been described above, a plurality of light rays having the same elevation angle with respect to the Z axis is received at points on the photo-receiving surface A3, the points having the same distance from the Z axis and making the same angles with the X axis as angles that the light rays make with the X axis.
Thus, a plurality of light rays having the same elevation angle with respect to the Z axis and having the same angle with respect to the X axis is incident on a circumference of the photo-receiving surface A3 about the Z axis at regular intervals. Therefore, in the omnidirectional image data, a distortion does not exist in the circumferential direction of a circle centered at the center point C1 at the intersection of the photo-receiving surface A3 and the Z axis.
On the other hand, in the omnidirectional image data shown in
Referring to
The elevation angle with respect to the Z axis herein refers to an angle made by a plane passing through the focal point on the Z axis and parallel to the XY plane and a light ray incident toward the focal point f1. The photo-receiving surface A3 of the imager 53 is located in the direction of the origin O, and is distant by the focal length f of the camera 41 from the focal point f2 along the Z axis.
A light ray r2 that is incident toward the focal point f1 at an elevation angle Δd° with respect to the Z axis is reflected by the hyperboloid H1, is thereby directed toward the focal point f2, and is received by the photo-receiving surface A3. A light ray r3 that is incident toward the focal point f1 at an elevation angle 2Δd° with respect to the Z axis is reflected by the hyperboloid H1, is thereby directed toward the focal point f2, and is received by the photo-receiving surface A3. Similarly, light rays r4, r5, and r6, with elevation angles increasing by steps of Δd°, are received by the photo-receiving surface A3.
As described above, the intervals of points where the light rays r1 to r6 with elevation angles that vary by steps of Δd° are not regular, and become smaller for points closer to the Z axis (the intervals becomes larger for points remote from the Z axis), as shown in an enlarged view in
Since the intervals of points where light rays having the same elevation angle are received on the photo-receiving surface A3 are not regular as described above, the omnidirectional image data includes a distortion in the radial direction.
Thus, in order to remove the distortion in the radial direction of the omnidirectional image data, the intervals of points where light rays having the same elevation angle are received on the photo-receiving surface A3 must be regular.
Now, a light ray r that is incident from a point P(X, Y, Z) on an object toward the focal point f1 at an elevation angle of α°, as shown in
Similarly to the case described with reference to
In this case, the angle that the light ray r directed toward the focal point f2 makes with a plane passing through the focal point f2 and parallel to the XY plane will be denoted as γ°. Furthermore, in a two-dimensional orthogonal coordinate system defined by the X axis and the Y axis, coordinates of a point p where the light ray r is received on the photo-receiving surface A3 (photo-receiving point) will be denoted as (x, y), and the distance between the point p(x, y) and the Z axis will be denoted as R.
The angle α in
From equation (5), tan α can be calculated by the following equation:
Now, let cos γ be defined as in the following equation:
cos γ=X (7)
Assigning equation (7) into equation (6) yields the following equation:
{(b2−c2)tan α}·X=(b2+c2)√{square root over (1−X2)}−2bc (8)
Rearranging equation (8) yields equation (9):
Let A and B be defined as in equations (10) and (11), respectively:
Assigning equations (10) and (11) into equation (9) yields equation (12):
AX+B=√{square root over (1−X2)} (12)
Equation (12) can be rearranged into a quadratic equation for X, as follows:
(A2+1)X2+2ABX+B2−1=0 (13)
Solving the quadratic equation in equation (13) yields the following equation:
Thus, from equation (7), the angle γ can be calculated by the following equation:
γ=cos−1(X) (15)
In equation (15), X is defined by equation (14), and A and B in equation (14) are defined by equations (10) and (11), respectively.
Furthermore, from the coordinates of the point p in
Since the distance R between the Z axis and the point p(x, y) in
From what has been described above, by calculating the angle γ according to equation (15) and calculating equation (17) using the angle γ, the distance R from the Z axis to the point p(x, y) where the light ray r incident toward the focal point f1 at an elevation angle α with respect to the Z axis is received on the photo-receiving surface A3 can be calculated.
Thus, omnidirectional image from which a distortion in the radial direction has been removed can be obtained by dividing a predetermined range of elevation angle with respect to the Z axis (e.g., from 0° to 80° equally by an angle Δd°, and calculating distances Rp1, Rp2, Rp3, . . . from the Z axis to points p1, p2, p3, . . . where light rays incident at elevation angles Δd, 2Δd, 3Δd, . . . are received on the photo-receiving surface A3, and converting omnidirectional image data output from the camera 41 so that distances between adjacent points |Rp1-Rp2|, |Rp2-Rp3|, . . . will be a constant value.
The conversion of the omnidirectional image data for removing the distortion is executed by the omnidirectional-image converter 43 shown in
More specifically, the omnidirectional-image converter 43 receives the center point C1, the radius rF1 of the circle of the circumference F1, and the radius rF2 of the circle of the circumference F2 as well as the omnidirectional data including the above-described distortion in the radial direction, from the camera 41 via the buffer 42, as shown in
The omnidirectional-image converter 43 draws a plurality of concentric circles having radii Rp1, Rp2, Rp3, . . . and centered at the center point C1, in the region R1 surrounded by the circumference F1 of the circle centered at the center point C1 and having the radius rF1 and the circumference F2 of the circle centered at the center point C1 and having the radius rF2. Furthermore, the omnidirectional-image converter 43 draws a plurality of straight lines passing through the center point C1 and equally dividing the circumferences of the plurality of concentric circles. Thus, the omnidirectional-image converter 43 obtains a large number of intersections of the plurality of concentric circles and the plurality of straight lines in the region R1.
The large number of intersections formed by the plurality of concentric circles and the plurality of straight lines will be referred to as conversion-subject points when appropriate.
From what has been described above, by disposing conversion-subject points such that adjacent conversion-subject points are regularly spaced, omnidirectional image data including a distortion can be converted into image data from which the distortion has been removed.
Now, a case will be considered where image data of the substantially fan-shaped region R1 shown in
As shown in
The omnidirectional-image converter 43 disposes the large number of conversion-subject points in the region R11 such that adjacent conversion points are regularly spaced, as shown in
More specifically, the omnidirectional-image converter 43 assumes regularly spaced straight lines L21, L22, L23, L24, L25, and L26 in the horizontal direction, respectively corresponding to the arcs F11, F12, F13, F14, F15, and F16 shown in
Thus, for example, a conversion-subject point p11 at an intersection of the arc F14 and the straight line L5 in
Considering a sphere having a mirror surface and surrounding the camera 41, omnidirectional image data displays the scenery of the outside of the sphere, reflected on the surface of the sphere. Thus, for example, regarding the sphere surrounding the camera 41 as the Earth, the vertical axis and the horizontal axis of image data obtained by the omnidirectional-image converter 43 correspond to the latitude and longitude of the Earth, respectively. Thus, in this embodiment, omnidirectional image data output from the omnidirectional-image converter 43, from which a distortion has been removed, is referred to as image data in a latitude-longitude representation.
As described above, the omnidirectional-image converter 43 converts (changes) the positions of conversion-subject points to convert image data including a distortion in the radial direction (omnidirectional image data) into image data from which the distortion has been removed (image data in the latitude-longitude representation). As described earlier, the conversion-subject points are intersections of the circles centered at the center point C1 and the straight lines passing through the center point C1. Thus, the conversion-subject points do not necessarily coincide with pixel centers of pixels constituting the photo-receiving surface A3 (
Since conversion-subject points are generally deviated from pixel centers as descried above, the omnidirectional-image converter 43 must calculate pixel values of conversion-subject points before converting the positions of the conversion-subject points.
Thus, the omnidirectional-image converter 43 calculates pixel values at conversion-subject points, for example, in the manner described below.
Now, let it be assumed that the conversion-subject point p1 in
If the conversion-subject point p11 is a point that is rightward by a distance α and downward by a distance β relative to the pixel center CP1, for example, the omnidirectional-image converter 43 uses a pixel values Ss according to the following equation as a pixel value of the conversion-subject point p11:
Ss={Sa·(1−α)+α·Sb}(1−β)+β·{Sc·(1−α)+α·Sd} (18)
In equation (18), Sa, Sb, Sc, and Sd denote the pixel values of the pixels P1, P2, P3, and P4, respectively. Furthermore, in equation (18), α and β are values in a range of 0 to 1, and correspond to the position of the conversion-subject point p11.
In the embodiment shown in
In the embodiment shown in
In a video camera having an ordinary lens, assuming a virtual screen is formed by a rectangular plane perpendicular to the optical axis of the video camera, having a center of gravity on the optical axis, and disposed between the lens center of the video camera and an object, image data formed on the virtual screen by light rays incident on the lens center from points on the object is captured. At that time, the light rays incident on the virtual screen ideally undergo no conversion, so that the virtual screen that is a two-dimensional plane loyally reflects the circumstances of the real world that is a three-dimensional space.
On the other hand, in a video camera having an omnidirectional camera or a fish-eye lens, although omnidirectional or wide-angle imaging is allowed, light rays incident on a virtual screen is converted non-linearly. More specifically, in the case of an omnidirectional camera, as shown in
Thus, in the omnidirectional-image converter 43 shown in
In the case of an omnidirectional camera, regarding latitudinal direction, ideally, directions of 0° to −90° (directions from arbitrary points below the XY plane toward the origin in
Image data in the latitude-longitude representation, obtained by conversion of omnidirectional image data captured by an omnidirectional camera, is not needed in its entirety when the image display apparatus shown in
Thus, in the following description, it is assumed that an object is imaged using a camera having an ordinary lens, image data in a range that is reflected on a virtual screen thereof is extracted from image data in the latitude-longitude representation, and processing is executed on the image data that has been extracted. The extraction can be performed, for example, by the omnidirectional-image converter 43 shown in
Furthermore, in the following description, the optical axis or the lens center of the camera 41, assuming that the camera 41 is a camera having an ordinary lens, refers to the optical axis or the lens center of the camera having an ordinary lens. Thus, as described earlier, regarding image data extracted from image data in the latitude-longitude representation, assuming that the image data was captured by a camera having an ordinary lens, the optical axis or the lens center of the camera is the optical axis or the lens center of the camera 41.
In the image processing apparatus shown in
The data converter 30 is allowed to obtain image data showing an object as viewed by a user in the real world by the following principles.
The image database 2 stores original image data in latitude-longitude representation, captured from a plurality of viewpoints (viewpoints of the camera 41), output from the image generating apparatus shown in
Now, setting a viewpoint P at a certain point that is on the other side of an object with respect to the curved surface Ω, image of the object as viewed from the viewpoint P will be considered.
The viewpoint P is taken at a point such that a straight line connecting the viewpoint P to an arbitrary point on the object crosses the curved surface Ω.
For simplicity of description, it is assumed herein that image data of an object captured from arbitrary points on the curved surface Ω as viewpoints is stored in the image database 2, and that light rays go straight, without being attenuated, in a space (medium) where the user observes the object.
The trajectories of light rays relating to the object as viewed from the viewpoint P (trajectories of light rays incident from the object to the viewpoint P) can be represented by straight lines connecting the viewpoint P and respective points on the object. Since the light rays always crosses the curved surface Ω, pixel values corresponding to light rays having trajectories coinciding those of the light rays (light-ray information that is the same as the light-ray information of the object as viewed from the viewpoint P) always exist in the image database 2.
Now, considering a straight line Li connecting the viewpoint P and a point Ri on the object, the intersection of the straight line Li and the curved surface Ω will be denotes as Qi. In this case, image data of an object captured with arbitrary points on the curved surface Ω as viewpoints is stored in the image database 2, so that image data of the object captured with the point Qi as a viewpoint is stored in the image database 2. Furthermore, in this case, light rays go straight without being attenuated, so that a light ray incident from the point Ri on the object to the point Qi on the curved surface Ω coincides with a light ray incident on the viewpoint P. Thus, when the object is viewed from the viewpoint P, the pixel value corresponding to the light ray directed from the point Ri on the object to the viewpoint P coincides with the pixel value corresponding to the light ray directed from the point Ri on the object to the point Qi on the curved surface Ω, and this pixel value corresponding to the light ray directed from the point Ri to the point Qi is stored in the image database 2.
From what has been described above, the pixel value at point Ri on the object as viewed from the viewpoint P can be obtained from image data captured with the point Qi on the curved surface Ω as a viewpoint.
Similarly, pixel values relating to other points on the object as viewed from the viewpoint P can be obtained from image data captured with points on the curved surface Ω as viewpoints. Thus, if image data captured with arbitrary points on the curved surface Ω as viewpoints exists, image data of the object as viewed from the viewpoint P can be obtained by selecting, from the pixel values of pixels constituting the image data, a pixel value corresponding to a light ray having the same light-ray information as the light-ray information connecting the viewpoint P to the object.
The shape of the curved surface Ω shown in
The curved surface Ω may be either an open curved surface or a closed curved surface. If the curved surface Ω is an open curved surface, however, the viewpoint P must be taken such that a straight line connecting the viewpoint P to an arbitrary point on the object crosses the curved surface Ω.
Furthermore, if the curved surface Ω is a closed curved surface surrounding the object, the following can be said from the principles described above.
If light-ray information of light rays (trajectories of light rays and pixel values corresponding to the light rays) in all directions have been obtained for all points on the curved closed surface surrounding the object, an image as viewed from any point outside the closed curved surface can be reconstructed.
Although image data of an object captured with arbitrary points on the curved surface Ω as viewpoints are obtained in the case described above, a viewpoint for imaging an object need not reside on the curved surface Ω. For example, if the curved surface Ω is a closed curved surface surrounding the object, in order to allow reconstruction of an image as viewed from any point outside the closed curved surface, in principle, it suffices if light-ray information of all directions for any point on the closed curved surface exists. The light-ray information may relate to an image captured with a point on the closed curved surface as a viewpoint or an image captured with a point not on the closed curved surface as a viewpoint. This also applies to a case where the curved surface Ω is an open curved surface.
As described above, the data converter 30 shown in
More specifically, the data converter 30 shown in
Thus, for example, when presentation image data as viewed from an arbitrary point outside the closed curved surface surrounding the object is to be reconstructed, it suffices if light-ray information of all directions at all the points on the closed curved surface exists. In theory, points on the closed curved surface and directions at the points are infinite, so that points on the closed curved surface and directions at the points are actually limited to finite numbers.
When presentation image data with as viewed from a viewpoint at an arbitrary point outside the closed curved surface is reconstructed using light-ray information of all directions at all the points on the closed curved surface, if the viewpoint is on the closed curved surface, presentation image data can be reconstructed simply using light-ray information of a light ray that passes through a point on the closed curved surface that coincides with the viewpoint.
On the other hand, if the viewpoint is not on the closed curved surface, intersections of the closed curved surface and straight lines connecting the viewpoint to all the pixels on the virtual screen set for the viewpoint must be calculated. In this case, it sometimes becomes difficult to display presentation image data in real time, for example, depending on the performance of the CPU 12 of the computer 1 (
Thus, in the data converter 30, the image-data converter 31 converts original image data stored in the image database 2 into intermediate data, which is image data in a predetermined format composed of pixel values corresponding to light rays incident on relevant pixels, and the intermediate-data converter 32 converts the intermediate data into presentation image data as viewed from a user's viewpoint, allowing the presentation image data to be displayed in real time.
That is, the image-data converter 31 generates intermediate data that is image data in which pixel values at intersections of light rays incident on predetermined pixels constituting original image data and a plane perpendicular to the light rays and passing a predetermined point are used as pixel values of the predetermined pixels of the original image data.
Thus, for example, assuming that the curved surface Ω is a closed curved surface forming a spherical surface and considering a light ray in a certain direction at a point on the spherical surface, the image-data converter 31 assumes a pixel at a point Px that the subject light ray passes on a plane α passing through a predetermined point, e.g. the origin, and perpendicular to the subject light ray, and sets the pixel value thereof as a pixel value corresponding to the subject light ray. Similarly, the image-data converter 31 sets pixels on the plane α and pixel values thereof for light rays in the same direction at points on the spherical surface other than the point Q, whereby image data composed of pixel values corresponding to light rays in the same direction is formed on the plane α.
Now, referring to
On the plane α described above, image data composed of pixel values at positions corresponding to light rays in the same direction as the vector v is formed. The image data formed on the plane α is image data as viewed from an infinite distance in the direction of the vector v as a viewpoint.
Similarly, the image-data converter 31 constructs image data for planes passing through the origin and perpendicular to vectors v defined by various values of the latitude θ and the longitude φ, and outputs the image data as intermediate data.
Next, an image-data conversion process executed in step S1 shown in
First, in step S21, the image-data converter 31 selects a subject imaging point Pc from among viewpoints of the camera 41 (hereinafter also referred to as imaging points when appropriate) for the capture of original image data stored in the image database 2.
More specifically, in the image generating apparatus described with reference to
In the image database 2, as well as the frames of original image data, information representing the position of an object and the position and the direction of the optical axis of the camera 41 during the capture of the original image data is stored, as described earlier. Based on this information, for each of the frames of the original image data, the image-data converter 31 calculates imaging points corresponding to the positions of the camera 41 in a case where the position (including the attitude) of the object is fixed, for example, in the imaging coordinate system, and selects therefrom a subject imaging point Pc that has not yet been considered as a subject imaging point.
Then, the process proceeds to step S22, in which the image-data converter 31 sets a virtual screen for the subject imaging point Pc, and selects a subject pixel Ps that has not yet been considered as a subject pixel from among pixels on the virtual screen.
More specifically, referring to
In the image-data converter 31, the direction of the optical axis of the camera 41 at the subject imaging point is recognized based on the information stored in the image database 2.
It is assumed that the numbers of pixels on the virtual screen in the horizontal and vertical directions coincide with the numbers of pixels in the horizontal and vertical directions of the frames of the original image data captured from the subject imaging point Pc, and that the original image data captured from the subject imaging point Pc is displayed on the virtual screen.
After the processing in step S22, the process proceeds to step S23, in which the image-data converter 31 calculates a vector v with the subject pixel Ps as the initial point and the subject imaging point Pc as the terminal point. The process then proceeds to step S24.
In the embodiment shown in
In the embodiment shown in
In
In step S24, the image-data converter 31 calculates a plane α that is perpendicular to the vector v and that passes through a predetermined point, e.g., the origin, on the imaging coordinate system. The process then proceeds to step S25.
The plane α need not necessarily pass through the origin.
In step S25, the image-data converter 31 calculates the latitude θ and longitude φ of the vector calculated in step S23, i.e., the latitude θ as an angle formed by the vector v and the xy plane and the longitude φ as an angle formed by the vector v and the xz plane. The process then proceeds to step S26.
The latitude θ and the longitude φ of the vector v can also be considered as the latitude θ and the longitude φ of the normal direction of the plane α calculated in step S24. Thus, the plane α passing through the origin as the predetermined point can be defined by the latitude θ and the longitude φ thereof, so that the plane α defined by the latitude θ and the longitude φ will hereinafter also be denoted as a plane I(θ, φ) when appropriate.
Regarding the sign of the latitude θ, the positive side and the negative side of the z axis will be considered as positive and negative, respectively. Also, regarding the sign of the longitude φ, the positive side and the negative side of the y axis will be considered as positive and negative, respectively.
In step S26, the image-data converter 31 calculates a straight line Lp connecting the subject imaging point Pc and the subject pixel Ps, as shown in
The coordinates (Xα, yα) of the point Px on the plane α can be calculated as follows.
Now, assuming a two-dimensional coordinate system on the plane α, unit vectors in the directions of the x axis and the y axis in the imaging coordinate system will be denoted as vx and vy, respectively.
In this case, the x coordinate xα and the y coordinate yα of the point Px can be obtained by calculating vx·OPs (or vx·OPc) and vy·OPs (or vy·OPc), respectively. “·” represents inner product, and OPs (OPc) denotes a vector with the origin of the imaging coordinate system as the initial point and the subject pixel Ps (subject imaging point Pc) as the terminal point.
The unit vector vx is, for example, a vector that satisfies equations vx·v=0 and vx·Zv=0 and that has a length of 1. The unit vector vy is a vector that satisfies equations vy·v=0 and vy·vx=0 and that has a length of 1. The vector Zv denotes a unit vector in the direction of the z axis in the imaging coordinate system (=(0, 0, 1)).
If the optical axis of the camera 41 from the subject imaging point Pc does not pass through the origin of the imaging coordinate system, the coordinates (Xα, yα) of the point Px must be offset, for example, by the coordinates of the intersection of the optical axis and the plane α in the two-dimensional coordinate system on the plane α.
That is, when the coordinates (Xα, yα) of the point Px on the plane α has been calculated as described above, the coordinates (Xα, yα) of the point Px is represented with respect to an origin at the intersection of the plane α and the optical axis of the camera 41 from the subject imaging point Pc. Thus, regarding light rays in the same direction and passing through the imaging point, for which the optical axis intersects the plane α at different points, two-dimensional coordinate systems with origins at different positions are defined on the same plane α.
Thus, in order to fix the origins of two-dimensional coordinate systems defined on the same plane α at, for example, the origin of the imaging coordinate system, when the optical axis of the camera 41 from the subject imaging point Pc does not pass through the origin of the imaging coordinate system, in step S27, the image-data converter 31 offsets the coordinates of the point Px by the coordinates of the intersection of the optical axis and the plane α in the two-dimensional coordinate system on the plane α.
More specifically, the image-data converter 31 adds together coordinates (xα′, yα′) and (xα0, yα0) to finally calculate (xα′+xα0, yα′+yα0) as the coordinates (Xα, yα) of the point Px on the plane α, where (xα′, yα′) denotes the coordinates of the point Px calculated as described above and (xα0, yα0) denotes the coordinates of the intersection of the optical axis of the camera 41 from the subject imaging point Pc and the plane α in the two-dimensional coordinate system on the plane α.
The process then proceeds to step S28, in which the image-data converter 31 sets the pixel value of the subject pixel Ps among the pixels constituting the original image data on the virtual screen as the pixel value of a pixel at the position of the point Px on the plane α. That is, letting the pixel value of the pixel at the point Px on the plane α be denoted as I(θ, φ) (Xα, yα) using I(θ, φ) representing the plane α and (Xα, yα) representing the coordinates of the point Px on the plane α, in step S28, the image-data converter 31 sets the pixel value of the subject pixel Ps in the pixel value I(θ, φ) (Xα, yα) of the pixel at the position of the point Px on the plane α. Thus, the subject pixel Ps is orthogonally projected onto the plane I(θ, φ) that is perpendicular to the vector v, and the pixel value of the subject pixel Ps is set as the pixel value I(θ, φ) (Xα, yα) of the pixel at the position of the point Px (=(Xα, yα)) on the plane I(θ, φ) as determined by the orthogonal projection. The pixel value I(θ, φ) (Xα, yα) of the pixel Px, determined by orthogonally projecting the subject pixel Ps onto the plane I(θ, φ), is intermediate data.
Then, the process proceeds to step S29, in which the image-data converter 31 determines whether all the pixels (constituting the original image data) on the virtual screen set for the subject imaging point Pc have been considered as subject pixels. If it is determined that a pixel that has not yet been considered as a subject pixel exists, the process returns to step S22, and then the same process is repeated.
On the other hand, if it is determined in step S29 that all the pixels on the virtual screen have been considered as subject pixels, the process proceeds to step S30, in which the image-data converter 31 determines whether imaging points of all the frames of the original image data stored in the image database 2 have been considered as subject imaging points.
If it is determined in step S30 that an imaging point that has not yet been considered as a subject imaging point exists among the imaging points of the frames of the original image data stored in the image database 2, the process returns to step S21, and then the same process is repeated.
On the other hand, if it is determined in step S30 that all the imaging points of the frames of the original image data stored in the image database 2 have been considered as subject imaging points, the process is exited.
By the image-data conversion process described above, ideally, on planes I(θ, φ) defined by latitudes θ and longitude φ having various values, image data of an object as viewed from infinite distances in the directions defined by the latitudes θ and the longitudes φ is generated, and the image data is supplied to and stored in the intermediate database 3 as intermediate data.
The intermediate data generated by the image-data conversion process shown in
In the embodiment shown in
In each of the cells of the latitude-longitude table shown in
In
Image data as viewed from an infinite distance, registered in each of the cells of the latitude-longitude table shown in
Image data composed of pixel values in the pixel-value table (
More specifically, a range where pixels of original image data is orthogonally projected onto the plane I(θ, φ) (hereinafter referred to as an effective range when appropriate) is defined by x coordinates from x1 to x2 and y coordinates from y1 to y2. Pixel values in this range are registered in the pixel-value table. However, the pixels of the original image data are not necessarily projected orthogonally to all the points on the plane I(θ, φ) (e.g., all the points represented by integer values of x coordinate in the range of x1 to x2 and integer values of y coordinate in the range of y1 to y2), and pixels of original data orthogonally projected are sometimes missing for some points.
Thus, pixel values do not always exist for all the pixels in the effective range of the plane I(θ, φ). In that case, pixel values of some pixels of image data in the effective range, i.e., image data composed of pixel values in the pixel-value table (
In the embodiment shown in
If pixel values are missing in the effective range of the plane I(θ, φ), i.e., in the pixel-value table, a pixel-value interpolation process of interpolating the pixel values is executed. Through the pixel-value interpolation process, (an image composed of pixel values registered in) the pixel-value table in which some pixel values are missing as shown in
The pixel-value interpolation process for the pixel-value table can be executed, for example, as follows.
For example, when a pixel value I(θ, φ) (xα, yα) at a point (xα, yα) in the effective range of the plane I(θ, φ) is missing, if a pixel value I(θ′, φ′) (xα, yα) at a point having the same coordinates as the point (xα, yα) in the effective range of the plane I(θ′, φ′) with a slight deviation in latitude or longitude exists, the missing pixel value I(θ, φ) (xα, yα) can be interpolated using pixel value I(θ′, φ′) (xα, yα) on the plane I(θ′, φ′).
If the latitude takes on only integer values, θ′ is, for example, θ±1 or θ±2.
The pixel-value interpolation process described above can be executed after completion of the image-data conversion process shown in
Now, the pixel-value interpolation process executed by the image-data converter 31 will be described with reference to a flowchart shown in
In the pixel-value interpolation process, first, in step S41, the image-data converter 31 sets initial values in a variable θ representing the latitude and a variable φ representing the longitude, and also sets initial values in a variable xα and a variable yα representing x coordinate and y coordinate on the plane I(θ, φ). For example, −90 degrees in set in θ, −180 degrees is set in φ, x1 is set in xα, and y1 is set in yα as initial values.
The process then proceeds to step S42, in which the image-data converter 31 determines whether a pixel value has been set in intermediate data I(θ, φ) (xα, yα).
Whether a pixel value has been set in the intermediate data I(θ, φ) (xα, yα) is determined by setting initial values that are impossible as pixel values in an array variable I(θ, φ) (xα, yα) as intermediate data before executing the image-data conversion process shown in
If it is determined in step S42 that a pixel value has been set in the intermediate data I(θ, φ) (xα, yα), that is, if a pixel value is not missing, steps S43 and S44 are skipped, and the process proceeds to step S45.
On the other hand, if it is determined in step S42 that a pixel value has not been set in the intermediate data I(θ, φ) (xα, yα), that is, if a pixel value is missing, the process proceeds to step S43. In step S43, the image-data converter 31 searches for a point with a pixel value set among points (xα, yα) on planes I(θ′, φ′) defined by latitudes θ′ in a range of (θ−Δθ)<θ′<(θ+Δθ) and longitudes φ′ in a range of (φ−Δθ)<φ′<(φ+Δφ).
As Δθ and Δφ, for example, small integer values are used.
The process then proceeds to step S44. In step S44, the image-data converter 31 sets the value (pixel value) of the intermediate data I(θ′, φ′) (xα, yα) with the pixel value set, found in step S43, in the intermediate data I(θ, φ) (xα, yα) of the missing pixel value. The process then proceeds to step S45.
If a plurality of points with pixel values set are found among points (xα, yα) on the planes I(θ′, φ′) defined by latitudes θ′ in a range of (θ−Δθ)<θ′<(θ+Δθ) and longitudes φ′ in a range of (φ−Δφ)<φ′<(φ+Δφ), in step S44, the image-data converter 31 selects therefrom, for example, a point for which the sum of squares of the absolute value of the difference in the latitude |θ-θ′| and the absolute value of the difference in the longitude |φ-φ′| is smallest, setting the value of I(θ′, φ′) (xα, yα) selected in I(θ, φ) (xα, yα). That is, the image-data converter 31 sets data on a plane I(θ′, φ′) approximate to the plane I(θ, φ) as the value of the missing pixel.
On the other hand, if a point with a pixel value set is not found in step S43 among points (xα, yα) on the planes I(θ′, φ′) defined by latitudes θ′ in a range of (θ−Δθ)<θ′<(θ+Δθ) and longitudes φ′ in a range of (φ−Δφ)<φ′<(φ+Δφ), in step S44, the image-data converter 31 searches for a point closest to the point (xα, yα) among points with pixel values set on I(θ, φ), setting the pixel value having been set for the point in the point (xα, yα).
In the pixel-value interpolation process, pixel values are interpolated for points (xα, yα) with pixel values not set on the plane I(θ, φ). Thus, as the process progresses, it is possible that pixel values at points for which pixel values have been interpolated causes further interpolation of pixel values at other points. In order to prevent this, for example, interpolation flags indicating that interpolation has been performed are set to points for which pixel values have been interpolated, inhibiting interpolation by using pixel values at points with interpolation flags set (exempting the pixel values from the searching in step S43).
In step S45, the image-data converter 31 determines whether the variable yα representing the y coordinate on the plane I(θ, φ) is equal to the maximum value y2 thereof. If it is determined in step S45 that the y coordinate yα is not equal to the maximum value y2, the process proceeds to step S46, in which the image-data converter 31 increments the y coordinate yα by one. The process then returns to step S42, and then the same process is repeated.
On the other hand, if it is determined in step S45 that the y coordinate yα equals the maximum value y2, the process proceeds to step S47, in which the image-data converter 31 resets the y coordinate yα to the minimum value y1 thereof. The process then proceeds to step S48.
In step S48, the image-data converter 31 determines whether the variable xα representing the x coordinate on the plane I(θ, φ) is equal to the maximum value x2 thereof. If it is determined in step S48 that the x coordinate xα is not equal to the maximum value x2, the process proceeds to step S49, in which the image-data converter 31 increments the x coordinate xα by one. The process then returns to step S42, and then the same process is repeated.
On the other hand, if it is determined in step S48 that the x coordinate xα is equal to the maximum value x2, the process proceeds to step S50, in which the image-data converter 31 resets the x coordinate xα to the minimum value x1 thereof. The process then proceeds to step S51.
In step S51, the image-data converter 31 determines whether the variable φ representing longitude is equal to 179 degrees, i.e., the maximum value thereof. If it is determined in step S51 that the longitude φ is not equal to the maximum value, i.e., 179 degrees, the process proceeds to step S52, in which the image-data converter 31 increments the longitude φ by one. The process then returns to step S42, and then the same process is repeated.
On the other hand, if it is determined in step S51 that the longitude φ is equal to the maximum value, i.e., 179 degrees, the process proceeds to step S53, in which the image-data converter 31 resets the longitude φ to the minimum value, i.e., −180 degrees. The process then proceeds to step S54.
In step S54, the image-data converter 31 determines whether the variable θ representing latitude is equal to 90 degrees, i.e., the maximum value thereof. If it is determined in step S54 that the latitude θ is not equal to the maximum value, i.e., 90 degrees, the process proceeds to step S55, in which the image-data converter 31 increments the latitude θ by one. The process then returns to step S42, and then the same process is repeated.
On the other hand, if it is determined in step S54 that the latitude θ is equal to the maximum value, i.e., 90 degrees, the process is exited.
Although the pixel-value interpolation process is executed by the image-data converter 31 herein, alternatively, for example, the pixel-value interpolation process may be executed by the intermediate-data converter 32 (
In the pixel-value interpolation process shown in
However, it is desired that image data as close to the true values as possible, if not exactly the same, be obtained.
As a method for converting image data obtained by the pixel-value interpolation process shown in
The classification-adaptation process includes a classification process and an adaptation process. The classification process classifies data based on the characteristics of the data, and the adaptation process is executed on a class-by-class basis.
The adaptation process will be described in the context of an example where an image of a low quality (hereinafter referred to as low-quality image when appropriate) is converted into an image of a high quality (hereinafter referred to as high-quality image when appropriate).
Image data obtained by the pixel-value interpolation process shown in
In the adaptation process, by a linear combination of pixels constituting a low-quality image (hereinafter referred to as low-quality pixels when appropriate) and predetermined tap coefficients, predictive values of pixels of a high-quality image obtained by improving the picture quality of the low-quality image are calculated, whereby an image in which the picture quality of the low-quality image has been improved is obtained.
More specifically, for example, a case will be considered where, with a high-quality image as teacher data and a low-quality image obtained by degrading the picture quality of the high-quality image as student data, predictive values E[y] of pixel values y of pixels constituting the high-quality image (hereinafter referred to as high-quality pixels when appropriate) are calculated by a linear first-order combination model defined by a linear combination of a group of pixel values x1, x2, . . . of several low-quality pixels and predetermined tap coefficients w1, w2, . . . . In this case, the predictive values E[y] can be expressed by the following equation:
E[y]=w1x1+w2x2+ . . . (19)
In order to generalize equation (19), a matrix W composed of a set of tap coefficients wj, a matrix X composed of a set of student data xij, and a matrix Y′ composed of a set of predictive values E[yj] will be defined as in the following equations:
In this case, the following observation equation holds:
XW=Y′ (21)
The component xij of the matrix X is the j-th student data among the i-th set of student data (the set of student data used for prediction of the i-th teacher data). The component wj of the matrix W is a tap coefficient multiplied by the j-th student data among the set of student data. yi is the i-th teacher data, and thus E[yi] represents a predictive value of the i-th teacher data. Y in the left-hand side of equation (19) refers to the component yi of the matrix Y with the suffix i omitted, and x1, x2, . . . in the right-hand side of equation (19) refer to the components xij of the matrix X with the suffix i omitted.
A case will be considered where the least-square method is applied to the observation equation in equation (21) to calculate predictive values E[y] approximate to the pixel values y of high-quality pixels. First, a matrix Y composed of a set of true pixel values y of high-quality pixels constituting teacher data, and a matrix E composed of a set of errors e of the predictive values E[y] relative to the pixel values y of the high-quality pixels, will be defined as in the following equations:
In this case, from equation (21), the following residual equation holds:
XW=Y+E (23)
In the least-square method, for example, square errors expressed by the following equation are used as a criterion for evaluating tap coefficients wj for calculating predictive values E[y] approximate to the pixel values y of the high-quality pixels:
The tap coefficients wj for calculating the predictive values E[y] approximate to the pixel values y of the high-quality pixels can be obtained by minimizing the square errors in equations (24).
Thus, tap coefficients with respect to which the square errors in equation (24) are differentiated to become zero, i.e., tap coefficients wj that satisfy the following equation, are optimal values for calculating the predictive values E[y] approximate to the pixel values y of the high-quality pixels:
Thus, first, differentiating equation (23) with respect to the tap coefficients wj yields the following equation:
From equations (25) and (26), equation (27) is derived:
Furthermore, considering the relationship among the student data xij, the tap coefficients wj, the teacher data yi, and the residuals (errors) ei in the residual equation in equation (23), from equation (27), the following normal equations are derived:
Now, the vector W is defined as expressed in equation (20), and a matrix (covariance matrix) A and a vector v are defined by the following equations:
In this case, the normal equations expressed in equations (28) can be expressed by the following equation:
AW=v (30)
The same number of normal equations in equations (28), equivalent to equation (30), as the number J of the tap coefficients wj to be calculated can be derived by providing a certain number of sets of student data xij and teacher data yi. Thus, optimal tap coefficient wj can be calculated by solving equation (30) for the vector W (note, however, that solving equation (30) requires that the matrix A in equation (30) be regular). Equation (30) can be solved, for example, by the sweep-out method (Gauss-Jordan elimination).
As described above, in the adaptation process, learning is performed using student data and teacher data to calculate optimal tap coefficients wj, and predictive values E[y] approximate to teacher data y is calculated according to equation (19) using the tap coefficients wj.
The adaptation process differs from simple interpolation in that components included in a high-quality image are reproduced. More specifically, equation (19) by itself appears as, for example, simple interpolation using a so-called interpolation filter. However, since tap coefficients w corresponding to the tap coefficients of the interpolation filter are obtained by learning using teacher data y, components included in a high-quality image can be reproduced. Thus, the adaptation process can be considered to have the effect of creating an image.
The classification-adaptation processing apparatus is included, for example, in the image-data converter 31 or the intermediate-data converter 32 shown in
Intermediate data for which the pixel-value interpolation process has been executed, which is low-quality image data, is supplied to a buffer 61, and the buffer 61 temporarily stores the low-quality image data supplied thereto.
A prediction-tap extractor 62 considers pixels of high-quality image data (high-quality pixels) composed of true values of intermediate data to be calculated by a sum-of-products calculator 66 which will be described later, sequentially as subject pixels. The prediction-tap extractor 62 extracts pixels of low-quality image data (low-quality pixels) used for prediction of the subject pixels, and uses the pixels as prediction taps.
That is, the prediction-tap extractor 62 reads, for example, several low-quality pixels in the vicinity of a position corresponding to the subject pixel from the buffer 61, as prediction taps.
After obtaining the prediction taps for the subject pixel, the prediction-tap extractor 62 supplies the prediction taps for the subject pixel to the sum-of-products calculator 66.
The prediction-tap extractor 62 extracts several low-quality pixels in the vicinity of the position of the subject pixel, for example, in the plane I(θ, φ) of the intermediate data, i.e., low-quality image data, corresponding to the plane of the subject pixel, as prediction taps. Alternatively, the prediction-tap extractor 62 may extract, as prediction taps, several low-quality pixels in the vicinity of the position of the subject pixel in the plane I(θ′, φ′) with a slight deviation in latitude θ or longitude φ with respect to the plane I(θ, φ).
A class-tap extractor 63 extracts low-quality pixels for classifying the subject pixel into one of several classes from the buffer 61, and uses the low-quality pixels as class taps.
For simplicity of description, for example, it is assumed herein that the prediction taps obtained by the prediction-tap extractor 62 and the class taps obtained by the class-tap extractor 63 have the same tap structure. However, the prediction taps and the class taps may have independent (separate) tap structures.
The class taps for the subject pixel, obtained by the class-tap extractor 63, are supplied to a classifier 64. The classifier 64 classifies the subject pixel based on the class taps supplied from the class-tap extractor 63, and outputs a class code corresponding to the class determined.
The classification may be executed by, for example, ADRC (adaptive dynamic range coding).
In a method based on ADRC, the pixel values of pixels constituting class taps are ADRC-processed, and a class of the subject pixel is determined according to a resulting ADRC code.
In K-bit ADRC, for example, a maximum value MAX and a minimum value MIN of pixel values constituting class taps are detected, DR=MAX−MIN is used as a local dynamic range of a set, and pixels constituting class taps are requantized into K bits. That is, the minimum value MIN is subtracted from each of the pixel values of the pixels constituting class taps, and the resulting values are divided by DR/2K (quantized). A bit sequence in which the K bits of pixel values of the pixels constituting class taps, obtained as described above, are arranged in a predetermined order is output as an ADRC code. Thus, for example, if class taps are processed by one-bit ADRC, the minimum value MIN is subtracted from the pixel values of the pixels constituting the class taps, and the resulting values are divided by the average of the maximum value MAX and the minimum value MINI, whereby the pixel value of each of the pixels is represented by one bit (binarized). Then, a bit sequent in which the one-bit pixel values are arranged in a predetermined order is output as an ADRC code.
Alternatively, for example, the classifier 64 may output a pattern of distribution of levels of pixels (pixel-value distribution) constituting class taps as it is as a class code. In that case, if the class taps are composed of N pixels and if K bits are assigned to each of the pixels, the number of possible class codes output by the classifier 64 is (2N)K, which becomes huge exponentially as the number of bits K for pixel increases.
Thus, the classifier 64 preferably performs classification after compressing the amount of information of class taps by the ADRC process described above, vector quantization, or the like.
The class code output from the classifier 64 is supplied to a coefficient memory 65 as an address.
The coefficient memory 65 stores tap coefficients obtained by a learning process executed by a learning apparatus described later, and it outputs to the sum-of-products calculator 66 tap coefficients stored at an address associated with the class code output from the classifier 64.
The sum-of-products calculator 66 receives the prediction taps output from the prediction-tap extractor 62 and the tap coefficients output from the coefficient memory 65, performs the linear predictive calculation (sum-of-products calculation) expressed in equation (19) using the prediction taps and the tap coefficients, and outputs the result as the pixel value of the high-quality pixel being considered as the subject pixel.
A teacher-data memory 71 receives learning data that is used for learning. As the learning data, high-quality image data composed of true values of intermediate data is used herein. For example, the image-data conversion process shown in
The teacher-data memory 71 stores the high-quality image data that serves as learning data, as teacher data that serves as a teacher in learning. A student-data generator 72 generates student data that serves as a student in learning, from the teacher data stored in the teacher-data memory 71.
More specifically, the student-data generator 72 omits pixel values of image data serving as teacher data stored in the teacher-data memory 71, and executes the pixel-value interpolation process shown in
When student data has been obtained from teacher data stored in the teacher-data memory 71 and the student data has been stored in the student-data memory 73, a prediction-tap extractor 74 considers the teacher data stored in the teacher-data memory 71 sequentially as subject pixels, and extracts student data used for prediction of the subject pixel from the student-data memory 73, thereby forming prediction taps having the same tap structure as the prediction taps formed by the prediction-tap extractor 62.
The prediction taps obtained by the prediction-tap extractor 74 in the manner described above are supplied to a normal-equation adder 77.
A class-tap extractor 75 extracts student data used for classification of the subject pixel from the student-data memory 73, forming class taps having the same structure as in the case of the class-tap extractor 63 shown in
The classifier 76, upon receiving the class taps for the subject pixel from the class-tap extractor 75, performs the same classification using the class taps as the classifier 64 shown in
The normal-equation adder 77 reads teacher data of the subject pixel from the teacher-data memory 71, and performs summation of student data constituting the class taps from the prediction-tap extractor 74 and the teacher data of the subject pixel, for each class supplied from the classifier 76.
That is, the normal-equation adder 77, for each class corresponding to a class code supplied from the classifier 76, using the prediction taps (student data), performs multiplication of student data (xinxim) serving as components of the matrix A in equation (29) and summation (Σ).
Furthermore, the normal-equation adder 77, for each class corresponding to a class code supplied from the classifier 76, performs multiplication of student data and teacher data (xinyi) serving as components of the vector v in equation (29) and summation (Σ).
The normal-equation adder 77 performs the summation considering all the teacher data stored in the teacher-data memory 71 as subject pixels, thereby forming normal equations shown in FIG. (30) for each class.
Then, a tap-coefficient determiner solves the normal equations generated for each class by the normal-equation adder 77, thereby obtaining tap coefficients for each class, and supplies the tap coefficients to an address, associated with the class, of a coefficient memory 79. Thus, the coefficient memory 79 stores tap coefficients for each class, supplied from the tap-coefficient determiner 78.
The format of the intermediate data shown in
That is, in the format shown in
On the other hand, in the format of intermediate data shown in
More specifically, in the format shown in
In the format shown in
More specifically, in the pixel-value interpolation process shown in
Thus, in the intermediate data of the format shown in
On the other hand, in the case of the intermediate data of the format shown in
Next, an intermediate-data conversion process executed in step S3 shown in
First, in step S61, the intermediate-data converter 32 sets a virtual screen for the user's viewpoint Pc set in step S2 shown in
In this embodiment, for simplicity of description, in the image-data conversion process described with reference to
Furthermore, in the intermediate-data conversion process, a three-dimensional coordinate system for displaying an image on the display 6 (
The process then proceeds to step S62, in which the intermediate-data converter 32 selects a subject pixel Ps that has not yet been selected as a subject pixel from among pixels on the virtual screen set for the user's viewpoint Pc.
After the processing in step S62, the process proceeds to step S63, in which the intermediate-data converter 32 calculates a vector v with the subject pixel Ps as an initial point and the user's viewpoint Pc as a terminal point. The process then proceeds to step S64.
In the embodiment shown in
Furthermore, in the embodiment shown in
In
In step S64, the intermediate-data converter 32 calculates a plane α perpendicular to the vector v and passing through the origin as a predetermined point on the display coordinate system. The process then proceeds to step S65.
The plane α need not necessarily pass through the origin.
In step S65, the intermediate-data converter 32 calculates the latitude θ and the longitude φ of the vector v calculated in step S63, i.e., the latitude θ corresponding to an angle formed by the vector v and the xy plane and the longitude φ corresponding to an angle formed by the vector v and the xz plane.
The latitude θ and the longitude φ of the vector v are equivalent to the latitude θ and the longitude φ of the normal direction of the plane α calculated in step S64. Since a plane α passing through the origin as a predetermined point can be defined by the latitude θ and the longitude φ thereof, the plane α defined by the latitude θ and the longitude φ will hereinafter be denoted as a plane I(θ, φ) when appropriate, similarly to the case of the image-data conversion process.
In step S66, the intermediate-data converter 32 calculates a straight line Lp connecting the user's viewpoint Pc and the subject pixel Ps, as shown in
The coordinates (xα, yα) of the point Px on the plane α can be calculated similarly to the case of step S27 shown in
If the viewing direction from the user's viewpoint does not pass through the origin of the display coordinate system, the coordinates (xα, yα) of the point Px must be offset by the coordinates of the intersection of the straight line in the viewing angle and the plane α in the two-dimensional coordinate system on the plane α, similarly to the case of step S27 shown in
The process then proceeds to step S68, in which the intermediate-data converter 32 sets a pixel value of a pixel at the position of the point Px on the plane α as a pixel value of the subject pixel Ps on the virtual screen. More specifically, if the plane α is a plane I(θ, φ) defined by a latitude θ and a longitude φ, and if the coordinates of the point Px on the plane α is (xα, yα), the intermediate-data converter 32 reads a pixel value I(θ, φ) (xα, yα) from the intermediate database, and sets the pixel value I(θ, φ) (xα, yα) as a pixel value of the subject pixel Ps.
The process then proceeds to step S69, in which the intermediate-data converter 32 determines whether all the pixels on the virtual screen set for the user's viewpoint Pc have been considered as subject pixels. If it is determined that a pixel that has not yet been considered as a subject pixel exists, the process returns to step S62, and then the same process is repeated.
On the other hand, if it is determined in step S69 that all the pixels on the virtual screen have been considered as subject pixels, that is, if image data as viewed from the user's viewpoint has been formed on the virtual screen, the process is exited.
Presentation image data obtained in the manner described above is displayed on the display 6 in step S4 described earlier with reference to
Thus, the display 6 displays image data of an object as viewed from a user's viewpoint.
As described above, original image data is converted into presentation image data as viewed from a user's viewpoint, using light-ray information representing trajectories of light rays for the capture of the original image data and representing pixel values corresponding to the light rays. Thus, even a real image actually captured can be changed in accordance with the user's viewpoint. That is, when the user moves his/her viewpoint, the display 6 displays an image corresponding to an object as perceived by the vision of the user when the user is observing the object in the real world.
More specifically, for example, when the user has moved his/her viewpoint to the left or to the right as facing the display 6, the display 6 displays an image in which a left side surface or a right side surface of the object that has been displayed before the user moved his/her viewpoint is viewable. As another example, if the user has moved his/her viewpoint in a direction toward or away from the display 6, the display 6 displays an image in which an object that has been displayed before the user moved his/her viewpoint is larger or smaller.
Thus, the user is allowed to enjoy a sense that the object to be imaged actually existed there.
Furthermore, with the image processing apparatus 1 shown in
Furthermore, in the image processing apparatus 1 shown in
Intermediate data for another object may be generated independently so that images of the separate objects may be combined when generating presentation image data in the intermediate-data conversion process shown in
Furthermore, it is possible to carry out editing such as deleting a portion of the intermediate data or adding image data such as other intermediate data to a portion of the intermediate data before executing thereon the intermediate-data conversion process shown in
Images that can be processed by the image processing apparatus 1 shown in
In the case described above, a user's position is detected and a user's viewpoint is set (a user's viewpoint is assumed) at the position before the intermediate-data conversion process shown in
A virtual user's viewpoint can be set, for example, by sequentially moving over the circumference of a circle drawn on a predetermined plane and having a predetermined radius, centered at, for example, the origin of the display coordinate system. In this case, the display 6 displays an image as captured while panning around the object.
Alternatively, for example, a user's viewpoint can be set so as to move unidirectionally, for example, on a straight line passing through the origin of the display coordinate system. In that case, the display 6 displays an image as captured while coming closer to the object or going away from the object.
Furthermore, in the case described above, original image data of an object as image from a large number of viewpoints is obtained by moving a still object by a motion base system or a turntable system. However, in the image processing apparatus 1 shown in
In the embodiment shown in
Thus, in the embodiment shown in
In the embodiment shown in
In the image processing apparatus 1 shown in
More specifically, the original image data stored in the image database 2 is, for example, image data captured with a camera fixed on a train that is moving linearly at a constant velocity, that is, image data captured with the camera's viewpoint being moved in the traveling direction of the train. Thus, the original image data includes pixel values corresponding to light rays in respective directions of the longitudes of the Earth, as shown in
On the other hand, image data of an object as viewed from a viewpoint is composed of pixel values corresponding to light rays directed from the object to the viewpoint. Now, assuming that light rays go straight without being attenuated, presentation image data that is image data of an object as viewed from a viewpoint on a straight line that is parallel to the trajectory of travel of the train can be obtained by reconstructing image data composed of pixel values corresponding to light rays directed from the object to the viewpoint as shown in
In the image processing apparatus shown in
Since the original image data stored in the image database 2 herein is image data captured with the camera's viewpoint being moved in the traveling direction of the train, presentation image data obtained by the image processing apparatus shown in
Next, image processing by the image processing apparatus (computer) 1 shown in
First, in step S81, the image-data converter 31 reads original image data from in the image database 2, and converts the original image data into intermediate data. Furthermore, in step S81, the image-data converter 31 supplies the intermediate data to the intermediate database 3, where the intermediate data is stored. The process then proceeds to step S82.
In step S82, the image-data converter 31 supplies to the playback-frame manager 34 the number of frames Fnum of the original image data converted into intermediate data in step S81, whereby the playback-frame manager 34 obtains the number of frames Fnum.
Then, the process proceeds to step S83, in which the playback-frame manager 34 initializes a variable n representing a frame to be played back, for example, to 1. The playback-frame manager 34 then supplies the variable n to the intermediate-data converter 32 as frame information representing a frame to be processed. The process then proceeds to step S84.
In step S84, the sensor controller 33 detects a user's position from an output of the receiver 4 (
The process then proceeds to step S85, in which the intermediate-data converter 32 recognizes that the n-th frame is to be processed, based no the frame information supplied from the playback-frame manager 34. Furthermore, the intermediate-data converter 32 converts the intermediate data into presentation image data of the n-th frame that is being processed, based on the user's viewpoint supplied from the sensor controller 33. The process then proceeds to step S86.
In step S86, the intermediate-data converter 32 supplies the presentation image data of the n-th frame to the display 6, where the presentation image data is displayed. The process then proceeds to step S87.
In step S87, the playback-frame manager 34 determines whether the variable n is equal to the total number of frames Fnum of the original image data. If it is determined in step S87 that the variable n is not equal to the total number of frames Fnum, the process proceeds to step S88. In step S88, the CPU 12 (
On the other hand, if it is determined in step S87 that the variable n is equal to the total number of frames Fnum, or if it is determined in step S88 that the input unit 17 has been operated so as to exit the image processing, the process is exited.
If the image processing shown in
Next, processing executed by (the image-data converter 31 and the intermediate-data converter 32 constituting) the data converter 30 in the embodiment shown in
It is assumed that original image data stored in the image database 2 is captured, for example, by a camera fixed on a window of a train that is substantially moving linearly at a constant velocity, as shown in
In
That is, since the train is assumed herein to travel linearly on the plane, considering the plane as a plane on the equator of the Earth, the viewpoint of the camera fixed on the plane does not move in the latitudinal direction and only moves in the longitudinal direction. Thus, in original image data captured by such a camera, basically, of the latitude and longitude described earlier, it suffices to consider only longitude, and latitude can be neglected.
In
In this case, an object in the direction of an angle (declination angle) φ with respect to the baseline as viewed from the camera is V0 cos φ, where V0 denotes the velocity of an object on the baseline passing the optical center of the camera as viewed from the camera.
Thus, in image data captured by the camera, that is, in image data displayed on a virtual screen that is perpendicular to the optical axis of the camera, an object displayed on the right side moves faster than an object displayed on the left side.
In
That is, in this case, since the train is moving linearly at a constant velocity, the camera fixed on the train also moves linearly at a constant velocity. Thus, the camera captures image data of frames with the lens center thereof being moved at regular intervals in the traveling direction of the train.
In image data of frames captured by the camera, regarding a direction with a declination angle φ1, a pixel value corresponding to a light ray in the direction of the declination angle φ1 exists in each of the frames of the image data. Thus, by collecting pixel values corresponding to light rays in the direction of the declination angle φ1, intermediate data that is image data as viewed from an infinite distance in the direction of the declination angle φ1 can be generated.
More specifically, intermediate data that is image data as viewed from an infinite distance in the direction of the declination angle φ1 can be generated by extracting an array of pixels on a column in the direction of the declination angle φ1 (pixels arrayed in the perpendicular direction in the direction of the declination angle φ1) from image data of the frames captured by the camera, and arranging the pixel values of the pixels of one column extracted from the frames in the order of frames sequentially from right to left.
When image data (intermediate data) as viewed from an infinite distance in the direction of the declination angle φ1 by extracting and arranging pixels on the column in the direction of the declination angle φ1 from the frames of the image data captured by the camera, in some cases, pixels are missing for an interval corresponding to a moving distance of the camera during one frame.
More specifically, if a moving distance that the camera moves during one frame exceeds the horizontal length of one pixel, a gap exceeding one pixel occurs between a pixel on a column in the direction of the declination angle φ1 in a frame of image data and a pixel in the direction of the declination angle φ1 in the next frame of image data. Image data that serves as intermediate data also includes such gaps.
Thus, in order to prevent occurrence of such gaps, pixels can be extracted from the frames of the image data captured by the camera with a certain width in the row direction (horizontal direction).
That is, from the frames of image data captured by the camera, for example, pixels on a plurality of columns in directions in a range of a small angle ±δφ with respect to the declination angle φ1 may be extracted, as shown in
The length in the column direction (vertical direction) of the intermediate data shown in
In the image-data converter 31 of the data converter shown in
That is, for example, if image data captured by the camera fixed on the train is such that the scenery including trees moves from left to right on the screen, for example, intermediate data shown in
Next, an image-data conversion process executed by the image-data converter 31 shown in
First, in step S101, the image-data converter 31 sets an initial value, e.g., one, in the variable Fnum for counting the number of frames of original image data stored in the image database 2. The process then proceeds to step S102.
In step S102, a subject imaging point Pc is selected from camera's viewpoints (imaging points) from which the original image data stored in the image database 2 was captured.
More specifically, in the embodiment shown in
In the embodiment shown in
The process then proceeds to step S103. In step S103, the image-data converter 31 sets a virtual screen for the subject imaging point Pc, and selects, as a subject column, a pixel column that has not yet been selected as a subject column from among pixel columns in the vertical direction on the virtual screen.
More specifically, the image-data converter 31 sets a virtual screen for the subject imaging point Pc, the virtual screen being a rectangular plane that is distant by a predetermined distance L from the subject imaging point Pc in the direction of the optical axis of the camera and that is perpendicular to the optical axis of the camera fixed on the train. Then, the image-data converter 31 selects, as a subject column, a pixel column that has not yet been selected as a subject column from the pixels on the virtual screen, for example, in order of left to right.
In
When a subject column has been selected in step S103, the process proceeds to step S104, in which the image-data converter 31 selects, for example, an uppermost pixel of the pixels constituting the subject column, as a subject pixel Ps.
The subject pixel Ps is not limited to the uppermost pixel of the pixels constituting the subject column, and a pixel on an arbitrary row may be selected as a subject pixel.
When the subject pixel Ps has been selected in step S104, the process proceeds to step S105, in which the image-data converter 31 calculates a vector v with the subject imaging point Pc as an initial point and the subject pixel Ps as a terminal point. The process then proceeds to step S106.
In step S106, the image-data converter 31 calculates a plane α that is perpendicular to the vector v calculated in step S105 and that passes a predetermined point Pf on the imaging coordinate system, as shown in
In step S107, the image-data converter 31 calculates the declination angle φ of the vector v calculated in step S105 with respect to the baseline. The process then proceeds to step S108. That is, in principle, the latitude and the longitude of the vector v must be calculated, similarly to the embodiment shown in
The declination angle φ of the vector v can also be considered as the declination angle φ of a normal line of the plane α calculated in step S106. The direction of the normal line of the plane α is defined by latitude and longitude; however, latitude can be neglected herein as described earlier (latitude may be fixed to an arbitrary value). Thus, since the plane α passing the predetermined point Pf can be identified by a declination angle φ corresponding to the longitude of a normal line thereof, the plane α defined by the declination angle φ will hereinafter referred to as I(φ) when appropriate.
As for the sign of the declination angle φ, the counterclockwise direction in the plane where the train travels (the xy plane in the embodiment shown in
In step S108, the image-data converter 31 calculates a straight line Lp connecting the subject imaging point Pc and the subject pixel Ps, as shown in
In step S109, on the plane I(φ), a two-dimensional coordinate system is defined such that the predetermined point Pf that the plane I(φ) always passes is the origin and axes obtained by mapping the x and y axes of the imaging coordinate system onto the plane I(φ) are the x and y axes, and the coordinates (xα, yα) of the point Px in the two-dimensional coordinate system is calculated. The two-dimensional coordinate system defined on the plane I(φ) is not limited to the two-dimensional coordinate system described above.
The process then proceeds to step S110, the image-data converter 31 projects the subject column of the Fnum-th frame of the original image data on the virtual screen onto the plane I(φ).
Now, the pixel value of the pixel at the position of the point Px on the plane I(φ) will be denoted as I(φ) (xα, yα) by the plane I(φ) and (xα, yα) representing the coordinates of the point Px on the plane I(φ), and it is assumed that the subject column is composed of N pixels. In this case, the image-data converter 31 sets the pixel value of the pixel on the first row in the subject pixel of the Fnum-th frame of original image data on the virtual screen in the pixel value I(φ) (xα, yα) on the plane I(φ), sets the pixel value of the pixel on the second row in the subject column in the pixel value I(φ) (xα, yα+1) on the plane I(φ), . . . , and sets the pixel value of the pixel on the N-th row in the subject column in the pixel value I(φ) (xα, yα+(N−1)) on the plane I(φ).
The process then proceeds to step S111, in which the image-data converter 31 determines whether all the pixel columns of the original image data on the virtual screen set for the subject imaging point Pc have been considered as subject columns. If it is determined that a pixel column that has not yet been considered as a subject column exists, the process returns to step S103, and then the same process is repeated.
On the other hand, if it is determined in step S111 that all the pixel columns on the virtual screen have been considered as subject columns, the process proceeds to step S112. In step S112, the image-data converter 31 determines whether original image data of the frame next to the Fnum-th frame exists with reference to the image database 2. If it is determined in step S112 that original image data of the frame next to the Fnum-th frame exists, the process proceeds to step S113, in which the image-data converter 31 increments the variable Fnum by one. The process then returns to step S102, and then the same process is repeated.
On the other hand, if it is determined in step S112 that original image data of the frame next to the Fnum-th frame does not exist, that is, when all the frames of image data stored in the image database 2 have been orthogonally projected onto planes I(φ) of respective declination angles φ to obtain intermediate data, the process is exited.
The intermediate data obtained by the image-data conversion process described above is supplied from the image-data converter 31 to the intermediate database 3, where the intermediate data is stored.
The final number of frames Fnum of original image data obtained by the image-data conversion process shown in
The intermediate data generated by the image-data conversion process shown in
That is, the image-data conversion process shown in
In the embodiment shown in
In each cell of the declination-angle table shown in
In
As described earlier, when intermediate data that is image data as viewed from an infinite distance in the direction of a declination angle φ is generated by projecting pixels on a column in the direction of the declination angle φ onto the plane I(φ) from the frames of original image data captured by the camera fixed on the train, in the image data in the form of intermediate data, in some cases, pixels do not exist for an interval corresponding to a distance that the camera moves during one frame, that is, pixel values are missing.
Thus, in the image processing apparatus 1 shown in
The pixel-value interpolation process executed by the image processing apparatus 1 shown in
In the pixel-value interpolation process shown in
The process then proceeds to step S122, in which the image-data converter 31 determines whether a pixel value has been set in intermediate data I(φ) (xα, y1), similarly to step S42 shown in
In the example described above, the subject for which whether a pixel value is set is determined (hereinafter referred to as a pixel-value determining subject) is intermediate data I(φ) (xα, y1), i.e., a pixel having coordinates (xα, y1) on the plane I(φ), the pixel-value determining subject may be any pixel having a y coordinate yα in a range of the minimum value y1 to the maximum value y2.
That is, in intermediate data obtained by the image-data conversion process described with reference to
If it is determined in step S122 that a pixel value has been set in the intermediate data I(φ) (xα, y1), that is, if the pixel value is not missing, steps S123 and S124 are skipped, and the process proceeds to step S125.
If it is determined in step S122 that a pixel value has not been set in the intermediate data I(φ) (xα, y1), that is, if the pixel value is missing, the process proceeds to step S123. In step S123, the image-data converter 31 searches for a point with a pixel value set from among points (xα, y1) on the plane I(φ′) defined by a declination angle θ′ in a range of (φ−Δφ)<φ<(φ+Δφ).
Similarly to the case shown in
The process then proceeds to step S124. In step S124, the image-data converter 31 sets the pixel values I(φ′) (xα, y1) to I(φ′) (xα, y2) of the column of the intermediate data I(φ′) (xα, y1) with pixel values set, found in step S123, in the pixel values I(φ) (xα, y1) to (xα, y2) of the column of the intermediate data I(φ) (xα, y1). The process then proceeds to step S125. If the number of pixels in the vertical direction of a frame of original image data is N as described earlier, y2 is represented by y1+(N−1).
If a plurality of points with pixel values set is found in step S123 from among the points (xα, y1) on the plane I(φ′) defined by a declination angle φ′ in a range of (φ−Δφ)<φ<(φ+Δφ), in step S124, the image-data converter 31 selects therefrom, for example, a point with a smallest absolute value of difference in declination angle |φ−φ′|, and sets pixel values I(φ′) (xα, y1) to I(φ′) (xα, y2) on the column of the I(φ′) (xα, y1) selected to pixel values I(φ) (xα, y1) to I(φ) (xα, y2), respectively.
If a pixel with a pixel value set is not found in step S123 from among the points (xα, y1) on the plane I(φ′) defined by a declination angle φ′ in a range of (φ−Δφ)<φ<(φ+Δφ), in step S124, the image data converter 31 searches for a pixel that is closest to the coordinates (xα, y1) from pixels with pixel values set on the plane I(θ, φ), and sets the pixel values of pixels on the column of the pixel in pixel values I(φ) (xα, y1) to I(φ) (xα, y2), respectively.
In the pixel-value interpolation process shown in
In step S125, the image-data converter 31 determines whether the variable xα representing an x coordinate on the plane I(θ, φ) is equal to the maximum value x2 thereof. If it is determined in step S125 that the x coordinate xα is not equal to the maximum value x2, the process proceeds to step S126, in which the image-data converter 31 increments the x coordinate xα by one. The process then returns to step S122, and then the same process is repeated.
On the other hand, if it is determined in step S125 that the x coordinate xα is equal to the maximum value x2, the process proceeds to step S127, in which the image-data converter 31 resets the x coordinate xα to the minimum value x1 thereof. The process then proceeds to step S128.
In step S128, the image-data converter 31 determines whether the variable φ representing a declination angle is equal to the maximum value φmax thereof. If it is determined in step S128 that the declination angle φ is not equal to the maximum value φmax, the process proceeds to step S129, in which the image-data converter 31 increments the declination angle φ by one degree. The process then returns to step S122, and the same process is repeated.
On the other hand, if it is determined in step S128 that the declination angle φ is equal to the maximum value φmax, the process is exited.
In the pixel-value interpolation process shown in
According to the pixel-value interpolation process shown in
On intermediate data obtained by the pixel-value interpolation process shown in
The format of intermediate data may be the same format in the case of
Next, an intermediate-data conversion process executed in step S85 shown in
In the intermediate-data conversion process shown in
First, in step S141, the intermediate-data converter 32 sets a user's viewpoint Pc′ for an imaging point Pc in an n-th frame in the display coordinate system.
That is, in the intermediate-data conversion process shown in
More specifically, the intermediate-data converter 32 receives a user's viewpoint in the real world from the sensor controller 33. The intermediate-data converter 32 calculates movement information representing movement of the user's viewpoint from the sensor controller 33 with respect to a predetermined point in the real world as a reference point for the user's viewpoint. The reference point for the user's viewpoint may be a typical position where the user views an image displayed on the display 6, for example, an arbitrary point in front of the display 6.
Upon calculating the movement information, the intermediate-data converter 32 sets, as a user's viewpoint Pc′ for the imaging point Pc, a point shifted by the movement information from the imaging point Pc in the n-th frame in the display coordinate system, as shown in
In the intermediate-data conversion process shown in
The intermediate-data converter 32 sets a user's viewpoint Pc′ for the imaging point Pc in the display coordinate system in the manner described above. The process then proceeds to step S142, in which the intermediate-data converter 32 calculates an intersection Pk of the optical axis of the camera at the imaging point Pc and an object displayed in the n-th frame, as shown in
For simplicity of description, it is assumed herein that the distance D between the object and the traveling trajectory of the train on which the camera is fixed is constant and recognized in advance in the intermediate-data converter 32. It is also assumed that the declination angle φ0 of the optical axis of the camera at the imaging point Pc is recognized in advance in the intermediate-data converter 32. In this case, the intersection Pk of the optical axis of the camera at the imaging point Pc and an object displayed in the n-th frame can be calculated from the imaging point Pc, the distance D, and the declination angle φ0 of the optical axis of the camera at the imaging point Pc.
The process then proceeds to step S143, in which the intermediate-data converter 32 calculates a vector v′ with the user's viewpoint Pc′ as an initial point and the intersection Pk as a terminal point. The process then proceeds to step S144, in which the intermediate-data converter 32 sets a virtual screen for the user's viewpoint Pc′ with the direction of the vector v′ as a viewing angle, the virtual screen being perpendicular to the vector v′ and distant by a distance L from the user's viewpoint Pc′. The process then proceeds to step S145. In step S145, the intermediate-data converter 32 selects, as a subject column, a pixel column that has not yet been selected as a subject column from among pixel columns in the vertical direction on the virtual screen set for the user's viewpoint Pc′.
When a subject column has been selected in step S145, the process proceeds to step S146, in which the intermediate-data converter 32 selects, for example, similarly to the case of step S104 in
The subject pixel Ps is not limited to an uppermost pixel among the pixels constituting the subject column, and a pixel on an arbitrary row can be selected as a subject pixel.
When a subject column has been selected in step S146, the process proceeds to step S147, in which the intermediate-data converter 32 calculates a vector v with the user's viewpoint Pc′ as an initial point and the subject pixel Ps as a terminal point, as shown in
In step S148, the intermediate-data converter 32 calculates a declination angle φ of the vector v calculated in step S147 with respect to the baseline, i.e., a declination angle φ of the normal line of the plane α calculated in step S148 with respect to the baseline. The process then proceeds to step S150.
In step S150, the intermediate-data converter 32 calculates a straight line Lp connecting the user's viewpoint Pc′ and the subject pixel Ps, as shown in
The process then proceeds to step S152, in which the intermediate-data converter 32 sets pixel values on the column of the point Px on the plane I(φ) as respective pixel values of the pixels of the subject column on the virtual screen.
More specifically, assuming that the subject column on the virtual screen is composed of N pixels, the intermediate-data converter 32 the sets a pixel value I(θ, φ) (xα, yα) on the plane I(φ) as the pixel value of the pixel on the first row of the subject pixel on the virtual screen, a pixel value I(θ, φ) (xα, yα+1) on the plane I(φ) as the pixel value of the pixel on the second row of the subject pixel, . . . and a pixel value I(θ, φ) (xα, yα+(N−1)) on the plane I(φ) as the pixel value of the pixel on the N-th row of the subject pixel.
The process then proceeds to step S153, in which the intermediate-data converter 32 determines whether all the pixel columns (pixel arrays in the vertical direction) on the virtual screen set for the user's viewpoint Pc′ have been considered as subject columns. If it is determined that a pixel column that has not yet been considered as a subject column exists, the process returns to step S145, and then the same process is repeated.
On the other hand, if it is determined in step S153 that all the pixel columns on the virtual screen have been considered as subject pixels, that is, when image data in the n-th frame as viewed from the user's viewpoint (presentation image data) has been formed on the virtual screen, the process is exited.
The presentation image data in the n-th frame, obtained in the manner described above, is displayed on the display 6 in step S86 described earlier with reference to
Thus, the display 6 displays image data of an object as viewed from a user's viewpoint.
As described above, with the image processing apparatus 1 shown in
In the image processing apparatus 1 shown in
In order to convert original image data into presentation image data as viewed from a user's viewpoint, considering the image-data conversion process described with reference to
In this embodiment, however, it is assumed that the train, and the camera fixed on the train, moves linearly at a constant velocity, regarding imaging points Pc of respective frames, if an imaging point Pc for a frame is known, an imaging point for another frame can be calculated from the velocity of the movement of the camera at a substantially constant velocity (moving velocity of the camera).
The above-described imaging conditions that are at least needed for converting original image data into presentation image data as viewed from a user's viewpoint will be referred to as minimum imaging conditions when appropriate.
The minimum imaging conditions can be obtained by a sensor or the like when the original image data is captured.
If the minimum imaging conditions are known in advance, in the image processing apparatus shown in
On the other hand, if the minimum imaging conditions are not known, in order to convert original image data into presentation image data as viewed from a user's viewpoint, first, the minimum imaging conditions must be obtained.
Thus, in the computer 1 shown in
In the embodiment shown in
The imaging-condition calculator 91 reads original image data captured by a camera fixed on a train moving linearly at a constant velocity from the image database 2, calculates imaging conditions including a minimum imaging condition from the original image data, and supplies the imaging conditions to the image database 2, where the imaging conditions are stored.
More specifically, the imaging-condition calculator 91 calculates a moving distance of an object displayed in original image data on the virtual screen of the camera fixed on the train moving linearly at a constant velocity, and calculates imaging conditions including a minimum imaging condition using a distance from the camera's viewpoint (imaging point) to the virtual screen (viewpoint/virtual screen distance) and the moving distance of the object on the virtual screen.
Next, a method of calculating imaging conditions by the imaging-condition calculator 91 will be described with reference to
In
In this case, the declination angle φ from the camera's viewpoint in the direction of the target object can be expressed by the following equation using the distances D and h:
The moving distance Δx of the target object on the virtual screen can be expressed, for example, by the following equation:
Δx=L(tan(φ+−φ0)−tan(φ−−φ0) (32)
In equation (32), φ+ and φ− are given, for example, by the following equations:
Assigning equations (33) into equation (32) yields the following equation:
A function f′(t) (derivative) of the function f(t) for the variable t differentiated with respect to the variable t can be expressed by the following equation:
Rearranging equation (35) yields the following equation:
Δtf′(t)=f(t+Δt)−f(t) (36)
Now, let a function f(h/D) of a variable h/D be defined, for example, as in the following equation:
Equation (34) can be expressed, using the function f(h/D) in equation (37) by the following equation:
Equation (38) can be rearranged, using the relationship of equation (36), as in equation (39):
Differentiating a function g2(g1(t)) having a function g1(t) of the variable t as a parameter with respect to the variable t yields the following equation:
Derivatives of a function tan(t) and a function tan−1(t) can be expressed by equations (41) and (42), respectively:
From equations (40) to (42), the derivative f′(h/D) of the function f(h/D) in equation (37) can be expressed by the following equation:
From equation (43), equation (39) can be expressed as equation (44):
In equation (44), unknown variables are Δd, D, h, and φ0. In equation (44), Δx denotes a moving distance of a target object displayed on the virtual screen, and can be calculated from pixels showing the target object on the virtual screen. Furthermore, in equation (44), L denotes the distance from the camera's viewpoint to the virtual screen, which can be set to an arbitrary value.
Thus, in principle, by calculating moving distances of four pixels on the virtual screen, the four unknown variables Δd, D, h, and φ0 in equation (44) can be estimated using the moving distances and the distance L from the camera's viewpoint to the virtual screen.
According to the method described with reference to
The imaging-condition calculator 91 shown in
Now, a process executed by the imaging-condition calculator 91 shown in
First, in step S161, the imaging-condition calculator 91 selects four or more frames that are to be considered in the imaging-condition calculating process as processing-subject frames, from among frames stored in the image database 2. The process then proceeds to step S162.
In step S162, the imaging-condition calculator 91 set a predetermined value as the distance L from the imaging point from which original image was captured to the screen. The process then proceeds to step S163.
In step S163, the imaging-condition calculator 91 selects pixels at the same position from the respective frames of the four or more frames of original image data selected as processing-subject frames in step S161, as calculation-subject pixels used for calculating imaging conditions.
The pixels at the same position of the respective processing-subject frames are herein selected as calculation-subject pixels in order that the distance h between the camera and the target object along the moving direction of the camera, shown in
The process then proceeds to step S164, in which the imaging-condition calculator 91 selects, as a subject pixel, a pixel that has not yet been considered as a subject pixel from among the calculation-subject pixels. The process then proceeds to step S165.
In step S165, the imaging-condition calculator 91 detects a motion vector of the subject pixel. The process then proceeds to step S166, in which the imaging-condition calculator 91 calculates a moving distance Δx of the subject pixel from the motion vector of the subject pixel. The process then proceeds to step S167.
In step S167, the imaging-condition calculator 91 determines whether all the calculation-subject pixels have been considered as subject pixels and moving distances Δx have been calculated therefore. If it is determined that a calculation-subject pixel that has not yet been considered as a subject pixel exists, the process returns to step S164, and the same process is repeated.
On the other hand, if it is determined in step S167 that all calculation-subject pixels have been considered as subject pixels, the process proceeds to step S168. In step S168, the imaging-condition calculator 91 calculates imaging conditions Δd, D, h, and φ0 from equation (44), using the moving distances Δx calculated respectively for the four or more pixels selected as calculation-subject pixels and the distance L from the imaging point from which original image data was captured to the screen, and stores the imaging conditions in the image database 2. The process is then exited.
In step S167, Δd, D, h, and φ0 that satisfy equation (44) for the moving directions Δx calculated respectively for the four or more calculation-subject pixels and the distance L from the imaging point from which original image data was captured to the screen are calculated. Δd, D, h, and φ0 are calculated, for example, by sequentially changing the respective values and testing (checking) whether equation (44) is satisfied.
As described above, the moving distance Δx of an object displayed in original image data on the virtual screen of the camera, captured with the camera being moved, is calculated, and imaging conditions Δd, D, h, and φ0 are calculated using the distance L from the viewpoint from which original image data was captured by the camera to the virtual screen and the moving distance Δ. Thus, imaging conditions can be readily calculated from the original image data captured with the camera being moved.
Furthermore, using the imaging conditions, original image data can be converted into presentation image data as viewed from a user's viewpoint.
In this embodiment, the various processes described above are executed by the computer 1 executing programs. Alternatively, however, the various processes described above may be executed by special hardware.
Regarding acquisition of image data, data corresponding to intermediate data can be obtained by capturing an omnidirectional image of an object using a camera having a telecentric lens. In that case, work of complex conversion is not needed, so that intermediate data can be readily obtained.
As described above, according to the present invention, for example, even a real image actually captured can be readily changed in accordance with a user's viewpoint.
Number | Date | Country | Kind |
---|---|---|---|
2002-161838 | Jun 2002 | JP | national |
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/JP03/06982 | 6/3/2003 | WO | 00 | 9/7/2004 |
Publishing Document | Publishing Date | Country | Kind |
---|---|---|---|
WO03/103278 | 12/11/2003 | WO | A |
Number | Name | Date | Kind |
---|---|---|---|
5185667 | Zimmermann | Feb 1993 | A |
5563650 | Poelstra | Oct 1996 | A |
5657082 | Harada et al. | Aug 1997 | A |
5703961 | Rogina et al. | Dec 1997 | A |
5710875 | Harashima et al. | Jan 1998 | A |
5793379 | Lapidous | Aug 1998 | A |
5963664 | Kumar et al. | Oct 1999 | A |
5991464 | Hsu et al. | Nov 1999 | A |
6009190 | Szeliski et al. | Dec 1999 | A |
6023523 | Cohen et al. | Feb 2000 | A |
6055664 | Ishii et al. | Apr 2000 | A |
6198770 | Kondo | Mar 2001 | B1 |
6263100 | Oshino et al. | Jul 2001 | B1 |
6327325 | Hsieh | Dec 2001 | B1 |
6356397 | Nalwa | Mar 2002 | B1 |
6445807 | Katayama et al. | Sep 2002 | B1 |
6532036 | Peleg et al. | Mar 2003 | B1 |
6683977 | Albrecht et al. | Jan 2004 | B1 |
6750860 | Shum et al. | Jun 2004 | B1 |
6798409 | Thomas et al. | Sep 2004 | B2 |
6959120 | Zhang et al. | Oct 2005 | B1 |
20010015751 | Geng | Aug 2001 | A1 |
20010043737 | Rogina et al. | Nov 2001 | A1 |
20030071891 | Geng | Apr 2003 | A1 |
20040247173 | Nielsen et al. | Dec 2004 | A1 |
Number | Date | Country |
---|---|---|
1 117 256 | Jul 2001 | EP |
7 129792 | May 1995 | JP |
8 96165 | Apr 1996 | JP |
9 49714 | Feb 1997 | JP |
9 187038 | Jul 1997 | JP |
2000 285259 | Oct 2000 | JP |
WO 0072270 | Nov 2000 | WO |
WO 0105154 | Jan 2001 | WO |
Number | Date | Country | |
---|---|---|---|
20050012745 A1 | Jan 2005 | US |