Patent Description:
There is known a virtual viewpoint image generation system that generates a virtual viewpoint image, which is an image viewed from a virtual viewpoint designated by a user, based on images captured by an image capturing system including a plurality of cameras. <CIT> discusses a system in which images captured by a plurality of cameras are transmitted to an image computing server (an image processing apparatus) and then the image processing apparatus extracts, from the captured images, a region with a large change as a foreground image, and a region with a small change as a background image.

Recently, virtual reality (VR) using, for example, a head mounted display (HMD) has enabled the user to enjoy a viewing experience as if the user is in a virtual space created by three-dimensional computer graphics (3DCG). In the VR, for example, concerts have been held by virtual artists using avatars.

In such a concert, it has been demanded that a concert of a real artist is reproduced in a virtual 3D space, using the virtual viewpoint image described above. In a case where a concert of a real artist is reproduced in a virtual 3D space using the virtual viewpoint image, for example, tracking the position of the artist is necessary in order to synthesize a sound source corresponding to the position of the artist. However, particularly in the case of a plurality of artists, tracking the position of each of the artists may be difficult. <NPL>, discloses an image processing system which estimates the 3D pose of a human body which is recorded by multiple static cameras. <NPL> discloses a markerless algorithm for performing Shape-from-Silhouette across time.

According to a first aspect of the present invention, there is provided an image processing system as specified in claims <NUM> to <NUM>. According to a second aspect of the present invention, there is provided a method for controlling an image processing system as specified in claim <NUM>. According to a third aspect of the present invention, there is provided a program for causing a computer to perform a method for controlling an image processing system as specified in claim <NUM>.

<FIG> illustrates an example of a configuration of an image processing system that generates a virtual viewpoint image according to a first embodiment of the present invention. For example, the image processing system includes a plurality of image capturing units <NUM>, a synchronization unit <NUM>, a three-dimensional shape estimation unit <NUM>, an accumulation unit <NUM>, a viewpoint designation unit <NUM>, an image generation unit <NUM>, a display unit <NUM>, a sound collection unit <NUM>, a sound signal generation unit <NUM>, a sound output unit <NUM>, a shape extraction unit <NUM>, a tracking unit <NUM>, an object position calculation unit <NUM>, and an identifier setting unit <NUM>. The image processing system may include one image processing apparatus or a plurality of image processing apparatuses. In the following description, a case will be described where the image processing system includes one image processing apparatus.

Operations of components of an image processing apparatus which generates a virtual viewpoint image and to which the image processing system according to the present embodiment is applied will be schematically described. First, the plurality of image capturing units <NUM> captures images in synchronization with each other based on a synchronization signal from the synchronization unit <NUM>. The image capturing units <NUM> are video cameras that capture images as video data comprising a plurality of frames. The image capturing units <NUM> output the captured images to the three-dimensional shape estimation unit <NUM>. The image capturing units <NUM> are arranged around an image capturing region including an object in order to enable capturing the images of the object from a plurality of directions. The three-dimensional shape estimation unit <NUM> extracts, for example, a silhouette of the object using the input captured images viewed from a plurality of viewpoints, and generates a three-dimensional shape of the object using a volume intersection method or the like. The three-dimensional shape estimation unit <NUM> outputs the generated three-dimensional shape of the object and the captured images to the accumulation unit <NUM>. In the present embodiment, the object is a three-dimensional shape generation target, and examples of the object include a person and an article used by a person.

The sound collection unit <NUM> collects sounds at a plurality of positions in the image capturing region or a sound from each object, and outputs data of the collected sounds to the accumulation unit <NUM>.

The accumulation unit <NUM> stores and accumulates the following data group as data (material data) used to generate a virtual viewpoint image. More specifically, the data used to generate a virtual viewpoint image includes the captured images and the three-dimensional shape of the object that are input from the three-dimensional shape estimation unit <NUM>. The data used to generate a virtual viewpoint image also includes camera parameters, such as the position, orientation and optical characteristics of each of the image capturing units <NUM>, and the sound data obtained by the sound collection unit <NUM>. In addition, a background model and a background texture image are stored (recorded) in advance in the accumulation unit <NUM>, as data used to generate the background of the virtual viewpoint image.

The viewpoint designation unit <NUM> includes a viewpoint operation unit that is a physical user interface, such as a joy stick or a jog dial (not illustrated), and a display unit for displaying the virtual viewpoint image.

The virtual viewpoint of the virtual viewpoint image displayed on the display unit can be changed by the viewpoint operation unit.

In response to the change of the virtual viewpoint via the viewpoint operation unit, the virtual viewpoint image is generated as appropriate by the image generation unit <NUM> (described below) and displayed on the display unit. The viewpoint designation unit <NUM> may use the display unit <NUM> (described below) as the display unit, or may include the display unit separately. The viewpoint designation unit <NUM> generates virtual viewpoint information based on the input from the viewpoint operation unit, and outputs the generated virtual viewpoint information to the image generation unit <NUM>. The virtual viewpoint information includes information corresponding to external camera parameters, such as the position and orientation of the virtual viewpoint, information corresponding to internal camera parameters, such as a focal length and an angle of view, and time information designating an image capturing time of the image to be reproduced.

The image generation unit <NUM> obtains the material data corresponding to the designated image capturing time from the accumulation unit <NUM>, based on the time information included in the input virtual viewpoint information. The image generation unit <NUM> generates the virtual viewpoint image based on the set virtual viewpoint, using the captured images and the three-dimensional shape of the object included in the obtained material data, and outputs the generated virtual viewpoint image to the display unit <NUM>.

The display unit <NUM> displays the image input from the image generation unit <NUM>. The display unit <NUM> is, for example, a display or a head-mounted display (HMD).

The sound signal generation unit <NUM> obtains the sound data corresponding to the designated image capturing time from the accumulation unit <NUM>, based on the time information included in the input virtual viewpoint information. The sound signal generation unit <NUM> arranges, on a three-dimensional space, the obtained sound data as a virtual sound source. The sound signal generation unit <NUM> generates a sound signal based on the distance in position between the virtual sound source and the virtual viewpoint and the direction of the virtual viewpoint, and outputs the generated sound signal to the sound output unit <NUM>.

The sound output unit <NUM> includes a speaker, a headphone, or the like, and performs sound output (reproduction) based on the input sound signal.

A method for tracking an object position according to the present embodiment will be described.

First, the three-dimensional shape estimation unit <NUM> generates the three-dimensional shape of each object, and outputs the generated three-dimensional shape to the accumulation unit <NUM> and also to the shape extraction unit <NUM>.

The shape extraction unit <NUM> clips, from the three-dimensional shape of each object illustrated in <FIG>, a lower part of the three-dimensional shape of each object as illustrated in <FIG>. In the present embodiment, the shape extraction unit <NUM> clips a part of the three-dimensional shape of each object corresponding to a predetermined height (e.g., <NUM>) from a bottom surface of a circumscribed cuboid of the three-dimensional shape. For example, as illustrated in <FIG>, in a case where one object is standing on a floor surface, and the other object is, for example, jumping and is apart from the floor surface, parts illustrated in <FIG> are clipped from the three-dimensional shapes of the objects. In other words, from the three-dimensional shape of each object, a part corresponding to the predetermined height from the object's feet is clipped.

Next, as illustrated in <FIG>, the shape extraction unit <NUM> generates a two-dimensional image by performing plane projection of the clipped parts of the three-dimensional shapes seen from directly above the objects. In the present embodiment, the shape extraction unit <NUM> performs parallel projection of the clipped parts of the three-dimensional shapes on a two-dimensional plane corresponding to the feet (the floor surface). In the present embodiment, the image generated by the plane projection is a binary image including a white portion indicating the clipped parts of the three-dimensional shapes, and a black portion indicating the other area. The shape extraction unit <NUM> divides the two-dimensional image into independent regions, and determines circumscribed rectangles <NUM> to <NUM> as illustrated in <FIG>. The shape extraction unit <NUM> outputs information about vertices of the circumscribed rectangles <NUM> to <NUM>, as extracted three-dimensional shapes (or extracted shapes). At this time, the shape extraction unit <NUM> converts the information about the vertices of the circumscribed rectangles <NUM> to <NUM> into the same coordinate system and unit as those of the three-dimensional space of the image capturing region, and outputs the resulting information. The shape extraction unit <NUM> determines the independent shapes using a method, such as a continuous component analysis on the two-dimensional image generated by the projection. By using such a method, the shape extraction unit <NUM> can divide the three-dimensional shapes into independent regions.

The identifier setting unit <NUM> assigns an identifier to each of the extracted shapes output from the shape extraction unit <NUM>. More specifically, the identifier setting unit <NUM> calculates distances between the extracted shapes, and assigns an identifier to each of the extracted shapes based on the distances therebetween. For example, as illustrated in <FIG>, the identifier setting unit <NUM> assigns the same identifier to the extracted shapes located at a distance (indicated by each solid line arrow) smaller than a predetermined distance, and assigns different identifiers to the extracted shapes located at the predetermined distance or larger (indicated by a broken line arrow). A threshold for the predetermined distance used as a determination criterion is desirably a distance corresponding to the width between the feet of a standing object. In the present embodiment, a description will be given of a case where the threshold for the predetermined distance is set to <NUM>.

The identifier setting unit <NUM> displays the assigned identifiers on a display unit of the identifier setting unit <NUM> by using a graphical user interface (GUI) as illustrated in <FIG>. The user operates the image processing system while watching the GUI. More specifically, the identifier setting unit <NUM> displays the current assignment state (the initial assignment state) of the identifiers on the GUI in a manner distinguishing the identifiers from each other in at least one of text and color. In <FIG>, the identifier setting unit <NUM> displays the identifiers distinguished from each other in both text and color. The user views the GUI to check whether the initial assignment state of the identifiers is a desired assignment state. In a case where the initial assignment state of the identifiers is not a desired assignment state, the user instructs each object to change the standing position or close the feet, and repeats this operation until the desired assignment state is obtained. Alternatively, the user operates the image processing system via the GUI, and provides a change instruction so as to obtain the desired assignment state. In a case where the desired assignment state is obtained, the user presses, for example, a determination button (an initial identifier determination button) on the GUI illustrated in <FIG>. In response to this operation, the identifier setting unit <NUM> determines the initial identifiers. The identifier setting unit <NUM> then outputs the identifiers assigned to the respective extracted shapes to the tracking unit <NUM>.

The tracking unit <NUM> assigns the initial identifiers to the respective extracted shapes when the identifiers are input from the identifier setting unit <NUM>. The tracking unit <NUM> then tracks the extracted shapes with the identifiers assigned thereto. The identifiers to be assigned to the extracted shapes in the tracking are not the identifiers determined by the identifier setting unit <NUM>, but the identifiers determined based on results of tracking the positions of the extracted shapes by the tracking unit <NUM>. In the tracking (the tracking analysis) of the extracted shapes, the tracking unit <NUM> tracks the extracted shapes based on positions of the extracted shapes at a time immediately preceding the image capturing time of the extracted shapes, the identifiers of the extracted shapes, and object position information input from the object position calculation unit <NUM> (described below). Tracking processing by the tracking unit <NUM> will be specifically described below. The tracking unit <NUM> assigns an identifier to each extracted shape at each time based on the tracking analysis results, and outputs each extracted shape to the object position calculation unit <NUM>.

The object position calculation unit <NUM> calculates a representative position for each extracted shape with the identifier assigned thereto input from the tracking unit <NUM>. For example, as illustrated in <FIG>, the object position calculation unit <NUM> calculates a position indicating each extracted shape group with the same identifier assigned thereto, like representative positions <NUM> and <NUM>. In the present embodiment, the representative position is the center position of each extracted shape group.

Even if an object is standing still, the representative position may fluctuate at each time because the representative position is affected by shape estimation errors or fluctuations of the boundary portion occurring when the shape is clipped by the shape extraction unit <NUM>. For this reason, in the present embodiment, the object position calculation unit <NUM> performs processing in a temporal direction, such as low-pass filter processing and moving averaging processing, on the center position information at each time, thereby generating the position information with high-frequency components reduced. The object position calculation unit <NUM> then outputs, as the position of each object, the position information about the representative position together with the identifier to the tracking unit <NUM>. The object position calculation unit <NUM> also stores (accumulates), in the accumulation unit <NUM>, information obtained by adding the information about the image capturing time of the three-dimensional shapes, which is a basis of the tracking analysis, to the position information about each representative position, as object position information.

The sound signal generation unit <NUM> obtains, from the accumulation unit <NUM>, the sound data and the object position information that correspond to the designated image capturing time, based on the time information included in the virtual viewpoint information. In the present embodiment, since the object position information does not include information in the height direction, the sound signal generation unit <NUM> adds the height information corresponding to each object to the object position information. For example, in the present embodiment, the sound signal generation unit <NUM> adds the height information corresponding to a mouth or a musical instrument of each object, to the object position information. The sound signal generation unit <NUM> then associates, with the object position information, the sound data that is collected by the sound collection unit <NUM> (e.g., a microphone) and corresponds to the identifier assigned to the object position information including the height information. In this way, the sound signal generation unit <NUM> can add the position of the virtual sound source for reproducing the associated sound data to each position indicated by the object position information.

With the above-described system configuration, the image processing system can generate stereoscopic sounds based on the viewpoint position of the virtual viewpoint image and the position of each object in the virtual viewpoint image. The virtual viewpoint image generated by the image processing system enables the user to enjoy a more realistic image and sound experience.

Next, an example of tracking analysis processing on the position of each extracted shape by the tracking unit <NUM> will be described with reference to a flowchart illustrated in <FIG>.

In step S501, the tracking unit <NUM> receives an input from the identifier setting unit <NUM> and performs initialization processing. More specifically, the tracking unit <NUM> obtains the identifier of each extracted shape input from the identifier setting unit <NUM>.

In step S502, the tracking unit <NUM> obtains each extracted shape input from the shape extraction unit <NUM>.

In step S503, the tracking unit <NUM> respectively assigns, to the obtained extracted shapes, the identifiers obtained from the identifier setting unit <NUM> and outputs, to the object position calculation unit <NUM>, the extracted shapes with the identifiers assigned thereto.

In step S504, the object position calculation unit <NUM> calculates an object position from each extracted shape group with the same identifier assigned thereto, and outputs the calculated object position to the tracking unit <NUM>.

The processing performed in steps S501 to S504 corresponds to the initialization processing.

Processing performed in steps S505 to S509 is performed at each time and repeated while the image capturing units <NUM> are capturing object images as frames of captured video data. When the image capturing units <NUM> end the image capturing processing (YES in step S510), the processing of this flowchart is ended upon completion of the processing in step S509.

In step S505, the tracking unit <NUM> obtains the extracted shapes input from the shape extraction unit <NUM> and the object positions at the immediately preceding time (the previous time) calculated by the object position calculation unit <NUM>. The immediately preceding time indicates, for example, the image capturing time of the extracted shapes generated from the frame in the captured video data immediately preceding the frame in the captured video data corresponding to the extracted shapes currently being processed. In the present embodiment, for the sake of comparison, the time corresponding to the extracted shapes currently being processed is also referred to as the current time. In this case, the current time indicates the capturing time of the image in the video data used to generate the extracted shapes currently being processed.

In step S506, in a case where the representative position of each extracted shape at the current time overlaps an object position at the previous time, the tracking unit <NUM> assigns, to the extracted shape, the identifier assigned to the object position overlapping the representative position. In this step, in a case where the representative position of one extracted shape overlaps a plurality of object positions, the tracking unit <NUM> assigns, to the extracted shape, an identifier indicating "undeterminable" at the current time. In the processing of step S506, the identifier indicating "undeterminable" is assigned because a plurality of extracted shapes with different identifiers assigned thereto may overlap each other at the current time, like a state where two objects are close to each other. Processing in step S509 (described below) is performed on the extracted shapes to which the identifiers including the identifier indicating "undeterminable" are assigned.

In step S507, in a case where the position of the extracted shape to with an identifier has not yet been assigned overlaps the position of an extracted shape at the previous time, the tracking unit <NUM> assigns the identifier assigned to the extracted shape at the previous time, to the extracted shape at the current time.

In step S508, in a case where another extracted shape to which an identifier has already been assigned at the current time is within a predetermined range from the extracted shape to which an identifier has not yet been assigned, the tracking unit <NUM> assigns the identifier assigned to the other extracted shape, to the extracted shape to which an identifier has not yet been assigned. The predetermined range is desirably a range corresponding to the width between the feet of a standing object. For example, the predetermined range is a range with a radius of <NUM> from the center of the extracted shape. At this time, in a case where a plurality of other extracted shapes to which identifiers have already been assigned is within the predetermined range from a certain extracted shape, the tracking unit <NUM> assigns, to the certain extracted shape, the identifier of the extracted shape closest thereto among the other extracted shapes. The tracking unit <NUM> determines an extracted shape to which no identifier has been assigned at the time of completion of the processing up to step S508, as a non-tracking target. In this case, the tracking unit <NUM> does not output, to the object position calculation unit <NUM>, the extracted shape determined as the non-tracking target.

In step S509, the tracking unit <NUM> outputs, to the object position calculation unit <NUM>, the extracted shapes to which the identifiers are assigned in the processing in steps S506 to S508, and the identifiers assigned thereto.

In step S510, a control unit (not illustrated) determines whether the image capturing processing by the image capturing units <NUM> is completed. In a case where the control unit determines that the image capturing processing by the image capturing units <NUM> is not completed (NO in step S510), the processing returns to step S505 to repeat the processing in steps S505 to S509. In a case where the control unit determines that the image capturing processing by the image capturing units <NUM> is completed (YES in step S510), the processing in the flowchart ends.

Each processing in steps S506 to S508 is performed on each extracted shape. By repeating the processing in steps S506 to S509, the identifiers set by the identifier setting unit <NUM> are associated with the extracted shapes at each time. Using the associated identifiers, the object position calculation unit <NUM> can calculate the object positions for the respective objects in a distinguished manner.

In a case where the tracking unit <NUM> assigns the identifier indicating "undeterminable" to an extracted shape, some of the initial identifiers may not be assigned at a certain time. In such a case, the object position calculation unit <NUM> does not update the object position information corresponding to the same identifier as the identifier that has not been assigned to an extracted shape. In this way, even in a case where extracted shapes overlap because, for example, a plurality of objects comes closer, a plurality of pieces of object position information does not indicate the same position. In this case, a plurality of respective object positions at the previous time is maintained. Then, in a case where the overlapping plurality of extracted shapes has separated again because the objects have separated from each other, identifiers are assigned to the respective extracted shapes based on the latest object positions. In other words, when the overlap of the plurality of extracted shapes is resolved, the update of the respective pieces of object position information resumes.

Through the above-described processing, even in a case where a plurality of objects is present in an image capturing region, the image processing system can track each of the objects and obtain position information about of each of the objects. Further, through the above-described processing, the image processing system can easily track each of the objects even in a case where overlap and separation occur between generated three-dimensional shape models because, for example, the objects come close and separate. In this way, even in a case where, for example, a plurality of artists changes their positions while singing or comes close to hold their hands, the image processing system can generate a virtual viewpoint image with stereoscopic sounds as if the sounds are output from the respective mouths of the objects. By watching such a virtual viewpoint image, the user can enjoy a more realistic image and sound experience.

In the first embodiment, a specific example of the image processing system has been described, but embodiments of the present invention are not limited thereto.

For example, in the first embodiment, the shape extraction unit <NUM> is configured to receive the shape estimation result by the three-dimensional shape estimation unit <NUM> from the three-dimensional shape estimation unit <NUM>, but the shape extraction unit <NUM> is not limited thereto. For example, the shape extraction unit <NUM> may obtain the shape estimation result by the three-dimensional shape estimation unit <NUM> from among the shape estimation results accumulated by the three-dimensional shape estimation unit <NUM> in the accumulation unit <NUM>.

In the first embodiment, the predetermined height from the bottom surface of the circumscribed cuboid of each three-dimensional shape, based on which the shape extraction unit <NUM> clips a part of the three-dimensional shape, is <NUM>, but the predetermined height may not necessarily be <NUM>.

For example, the predetermined height may be set in a range from <NUM> to <NUM>. Alternatively, the predetermined height may be automatically set to a height between the knees and waist of each object based on the height of the object.

In the first embodiment, the shape extraction unit <NUM> clips a part of each three-dimensional shape corresponding to the predetermined height from the bottom surface of the circumscribed cuboid of the three-dimensional shape, but the clipping method is not limited thereto. The shape extraction unit <NUM> may uniformly clip parts of the three-dimensional shapes corresponding to a predetermined height from the floor surface in the image capturing region. In this case, if an object is on a structure, such as a stepstool, in the image capturing region, the shape extraction unit <NUM> may extract the object shape corresponding to a predetermined height from a top surface of the structure.

In the first embodiment, the shape extraction unit <NUM> projects the clipped parts of the three-dimensional shapes onto the two-dimensional plane to divide the clipped parts into independent shapes, but the shape extraction unit <NUM> is not limited thereto. For example, the shape extraction unit <NUM> may directly divide the clipped parts of the three-dimensional shapes after determining whether the clipped parts are independent from each other.

In this case, in the subsequent processing, the tracking unit <NUM> tracks each object based on the three-dimensional shape of the object.

As an example of the distance in which the identifier setting unit <NUM> according to the first embodiment assigns the same identifier to a plurality of extracted shapes, a distance (of <NUM>) corresponding to the width between the feet of a standing object is described to be desirable, but the distance is not necessarily limited thereto. For example, in a case where an object narrows the width between the feet because, for example, there are many objects and the distances therebetween are short, the distance in which the same identifier is assigned to a plurality of extracted shapes may be set to a short distance, such as <NUM>. On the other hand, in a case where an object can widen the width between the feet, such as a case where the image capturing region is wide, the distance in which the same identifier is assigned to a plurality of extracted shapes may be set to a long distance, such as <NUM>.

In the first embodiment, the identifier setting unit <NUM> is configured to assign identifiers to the extracted shapes based on the distances between the extracted shapes, but the identifier setting unit <NUM> is not necessarily limited thereto. For example, the identifier setting unit <NUM> may determine in which of the circumscribed cuboids of the three-dimensional shapes each extracted shape is included, and assign an identifier to the extracted shape. For example, in an example illustrated in <FIG>, the identifier setting unit <NUM> assigns an identifier "A" to extracted shapes <NUM> and <NUM> included in a circumscribed cuboid <NUM>, and assigns an identifier "B" to extracted shapes <NUM> and <NUM> included in a circumscribed cuboid <NUM>. Alternatively, the user may predetermine an area to which a predetermined identifier is to be assigned by the identifier setting unit <NUM>. For example, as illustrated in <FIG>, first, the user inputs information about a determination area <NUM> with the identifier "A" assigned thereto, and information about a determination area <NUM> with the identifier "B" assigned thereto, to the image processing system via an input unit (not illustrated). Then, the identifier setting unit <NUM> assigns the identifier "A" to extracted shapes <NUM> and <NUM> included in the determination area <NUM>, and the identifier "B" to extracted shapes <NUM> and <NUM> included in the determination area <NUM>.

In the first embodiment, the identifier setting unit <NUM> automatically sets and assigns an identifier to each extracted shape, but the assignment method is not necessarily limited thereto. The user may determine the identifier to be assigned to each extracted shape. For example, a case will now be described where a plurality of objects is present and the user reassigns an identifier to each of the objects after the assignment of an identifier to each of the objects. In this case, for example, the user issues an instruction to shift to an identifier reassignment mode via a GUI illustrated in <FIG>. The user then designates identifiers to be assigned to the objects by sequentially clicking object positions <NUM> to <NUM> displayed on a screen illustrated in <FIG>. For example, suppose that an identifier "C" is assigned to the object position <NUM>, the identifier "A" to the object position <NUM>, and the identifier "B" to the object position <NUM>. In a case where the user desires to assign the identifiers "A", "B", and "C" to the object positions <NUM>, <NUM>, and <NUM>, respectively, in this order, the user clicks the object positions <NUM> to <NUM> in this order. The identifier setting unit <NUM> receives the order of the clicked object positions <NUM> to <NUM> and reassigns the identifiers "A", "B", and "C" based on the received order as illustrated <FIG>. The identifier setting unit <NUM> then outputs the extracted shapes and the identifiers reassigned thereto, to the tracking unit <NUM>.

The configuration according to the first embodiment has been described in which the object position information about each object subjected to the tracking analysis is used as the sound source reproduction position, but the object position information is not necessarily limited thereto. For example, the viewpoint designation unit <NUM> may obtain and use the object position information accumulated in the accumulation unit <NUM>. In this case, the viewpoint designation unit <NUM> may generate a virtual viewpoint capable of constantly revolving around an object even though the object moves, by setting, for example, a rotation center position of the virtual viewpoint to an object position <NUM> as illustrated in <FIG>. Alternatively, the viewpoint designation unit <NUM> may set, for example, a line-of-sight direction of the virtual viewpoint to the object position <NUM> as illustrated in <FIG>. In this case, the image processing system can generate a virtual viewpoint image based on the virtual viewpoint that is placed at a half-fixed position and automatically revolves in the horizontal direction accompanying with the movement of the object.

The processing units illustrated in <FIG> have been described to be hardware components in the above-described embodiments. In one embodiment, the processing performed by the processing units illustrated in <FIG> may be performed using a computer program.

<FIG> is a block diagram illustrating an example of a hardware configuration of a computer applicable to the image processing system according to the above-described embodiments.

A central processing unit (CPU) <NUM> controls the entire computer by using a computer program and data stored in a random access memory (RAM) <NUM> or a read-only memory (ROM) <NUM>, and executes the above-described processing performed by the image processing system according to the above-described embodiments. In other words, the CPU <NUM> functions as the processing units illustrated in <FIG>.

The RAM <NUM> includes an area for temporarily storing a computer program and data loaded from an external storage device <NUM>, data obtained from an external apparatus via an interface (I/F) <NUM>, and the like. The RAM <NUM> also includes a work area to be used when the CPU <NUM> executes various kinds of processing. For example, the RAM <NUM> can assign an area as a frame memory, or can provide various other areas as appropriate.

The ROM <NUM> stores setting data of the computer, a boot program, and the like. An operation unit <NUM> includes a keyboard and a mouse, and can input various kinds of instructions to the CPU <NUM> based on a user's operation. An output unit <NUM> displays a processing result of the CPU <NUM>. The output unit <NUM> includes, for example, a liquid crystal display. For example, the operation unit <NUM> serves as the viewpoint designation unit <NUM>, and the output unit <NUM> serves as the display unit <NUM>.

The external storage device <NUM> is a large-capacity information storage device typified by a hard disk drive device. The external storage device <NUM> stores an operating system (OS) and a computer program for causing the CPU <NUM> to implement the functions of the processing units illustrated in <FIG>. The external storage device <NUM> may further store pieces of image data serving as processing targets.

The computer program and data stored in the external storage device <NUM> are loaded into the RAM <NUM> as appropriate under the control of the CPU <NUM> and processed by the CPU <NUM>. Networks, such as a local area network (LAN) and the Internet, and other devices, such as a projection device and a display device, can be connected to the I/F <NUM>, and the computer can obtain and output various kinds of information via the I/F <NUM>. In the first embodiment, the image capturing units <NUM> are connected to the I/F <NUM>, the images captured by the image capturing units <NUM> are input via the I/F <NUM>, and the image capturing units <NUM> are controlled via the I/F <NUM>. A bus <NUM> connects the above-described components.

The CPU <NUM> centrally controls operations to be performed with the above-described configuration, in a similar manner to the operations described in the above-described embodiments.

In another configuration, the embodiments of the present invention can be implemented by supplying, to a system, a storage medium storing a code of a computer program for implementing the above-described functions, and causing the system to read and execute the code of the computer program. In this case, the code of the computer program read from the storage medium implements the functions according to the above-described embodiments, and the storage medium storing the code of the computer program is included in the embodiments of the present invention. Further, a configuration where the OS running on the computer executes part or all of the actual processing based on the instructions of the program code to implement the above-described functions is included in the embodiments of the present invention.

The embodiments may also be implemented with the following configuration. More specifically, a computer program code read from a storage medium is written into a memory provided in a function expansion card inserted in a computer, or a memory provided in a function expansion unit connected to the computer. Then, the above-described functions are implemented by a CPU, in the function expansion card or the function expansion unit, executing part or all of the actual processing based on the instructions of the computer program code. This configuration is also included in the embodiments of the present invention.

In a case where the embodiments of the present invention are applied to the above-described storage medium, the computer program code corresponding to the above-described processing is stored in the storage medium.

Claim 1:
An image processing system comprising:
shape estimation means (<NUM>) configured to generate three-dimensional shape data of at least one object using images of the at least one object captured from a plurality of directions by a plurality of image capturing means (<NUM>);
shape extraction means (<NUM>) configured to extract a plurality of parts of the generated three-dimensional shape data;
identifier setting means (<NUM>) configured to assign identifiers to the extracted plurality of parts based on positions of the extracted plurality of parts; and
tracking means (<NUM>) configured to track the extracted plurality of parts based on the identifiers and the positions of the extracted plurality of parts:
object position calculation means (<NUM>) configured to calculate a representative position of parts, among the extracted plurality of parts, to which the same identifier is assigned based on a result of the tracking by the tracking means (<NUM>), and output the representative position as an object position;
characterized in that
the tracking means (<NUM>) is configured to, based on the identifiers, the object position, and the positions of the extracted plurality of parts at a time immediately preceding an image capturing time of the extracted plurality of parts, assign the identifiers to the extracted plurality of parts, and
the tracking means (<NUM>) is configured to:
assign, among the extracted plurality of parts, to a part at a position overlapping the object position at the immediately preceding time, the identifier corresponding to the object position, and then determine whether a position of a part to which no identifier has yet been assigned overlaps one of the positions of the extracted plurality of parts at the immediately preceding time,
in a case where the position of the part overlaps one of the positions of the extracted plurality of parts at the immediately preceding time, assign, to the part, the identifier of the corresponding part at the immediately preceding time, and
in a case where the position of the part does not overlap any of the positions of the extracted plurality of parts at the immediately preceding time, assign, to the part, the identifier of a part closest to the part in a predetermined range among the extracted plurality of parts.