CROSS-REFERENCE TO RELATED APPLICATIONSThis application is a continuation of commonly assigned pending U.S. patent application Ser. No. 09/283,413 filed on Apr. 1, 1999, entitled A Navigable Telepresence Method And System Utilizing An Array of Cameras and claims priority under 35 U.S.C. §120 to such application which claims the benefit of U.S. Provisional Application Serial No. 60/080,413, filed on Apr. 2, 1998, both of which are herein incorporated by reference.[0001]
BACKGROUND OF THE INVENTION1. Field Of The Invention[0002]
The present invention relates to a telepresence system and, more particularly, to a navigable camera array telepresence system and method of using same.[0003]
2. Description Of Related Art[0004]
In general, a need exists for the development of telepresence systems suitable for use with static venues, such as museums, and dynamic venues or events, such as a music concerts. The viewing of such venues is limited by time, geographical location, and the viewer capacity of the venue. For example, potential visitors to a museum may be prevented from viewing an exhibit due to the limited hours the museum is open. Similarly, music concert producers must turn back fans due to the limited seating of an arena. In short, limited access to venues reduces the revenue generated.[0005]
In an attempt to increase the revenue stream from both static and dynamic venues, such venues have been recorded for broadcast or distribution. In some instances, dynamic venues are also broadcast live. While such broadcasting increases access to the venues, it involves considerable production effort. Typically, recorded broadcasts must be cut and edited, as views from multiple cameras are pieced together. These editorial and production efforts are costly.[0006]
In some instances, the broadcast resulting from these editorial and production efforts provides viewers with limited enjoyment. Specifically, the broadcast is typically based on filming the venue from a finite number of predetermined cameras. Thus, the broadcast contains limited viewing angles and perspectives of the venue. Moreover, the viewing angles and perspectives presented in the broadcast are those selected by a producer or director during the editorial and production process; there is no viewer autonomy. Furthermore, although the broadcast is often recorded for multiple viewings, the broadcast has limited content life because each viewing is identical to the first. Because each showing looks and sounds the same, viewers rarely come back for multiple viewings.[0007]
A viewer fortunate enough to attend a venue in person will encounter many of the same problems. For example, a museum-goer must remain behind the barricades, viewing exhibits from limited angles and perspectives. Similarly, concert-goers are often restricted to a particular seat or section in an arena. Even if a viewer were allowed free access to the entire arena to videotape the venue, such a recording would also have limited content life because each viewing would be the same as the first. Therefore, a need exists for a telepresence system that preferably provides user autonomy while resulting in recordings with enhanced content life at a reduced production cost.[0008]
Apparently, attempts have been made to develop telepresence systems to satisfy some of the foregoing needs. One telepresence system is described in U.S. Pat. No. 5,708,469 for Multiple View Telepresence Camera Systems Using A Wire Cage Which Surrounds A Polarity Of Multiple Cameras And Identifies The Fields Of View, issued Jan. 13, 1998. The system disclosed therein includes a plurality of cameras, wherein each camera has a field of view that is space-contiguous with and at a right angle to at least one other camera. In other words, it is preferable that the camera fields of view do not overlap each other. A user interface allows the user to jump between views. In order for the user's view to move through the venue or environment, a moving vehicle carries the cameras.[0009]
This system, however, has several drawbacks. For example, in order for a viewer's perspective to move through the venue, the moving vehicle must be actuated and controlled. In this regard, operation of the system is complicated. Furthermore, because the camera views are contiguous, typically at right angles, changing camera views results in a discontinuous image.[0010]
Other attempts at providing a telepresence system have taken the form of a 360 degree camera systems. One such system is described in U.S. Pat. No. 5,745,305 for Panoramic Viewing Apparatus, issued Apr. 28 1998. The system described therein provides a 360 degree view of environment by arranging multiple cameras around a pyramid shaped reflective element. Each camera, all of which share a common virtual optical center, receives an image from a different side of the reflective pyramid. Other types of 360 degree camera systems employ a parabolic lens or a rotating camera.[0011]
Such 360 degree camera systems also suffer from drawbacks. In particular, such systems limit the user's view to 360 degrees from a given point perspective. In other words, 360 degree camera systems provide the user with a panoramic view from a single location. Only if the camera system was mounted on a moving vehicle could the user experience simulated movement through an environment.[0012]
U.S. Pat. No. 5,187,571 for Television System For Displaying Multiple Views of A Remote Location issued Feb. 16, 1993, describes a camera system similar to the 360 degree camera systems described above. The system described provides a user to select an arbitrary and continuously variable section of an aggregate field of view. Multiple cameras are aligned so that each camera's field of view merges contiguously with those of adjacent cameras thereby creating the aggregate field of view. The aggregate field of view may expand to cover 360 degrees. In order to create the aggregate field of view, the cameras' views must be contiguous. In order for the camera views to be contiguous, the cameras have to share a common point perspective, or vertex. Thus, like the previously described 360 degree camera systems, the system of U.S. Pat. No. 5,187,571 limits a user's view to a single point perspective, rather than allowing a user to experience movement in perspective through an environment.[0013]
Also, with regard to the system of U.S. Pat. No. 5,187,571, in order to achieve the contiguity between camera views, a relatively complex arrangement of mirrors is required. Additionally, each camera seemingly must also be placed in the same vertical plane.[0014]
Thus, a need still exists for an improved telepresence system that provides the ability to better simulate a viewer's actual presence in a venue, preferably in real time.[0015]
SUMMARY OF THE INVENTIONThese and other needs are satisfied by the present invention. A telepresence system according to one embodiment of the present invention includes an array of cameras, each of which has an associated view of an environment and an associated output representing the view. The system also includes a first user interface device having first user inputs associated with movement along a first path in the array. The system further includes a second user interface device having second user inputs associated with movement along a second path in the array. A processing element is coupled to the user interface devices. The processing element receives and interprets the first inputs and selects outputs of cameras in the first path. Similarly, the processing element receives and interprets the second inputs and selects outputs of cameras in the second path independently of the first inputs. Thus, a first user and a second user are able to navigate simultaneously and independently through the array. In another embodiment, the system may also mix the output by mosaicing or tweening the output images. In a further embodiment of the present invention the telepresence system distinguishes between permissible cameras in the array and impermissible cameras in the array. In yet another embodiment of the present invention the telepresence system allows a user to move forward or backward through the environment, which provides the user the opportunity to move forward or backward through the environment.[0016]
BRIEF DESCRIPTION OF THE DRAWINGSFIG. 1 is an overall schematic of one embodiment of the present invention.[0017]
FIG. 2[0018]ais a perspective view of a camera and a camera rail section of the array according to one embodiment of the present invention.
FIGS. 2[0019]b-2dare side plan views of a camera and a camera rail according to one embodiment of the present invention.
FIG. 2[0020]eis a top plan view of a camera rail according to one embodiment of the present invention.
FIG. 3 is a perspective view of a portion of the camera array according to one embodiment of the present invention.[0021]
FIG. 4 is a perspective view of a portion of the camera array according to an alternate embodiment of the present invention.[0022]
FIG. 5 is a flowchart illustrating the general operation of the user interface according to one embodiment of the present invention.[0023]
FIG. 6 is a flowchart illustrating in detail a portion of the operation shown in FIG. 5.[0024]
FIG. 7[0025]ais a perspective view of a portion of one embodiment of the present invention illustrating the arrangement of the camera array relative to objects being viewed.
FIGS. 7[0026]b-7gillustrate views from the perspectives of selected cameras of the array in FIG. 7a.
FIG. 8 is a schematic view of an alternate embodiment of the present invention.[0027]
FIG. 9 is a schematic view of a server according to one embodiment of the present invention.[0028]
FIG. 10 is a schematic view of a server according to an alternate embodiment of the present invention.[0029]
FIG. 11 is a top plan view of an alternate embodiment of the present invention.[0030]
FIG. 12 is a flowchart illustrating in detail the image capture portion of the operation of the embodiment shown in FIG. 11.[0031]
DESCRIPTION OF PREFERRED EMBODIMENTS1. General Description Of Preferred Embodiments[0032]
The present invention relates to a telepresence system that, in a preferred embodiments, uses modular, interlocking arrays of microcameras. The cameras are on rails, with each rail holding a plurality of cameras. These cameras, each locked in a fixed relation to every adjacent camera on the array and dispersed dimensionally in a given environment, transmit image output to an associated storage node, thereby enabling remote viewers to navigate through such environment with the same moving light reflections and shadows) that characterize an actual in-environment transit.[0033]
In another preferred embodiment, the outputs of these microcameras are linked by tiny (less than half the width of a human hair) Vertical Cavity Surface Emitting Lasers (VCSELs) to optical fibers, fed through area net hubs, buffered on server arrays or server farms (either for recording or (instantaneous) relay) and sent to viewers at remote terminals, interactive wall screens, or mobile image appliances (like Virtual Retinal Displays). Each remote viewer, through an intuitive graphical user interface (GUI), can navigate effortlessly through the environment, enabling seamless movement through the event.[0034]
This involves a multiplexed, electronic switching process (invisible to the viewer) which moves the viewer's point perspective from camera to camera. Rather than relying, per se, on physically moving a microcamera through space, the system uses the multiplicity of positioned microcameras to move the viewer's perspective from microcamera node to adjacent microcamera node in a way that provides the viewer with a sequential visual and acoustical path throughout the extent of the array. This allows the viewer to fluidly track or dolly through a 3-dimensional remote environment, to move through an event and make autonomous real-time decisions about where to move and when to linger.[0035]
Instead of investing the viewer with the capacity to physically move a robotic camera, which would immediately limit the number of viewers that could simultaneously control their own course and navigate via storage nodes containing images of an environment associated with a pre-existing array of cameras. The user can move around the environment in any direction—clockwise or counterclockwise, up, down, closer to or further away from the environment, or some combination thereof. Moreover, image output mixing, such as mosaicing and tweening, effectuates seamless motion throughout the environment.[0036]
2. Detailed Description Of Preferred Embodiments[0037]
Certain embodiments of the present invention will now be described in greater detail with reference to the drawings. It is understood that the operation and functionality of many of the components of the embodiments described herein are known to one skilled in the art and, as such, the present description does not go into detail into such operative and functionality.[0038]
A telepresence system[0039]100 according to the present invention is shown in FIG. 1. The telepresence system100 generally includes anarray10 ofcameras14 coupled to aserver18, which in turn is coupled to one ormore users22 each having a user interfaced/display device24. As will be understood to one skilled it the art, the operation and functionality of the embodiment described herein is provided, in part, by the server and user interface/display device. While the operation of these components is not described by way of particular code listings or logic diagrams, it is to be understood that one skilled in the art will be able to arrive at suitable implementations based on the functional and operational details provided herein. Furthermore, the scope of the present invention is not to be construed as limited to any particular code or logic implementation.
In the present embodiment, the[0040]camera array10 is conceptualized as being in an X, Z coordinate system. This allows each camera to have an associated, unique node address comprising an X, and Z coordinate (X, Z). In the present embodiment, for example, a coordinate value corresponding to an axis of a particular camera represents the number of camera positions along that axis the particular camera is displaced from a reference camera. In the present embodiment, from the user's perspective the X axis runs left and right, and the Z axis runs down and up. Eachcamera14 is identified by its X, Z coordinate. It is to be understood, however, that other methods of identifyingcameras14 can be used. For example, other coordinate systems, such as those noting angular displacement from a fixed reference point as well as coordinate systems that indicate relative displacement from the current camera node may be used. In another alternate embodiment, the array is three dimensional, located in an X, Y, Z coordinate system.
The[0041]array10 comprises a plurality ofrails12, eachrail12 including a series ofcameras14. In the present preferred embodiment, thecameras14 are microcameras. The output from themicrocameras14 are coupled to theserver18 by means oflocal area hubs16. Thelocal area hubs16 gather the outputs and, when necessary, amplify the outputs for transmission to theserver18. In an alternate embodiment, thelocal area hubs16 multiplex the outputs for transmission to theserver18. Although the figure depicts the communication links15 between thecameras14 and theserver18 as being hardwired, it is to be understood that wireless links may be employed. Thus, it is within the scope of the present invention for the communication links15 to take the form of fiber optics, cable, satellite, microwave transmission, internet, and the like.
Also coupled to the[0042]server18 is anelectronic storage device20. Theserver18 transfers the outputs to theelectronic storage device20. The electronic (mass)storage device20, in turn, transfers each camera's output onto a storage medium or means, such as CD-ROM, DVD, tape, platter, disk array, or the like. The output of eachcamera14 is stored in a particular location on the storage medium associated with thatcamera14 or is stored with an indication to whichcamera14 each stored output corresponds. For example, the output of eachcamera14 is stored in contiguous locations on a separate disk, tape, CD-ROM, or platter. As is known in the art, the camera output may be stored in a compressed format, such as JPEG, MPEG1, MPEG2, and the like. Having stored each output allows a user to later view the environment over and over again, each time moving through thearray10 in a new path, as described below. In some embodiments of the present invention, such as those providing only real-time viewing, no storage device is required.
As will be described in detail below, the[0043]server18 receives output from thecameras14 in the array. Theserver18 processes these outputs for either storage in theelectronic storage device20, transmission to theusers22 or both.
It is to be understood that although the[0044]server18 is configured to provide the functionality of the system100 in the present embodiment, it is to be understood that other processing elements may provide the functionality of the system100. For example, in alternate embodiments, the user interface device is a personal computer programmed to interpret the user input and transmit an indication of the desired current node address, buffer outputs from the array, and provide other of the described functions.
As shown, the system[0045]100 can accommodate (but does not require)multiple users22. Eachuser22 has associated therewith a user interface device including a user display device (collectively24). For example, user22-1 has an associated user interface device and a user display device in the form of a computer24-1 having a monitor and a keyboard. User22-2 has associated therewith an interactive wall screen24-2 which serves as a user interface device and a user display device. The user interface device and the user display device of user22-3 includes a mobile audio and image appliance24-3. A digital interactive TV24-4 is the user interface device and user display device of user22-4. Similarly, user22-5 has a voice recognition unit and monitor24-5 as the user interface and display devices. It is to be understood that the foregoing user interface devices and user display devices are merely exemplary; for example, other interface devices include a mouse, touch screen, biofeedback devices, as well as those identified in U.S. Provisional Patent Application Serial No. 60/080,413 and the like.
As described in detail below, each[0046]user interface device24 has associated therewith user inputs. These user inputs allow eachuser22 to move or navigate independently through thearray10. In other words, eachuser22 enters inputs to generally select which camera outputs are transferred to the user display device. Preferably, each user display device includes a graphical representation of thearray10. The graphical representation includes an indication of which camera in the array the output of which is being viewed. The user inputs allow each user to not only select particular cameras, but also to select relative movement or navigational paths through thearray10.
As shown in FIG. 1, each[0047]user22 may be coupled to theserver18 by an independent communication link. Furthermore, each communication link may employ different technology. For example, in alternate embodiments, the communication links include an internet link, a microwave signal link, a satellite link, a cable link, a fiber optic link, a wireless link, and the like.
It is to be understood that the[0048]array10 provides several advantages. For example, because thearray10 employs a series ofcameras14, no individual camera, or theentire array10 for that matter, need be moved in order to obtain a seamless view of the environment. Instead, the user navigates through thearray10, which is strategically placed through and around the physical environment to be viewed. Furthermore, because thecameras14 of thearray10 are physically located at different points in the environment to be viewed, a user is able to view changes in perspective, a feature unavailable to a single camera that merely changes focal length.
Microcameras[0049]
Each[0050]camera14 is preferably a microcamera. The microcameras—microlenses mounted on thumbnail-sized CMOS active pixel sensor (APS) microchips—are arranged in patterns that enable viewers to move radically, in straight lines, or in fluid combinations thereof. The cameras are produced in a mainstream manufacturing process, by several companies, including Photobit, Pasadena, Calif.; Sarnoff Corporation, Princeton, N.J.; and VLSI Vision, Ltd., Edinburgh, Scotland.
Structure of the Array[0051]
The structure of the[0052]array10 will now be described in greater detail with reference to FIGS. 2a-2e.In general, thecamera array10 of the present embodiment comprises a series ofmodular rails12 carryingmicrocameras14. The structure of therails12 andcameras14 will now be discussed in greater detail with reference to FIGS. 2athrough2d.Eachcamera14 includes registration pins34. In the preferred embodiment, thecameras14 utilize VCSELs to transfer their outputs to therail12. It is to be understood that the present invention is not limited to any particular type ofcamera14, however, or even to anarray10 consisting of only one type ofcamera14.
Each[0053]rail12 includes two sides,12a,12b,at least one of which12bis hingeably connected to the base12cof therail12. The base12cincludesdocking ports36 for receiving the registration pins34 of thecamera14. When thecamera14 is seated on arail12 such that the registration pins34 are fully engaged in thedocking ports36, the hingedside12bof therail12 is moved against thebase32 of thecamera14, thereby securing thecamera14 to therail12.
Each[0054]rail12 further includes afirst end38 and asecond end44. Thefirst end38 includes, in the present embodiment, two lockingpins40 and a protectedtransmission relay port42 for transmitting the camera outputs. Thesecond end44 includes twoguide holes46 for receiving the locking pins40, and atransmission receiving port48. Thus, thefirst end38 of onerail12 is engagable with asecond end44 of anotherrail12. Therefore, eachrail12 is modular and can be functionally connected to another rail to create thearray10.
Once the[0055]camera14 is securely seated to therail12, thecamera14 is positioned such that the camera output may be transmitted via the VCSEL to therail12. Eachrail12 includes communication paths for transmitting the output from eachcamera14.
Although the[0056]array10 is shown having a particular configuration, it is to be understood that virtually any configuration ofrails12 andcameras14 is within the scope of the present invention. For example, thearray10 may be a linear array ofcameras14, a 2-dimensional array ofcameras14, a 3-dimensional array ofcameras14, or any combination thereof. Furthermore, thearray10 need not be comprised solely of linear segments, but rather may include curvilinear sections.
The[0057]array10 is supported by any of a number of support means. For example, thearray10 can be fixedly mounted to a wall or ceiling; thearray10 can be secured to a moveable frame that can be wheeled into position in the environment or supported from cables.
FIG. 3 illustrates an example of a portion of the[0058]array10. As shown, thearray10 comprises five rows ofrails12a,through12e.Each of theserails12a-12eis directed towards a central plane, which substantially passes through thecenter row12c.Consequently, for any object placed in the same plane as themiddle row12c,a user would be able to view the object essentially from the bottom, front, and top.
As noted above, the[0059]rails12 of thearray10 need not have the same geometry. For example, some of therails12 may be straight while others may be curved. For example, FIG. 4 illustrates the camera alignment that results from utilizing curved rails. It should be noted that rails in FIG. 4 have been made transparent so that the arrangement ofcameras14 may be easily seen.
In an alternate embodiment, each rail is configured in a step-like fashion or an arc with each camera above (or below) and in front of a previous camera. In such an arrangement, the user has the option of moving forward through the environment.[0060]
It is to be understood that the spacing of the[0061]microcameras14 depends on the particular application, including the objects being viewed, the focal length of themicrocameras14, and the speed of movement through thearray10. In one embodiment the distance betweenmicrocameras14 can be approximated by analogy to a conventional movie reel recording projector. In general, the speed of movement of a projector through an environment divided by the frames per unit of time second results in a frame-distance ratio.
For example, as shown by the following equations, in some applications a frame is taken ever inch. A conventional movie projector records twenty-four frames per second. When such a projector is moved through an environment at two feet per second, a frame is taken approximately every inch.
[0062]A frame of the projector is analogous to a[0063]camera14 in the present invention. Thus, where one frame per inch results in a movie having a seamless view of the environment, so too does onecamera14 per inch. Thus, in one embodiment of the present invention thecameras14 are spaced approximately one inch apart, thereby resulting in a seamless view of the environment.
Navigation Through the System[0064]
The general operation of the present embodiment will now be described with reference to FIG. 5 and continuing reference to FIG. 1. As shown in[0065]step110, the user is presented with a predetermined starting view of the environment corresponding to a starting camera. It is to be understood that the operation of the system is controlled, in part, by software residing in the server. As noted above, the system associates each camera in the array with a coordinate. Thus, the system is able to note the coordinates of the starting camera node. The camera output and, thus the corresponding view, changes only upon receiving a user input.
When the user determines that they want to move or navigate through the array, the user enters a user input through the[0066]user interface device24. As described below, the user inputs of the present embodiment generally include moving to the right, to the left, up, or down in the array. Additionally, a user may jump to a particular camera in the array. In alternate embodiments, a subset of these or other inputs, such as forward, backward, diagonal, over, and under, are used. The user interface device, in turn, transmits the user input to the server instep120.
Next, the server receives the user input in[0067]step130 and proceeds to decode the input. In the present embodiment, decoding the input generally involves determining whether the user wishes to move to the right, to the left, up, or down in the array.
On the other hand, if the received user input does not correspond to backward, then The[0068]server18 proceeds to determine whether the input corresponds to moving to the user's right in thearray10. This determination is shown instep140. If the received user input does correspond to moving to the right, the current node address is incremented along the X axis instep150 to obtain an updated address.
If the received user input does not correspond to moving to the right in the array, the[0069]server18 then determines whether the input corresponds to moving to the user's left in thearray10 instep160. Upon determining that the input does correspond to moving to the left, theserver18 then decrements the current node address along the X axis to arrive at the updated address. This is shown instep170.
If the received user input does not correspond to either moving to the right or to the left, the[0070]server18 then determines whether the input corresponds to moving up in the array. This determination is made instep180. If the user input corresponds to moving up, instep190, theserver18 increments the current node address along the Z axis, thereby obtaining an updated address.
Next, the[0071]server18 determines whether the received user input corresponds to moving down in thearray10. This determination is made instep200. If the input does correspond to moving down in thearray10, instep210 theserver18 decrements the current node address along the Z axis.
Lastly, in[0072]step220 theserver18 determines whether the received user input corresponds to jumping or changing the view to aparticular camera14. As indicated in FIG. 5, if the input corresponds to jumping to aparticular camera14, theserver18 changes the current node address to reflect the desired camera position. Updating the node address is shown asstep230. In an alternate embodiment, the input corresponds to jumping to a particular position in thearray10, not identified by the user as being a particular camera but by some reference to the venue, such as stage right.
It is to be understood that the[0073]server18 may decode the received user inputs in any of a number of ways, including in any order. For example, in an alternate embodiment theserver18 first determines whether the user input corresponds to up or down. In another alternate, preferred embodiment, user navigation includes moving forward, backward, to the left and right, and up and down through a three dimensional array.
If the received user input does not correspond to any of the recognized inputs, namely to the right, to the left, up, down, or jumping to a particular position in the[0074]array10 then instep240, theserver18 causes a message signal to be transmitted to theuser display device24, causing a message to be displayed to theuser22 that the received input was not understood. Operation of the system100 then continues withstep120, and theserver18 awaits receipt of the next user input.
After adjusting the current node address, either by incrementing or decrementing the node address along an axis or by jumping to a particular node address, the[0075]server18 proceeds instep250 to adjust the user's view. Once the view is adjusted, operation of the system100 continues again withstep120 as theserver18 awaits receipt of the next user input.
In an alternate embodiment, the[0076]server18 continues to update the node address and adjust the view based on the received user input. For example, if the user input corresponded to “moving to the right”, then operation of the system100 would continuously loop throughsteps140,150, and250, checking for a different input. When the different input is received, theserver18 continuously updates the view accordingly.
It is to be understood that the foregoing user inputs, namely, to the right, to the left, up, and down, are merely general descriptions of movement through the array. Although the present invention is not so limited, in the present preferred embodiment, movement in each of these general directions is further defined based upon the user input.[0077]
Accordingly, FIG. 6 is a more detailed diagram of the operation of the system according to[0078]steps140,150, and250 of FIG. 5. Moreover, it is to be understood that while FIG. 6 describes more detailed movement one direction i.e., to the right, the same detailed movement can be applied in any other direction. As illustrated, the determination of whether the user input corresponds to moving to the right actually involves several determinations. As described in detail below, these determinations include moving to the right through thearray10 at different speeds, moving to the right into a composited additional source output at different speeds, and having the user input overridden by the system100.
The present invention allows a[0079]user22 to navigate through thearray10 at the different speeds. Depending on the speed (i.e. number of camera nodes transversed per unit of time) indicated by the user's input, such as movement of a pointing device (or other interface device), theserver18 will apply an algorithm that controls the transition between camera outputs either at critical speed (n nodes/per unit of time), under critical speed (n−1 nodes/per unit of time), or over critical speed (n+1 nodes/per unit of time).
It is to be understood that speed of movement through the[0080]array10 can alternatively be expressed as the time to switch from onecamera14 to anothercamera14.
Specifically, as shown in[0081]step140a,theserver18 makes the determination whether the user input corresponds to moving to the right at a critical speed. The critical speed is preferably a predetermined speed of movement through thearray10 set by the system operator or designer depending on the anticipated environment being viewed. Further, the critical speed depends upon various other factors, such as focal length, distance between cameras, distance between the cameras and the viewed object, and the like. The speed of movement through thearray10 is controlled by the number ofcameras14 traversed in a given time period. Thus, the movement through thearray10 at critical speed corresponds to traversing some number, “n”, camera nodes per millisecond, or taking some amount of time, “s”, to switch from onecamera14 to another. It is to be understood that in the same embodiment the critical speed of moving through thearray10 in one dimension need not equal the critical speed of moving through the array in another dimension. Consequently, theserver18 increments the current node address along the X axis at n nodes per millisecond.
In the present preferred embodiment the user traverses twenty-four[0082]cameras14 per second. As discussed above, a movie projector records twenty-four frames per second. Analogizing between the movie projector and the present invention, at critical the user traverses (and theserver18 switches between) approximately twenty-fourcameras14 per second, or acamera14 approximately every 0.04167 seconds.
As shown in FIG. 6, the[0083]user22 may advance not only at critical speed, but also at over the critical speed, as shown instep140b,or at under the critical speed, as shown instep140c.Where the user input “I” indicates movement through thearray10 at over the critical speed, theserver18 increments the current node address along the X axis by a unit of greater than n, for example, at n+2 nodes per millisecond. The step of incrementing the current node address at n+1 nodes per millisecond along the X axis is shown instep150b.Where the user input “I” indicates movement through thearray10 at under the critical speed, theserver18 proceeds to increment the current node address at a variable less than n, for example, at n−1 nodes per millisecond. This operation is shown asstep150c.
Scaleable Arrays[0084]
The shape of the[0085]array10 can also be electronically scaled and the system100 designed with a “center of gravity” that will ease a user's image path back to a “starting” or “critical position” node or ring of nodes, either when theuser22 releases control or when the system100 is programmed to override the user's autonomy; that is to say, the active perimeter or geometry of thearray10 can be pre-configured to change at specified times or intervals in order to corral or focus attention in a situation that requires dramatic shaping. The system operator can, by real-time manipulation or via a pre-configured electronic proxy sequentially activate or deactivate designated portions of thecamera array10. This is of particular importance in maintaining authorship and dramatic pacing in theatrical or entertainment venues, and also for implementing controls over how much freedom auser22 will have to navigate through thearray10.
In the present embodiment, the system[0086]100 can be programmed such that certain portions of thearray10 are unavailable to theuser22 at specified times or intervals. Thus, continuing withstep140dof FIG. 6, theserver18 makes the determination whether the user input corresponds to movement to the right through the array but is subject to a navigation control algorithm. The navigation control algorithm causes theserver18 to determine, based upon navigation control factors, whether the user's desired movement is permissible.
More specifically, the navigation control algorithm, which is programmed in the[0087]server18, determines whether the desired movement would cause the current node address to fall outside the permissible range of node coordinates. In the present embodiment, the permissible range of node coordinates is predetermined and depends upon the time of day, as noted by theserver18. Thus, in the present embodiment, the navigation control factors include time. As will be appreciated by those skilled in the art, permissible camera nodes and control factors can be correlated in a table stored in memory.
In an alternate embodiment, the navigation control factors include time as measured from the beginning of a performance being viewed, also as noted by the server. In such an embodiment, the system operator can dictate from where in the array a user will view certain scenes. In another alternate embodiment, the navigation control factor is speed of movement through the array. For example, the faster a[0088]user22 moves or navigates through the array, the wider the turns must be. In other alternate embodiments, the permissible range of node coordinates is not predetermined. In one embodiment, the navigation control factors and, therefore, the permissible range, is dynamically controlled by the system operator who communicates with the server via an input device.
Having determined that the user input is subject to the navigation control algorithm, the[0089]server18 further proceeds, instep150d,to increment the current node address along a predetermined path. By incrementing the current node address along a predetermined path, the system operator is able to corral or focus the attention of theuser22 to the particular view of thepermissible cameras14, thereby maintaining authorship and dramatic pacing in theatrical and entertainment venues.
In an alternate embodiment where the user input is subject to a navigation control algorithm, the[0090]server18 does not move the user along a predetermined path. Instead, theserver18 merely awaits a permissible user input and holds the view at the current node. Only when theserver18 receives a user input resulting in a permissible node coordinate will theserver18 adjust the user's view.
Additional Source Output[0091]
In addition to moving through the[0092]array10, theuser22 may, at predetermined locations in thearray10, choose to leave the real world environment being viewed. More specifically, additional source outputs, such as computer graphic imagery, virtual world imagery, applets, film clips, and other artificial and real camera outputs, are made available to theuser22. In one embodiment, the additional source output is composited with the view of the real environment. In an alternate embodiment, the user's view transfers completely from the real environment to that offered by the additional source output.
More specifically, the additional source output is stored (preferably in digital form) in the[0093]electronic storage device20. Upon theuser22 inputting a desire to view the additional source output, theserver18 transmits the additional source output to the user interface/display device24. The present embodiment, theserver18 simply transmits the additional source output to theuser display device24. In an alternate embodiment, theserver18 first composites the additional source output with the camera output and then transmits the composited signal to the user interface/display device24.
As shown in[0094]step140e,theserver18 makes the determination whether the user input corresponds to moving in the array into the source output. If theuser22 decides to move into the additional source output, theserver18 adjusts the view by substituting the additional source output for the updated camera output identified in either ofsteps150a-d.
Once the current node address is updated in either of[0095]steps150a-d,theserver18 proceeds to adjust the user's view instep250. When adjusting the view, theserver18 “mixes” the existing or current camera output being displayed with the output of thecamera14 identified by the updated camera node address. Mixing the outputs is achieved differently in alternate embodiments of the invention. In the present embodiment, mixing the outputs involves electronically switching at a particular speed from the existing camera output to the output of thecamera14 having the new current node address.
It is to be understood that in this and other preferred embodiments disclosed herein, the camera outputs are synchronized. As is well known in the art, a synchronizing signal from a “sync generator” is supplied to the cameras. The sync generator may take the form of those used in video editing and may comprise, in alternate embodiments, part of the server, the hub, and/or a separate component coupled to the array.[0096]
As described above, at critical speed, the[0097]server18 switches camera outputs approximately at a rate of 24 per second, or one every 0.04167 seconds. If theuser22 is moving through thearray10 at under the critical speed, the outputs of theintermediate cameras14 are each displayed for a relatively longer duration than if the user is moving at the critical speed. Similarly, each output is displayed for a relatively shorter duration when a user navigates at over the critical speed. In other words, theserver18 adjusts the switching speed based on the speed of the movement through thearray10.
Of course, it is to be understood that in a simplified embodiment of the present invention, the user may navigate at only the critical speed.[0098]
In another alternate embodiment, mixing the outputs is achieved by compositing the existing or current output and the updated camera node output. In yet another embodiment, mixing involves dissolving the existing view into the new view. In still another alternate embodiment, mixing the outputs includes adjusting the frame refresh rate of the user display device. Additionally, based on speed of movement through the array, the server may add motion blur to convey the realistic sense of speed.[0099]
In yet another alternate embodiment, the server causes a black screen to be viewed instantaneously between camera views. Such an embodiment is analogous to blank film between frames in a movie reel. Furthermore, although not always advantageous, such black screens reduce the physiologic “carrying over” of one view into a subsequent view.[0100]
It is to be understood that the user inputs corresponding to movements through the array at different speeds may include either different keystrokes on a keypad, different positions of a joystick, positioning a joystick in a given position for a predetermined length of time, and the like. Similarly, the decision to move into an additional source output may be indicated by a particular keystroke, joystick movement, or the like.[0101]
In another embodiment, mixing may be accomplished by “mosaicing” the outputs of the[0102]intermediate cameras14. U.S. Pat. No. 5,649,032 entitled System For Automatically Aligning Images To Form A Mosaic Image to Peter J. Burt et al. discloses a system and method for generating a mosaic from a plurality of images and is hereby incorporated by reference. Theserver18 automatically aligns one camera output to another camera output, a camera output to another mosaic (generated-from previously occurring camera output) such that the output can be added to the mosaic, or an existing mosaic to a camera output.
Once the mosaic alignment is complete, the present embodiment utilizes a mosaic composition process to construct (or update) a mosaic. The mosaic composition comprises a selection process and a combination process. The selection process automatically selects outputs for incorporation into the mosaic and may include masking and cropping functions to select the region of interest in a mosaic. Once the selection process selects which output(s) are to be included in the mosaic, the combination process combines the various outputs to form the mosaic. The combination process applies various output processing techniques, such as merging, fusing, filtering, output enhancement, and the like, to achieve a seamless combination of the outputs. The resulting mosaic is a smooth view that combines the constituent outputs such that temporal and spatial information redundancy are minimized in the mosaic. In one embodiment of the present invention, the mosaic may be formed as the user moves through the system (on the fly) and the output image displayed close to real time. In another embodiment, the system may form the mosaic from a predetermined number of outputs or during a predetermined time interval, and then display the images pursuant to the user's navigation through the environment.[0103]
In yet another embodiment, the[0104]server18 enables the output to be mixed by a “tweening” process. One example of the tweening process is disclosed in U.S. Pat. No. 5,529,040 entitled Method For Determining Sensor Motion And Scene Structure And Image Processing System Therefor to Keith J. Hanna, herein incorporated by reference. Tweening enables theserver18 to process the structure of a view from two or more camera outputs of the view.
Applying the Hanna patent to the telepresence method/system herein, tweening is now described. The server monitors the movement among the[0105]intermediate cameras14 through a scene using local scene characteristics such as brightness derivatives of a pair of camera outputs. A global camera output movement constraint is combined with a local scene characteristic constancy constraint to relate local surface structures with the global camera output movement model and local scene characteristics. The method for determining a model for global camera output movement through a scene and scene structure model of the scene from two or more outputs of the scene at a given image resolution comprises the following steps:
(a) setting initial estimates of local scene models and a global camera output movement model;[0106]
(b) determining a new value of one of the models by minimizing the difference between the measured error in the outputs and the error predicted by the model;[0107]
(c) resetting the initial estimates of the local scene models and the image sensor motion model using the new value of one of the models determined in step (b);[0108]
(d) determining a new value of the second of the models using the estimates of the models determined in step (b) by minimizing the difference between the measured error in the outputs and the error predicted by the model;[0109]
(e) warping one of the outputs towards the other output using the current estimates of the models at the given image resolution; and[0110]
(f) repeating steps (b), (c), (d) and (e) until the differences between the new values of the models and the values determined in the previous iteration are less than a certain value or until a fixed number of iterations have occurred.[0111]
It should be noted that where the Hanna patent effectuates the tweening process by detecting the motion of an image sensor (e.g., a video camera), an embodiment of the present invention monitors the user movement among live cameras or storage nodes.[0112]
In an alternate embodiment, although not always necessary, to ensure a seamless progression of views, the[0113]server18 also transmits to theuser display device24 outputs from some or all of the intermediate cameras, namely those located between the current camera node and the updated camera node. Such an embodiment will now be described with reference to FIGS. 7a-7g.Specifically, FIG. 7aillustrates a curvilinear portion of anarray10 that extends along the X axis or to the left and right from the user's perspective. Thus, the coordinates that theserver18 associates with thecameras14 differ only in the X coordinate. More specifically, for purposes of the present example, thecameras14 can be considered sequentially numbered, starting with theleft-most camera14 being the first, i.e., number “1”. The X coordinate of eachcamera14 is equal to the camera's position in the array. For illustrative purposes, particular cameras will be designate14-X, where X equals the camera's position in thearray10 and, thus, its associated X coordinate.
In general, FIGS. 7[0114]a-7gillustrate possible user movement through thearray10. The environment to be viewed includes three objects602,604,606, the first and second of which include numbered surfaces. As will be apparent, these numbered surface allow a better appreciation of the change in user perspective.
In FIG. 7[0115]a,six cameras14-2,14-7,14-11,14-14,14-20,14-23 of thearray10 are specifically identified. The boundaries of each camera's view is identified by the pair of lines14-2a,14-7a,14-11a,14-14a,14-20a,14-23a,radiating from each identified camera14-2,14-7,14-11,14-14,14-20,14-23, respectively. As described below, in the present example theuser22 navigates through thearray10 along the X axis such that the images or views of the environment are those corresponding to the identified cameras14-2,14-7,14-11,14-14,14-20,14-23.
The present example provides the[0116]user22 with the starting view from camera14-2. This view is illustrated in FIG. 7b.Theuser22, desiring to have a better view of theobject702, pushes the “7” key on the keyboard. This user input is transmitted to and interpreted by theserver18.
Because the[0117]server18 has been programmed to recognized the “7” key as corresponding to moving or jumping through the array to camera14-7. Theserver18 changes the X coordinate of the current camera node address to7, selects the output of camera14-7, and adjusts the view or image sent to theuser22. Adjusting the view, as discussed above, involves mixing the outputs of the current and updated camera nodes. Mixing the outputs, in turn, involves switching intermediate camera outputs into the view to achieve the seamless progression of the discrete views of cameras14-2 through14-7, which gives theuser22 the look and feel of moving around the viewed object. Theuser22 now has another view of thefirst object702. The view from camera14-7 is shown in FIG. 7c.As noted above, if the jump in camera nodes is greater than a predetermined limit, theserver18 would omit some or all of the intermediate outputs.
Pressing the “right arrow” key on the keyboard, the[0118]user22 indicates to the system100 a desire to navigate to the right at critical speed. Theserver18 receives and interprets this user input as indicating such and increments the current camera node address by n=4. Consequently, the updated camera node address is14-11. Theserver18 causes the mixing of the output of camera14-11 with that of camera14-7. Again, this includes switching into the view the outputs of the intermediate cameras (i.e.,14-8,14-9, and14-10) to give theuser22 the look and feel of navigating around the viewed object. Theuser22 is thus presented with the view from camera14-11, as shown in FIG. 7d.
Still interested in the[0119]first object702, theuser22 enters a user input, for example, “alt-right arrow,” indicating a desire to move to the right at less than critical speed. Accordingly, theserver18 increments the updated camera node address by n−1 nodes, namely 3 in the present example, to camera14-14. The outputs from cameras14-11 and14-14 are mixed, and theuser22 is presented with a seamless view associated with cameras14-11 through14-14. FIG. 7eillustrates the resulting view of camera14-14.
With little to see immediately after the[0120]first object702, theuser22 enters a user input such as “shift-right arrow,” indicating a desire to move quickly through thearray10, i.e., at over the critical speed. Theserver18 interprets the user input and increments the current node address by n+2, or 6 in the present example. The updated node address thus corresponds to camera14-20. Theserver18 mixes the outputs of cameras14-14 and14-20, which includes switching into the view the outputs of the intermediate cameras14-15 through14-19. The resulting view of camera14-20 is displayed to theuser22. As shown in FIG. 7f,theuser22 now views thesecond object704.
Becoming interested in the[0121]third object704, theuser22 desires to move slowly through thearray10. Accordingly, theuser22 enters “alt-right arrow” to indicate moving to the right at below critical speed. Once theserver18 interprets the received user input, it updates the current camera node address along the X axis by3 to camera14-23. Theserver18 then mixes the outputs of camera14-20 and14-23, thereby providing theuser22 with a seamless progression of views through camera14-23. The resulting view14-23ais illustrated in FIG. 7g.
Other Data Devices[0122]
It is to be understood that devices other than cameras may be interspersed in the array. These other devices, such as motion sensors and microphones, provide data to the server(s) for processing. For example, in alternate embodiments output from motion sensors or microphones are fed to the server(s) and used to scale the array. More specifically, permissible camera nodes (as defined in a table stored in memory) are those near the sensor or microphone having a desired output e.g., where there is motion or sound. As such, navigation control factors include output from other such devices. Alternatively, the output from the sensors or microphones are provided to the user.[0123]
An alternate embodiment in which the array of cameras includes multiple microphones interspersed among the viewed environment and the cameras will now be described with reference to FIG. 8. The[0124]system800 generally includes an array ofcameras802 coupled to aserver804, which, in turn, is coupled to one or more user interface anddisplay devices806 and anelectronic storage device808. Ahub810 collects and transfers the outputs from thearray802 to theserver804. More specifically, thearray802 comprisesmodular rails812 that are interconnected. Eachrail812 carriesmultiple microcameras814 and amicrophone816 centrally located atrail812. Additionally, thesystem800 includesmicrophones818 that are physically separate from thearray802. The outputs of both thecameras814 andmicrophones816,818 are coupled to theserver804 for processing.
In general, operation of the[0125]system800 proceeds as described with respect to system100 of FIGS.1-2dand5-6. Beyond the operation of the previously described system100, however, theserver804 receives the sound output from themicrophones816,818 and, as with the camera output, selectively transmits sound output to the user. As theserver804 updates the current camera node address and changes the user's view, it also changes the sound output transmitted to the user. In the present embodiment, theserver804 has stored in memory an associated range of camera nodes with a given microphone, namely thecameras814 on eachrail810 are associated with themicrophone816 on thatparticular rail810. In the event a user attempts to navigate beyond the end of thearray802, theserver804 determines the camera navigation is impermissible and instead updates the microphone node output to that of themicrophone818 adjacent to thearray802.
In an alternate embodiment, the[0126]server804 might include a database in which camera nodes in a particular area are associated with a given microphones. For example, a rectangle defined by the (X, Y, Z) coordinates (0,0,0), (10,0,0), (10,5,0), (0,5,0), (0,0,5), (10,0,5), (10,5,5) and (0,5,5) are associated with a given microphone. It is to be understood that selecting one of the series of microphones based on the user's position (or view) in the array provides the user with a sound perspective of the environment that coincides with the visual perspective.
It is to be understood that the server of the embodiments discussed above may take any of a number of known configurations. Two examples of server configurations suitable for use with the present invention will be described with reference to FIGS. 9 and 10. Turning first to FIG. 9, the[0127]server902,electronic storage device20,array10, users (1,2,3, . . . N)22-1-22-N, and associated user interface/display devices24-1-24-N are shown therein.
The[0128]server902 includes, among other components, a processing means in the form of one or more central processing units (CPU)904 coupled to associated read only memory (ROM)906 and a random access memory (RAM)908. In general,ROM906 is for storing the program that dictates the operation of theserver902, and theRAM908 is for storing variables and values used by theCPU904 during operation. Also coupled to theCPU904 are the user interface/display devices24. It is to be understood that the CPU may, in alternate embodiments, comprise several processing units, each performing a discrete function.
Coupled to both the[0129]CPU904 and theelectronic storage device20 is amemory controller910. Thememory controller910, under direction of theCPU904, controls accesses (reads and writes) to thestorage device20. Although thememory controller910 is shown as part of theserver902, it is to be understood that it may reside in thestorage device20.
During operation, the[0130]CPU904 receives camera outputs from thearray10 viabus912. As described above, theCPU904 mixes the camera outputs for display on the user interface/display device24. Which outputs are mixed depends on the view selected by eachuser22. Specifically, each user interface/display devices24 transmits acrossbus914 the user inputs that define the view to be displayed. Once theCPU904 mixes the appropriate outputs, it transmits the resulting output to the user interface/display device24 viabus916. As shown, in the present embodiment, eachuser22 is independently coupled to theserver902.
The[0131]bus912 also carries the camera outputs to thestorage device20 for storage. When storing the camera outputs, theCPU904 directs thememory controller910 to store the output of eachcamera14 in a particular location of memory in thestorage device20.
When the image to be displayed has previously been stored in the[0132]storage device20, theCPU904 causes thememory controller910 to access thestorage device20 to retrieve the appropriate camera output. The output is thus transmitted to theCPU904 viabus918 where it is mixed.Bus918 also carries additional source output to theCPU904 for transmission to theusers22. As with outputs received directly from thearray10, theCPU904 mixes these outputs and transmits the appropriate view to the user interface/display device24.
FIG. 10 shows a server configuration according to an alternate embodiment of the present invention. As shown therein, the[0133]server1002 generally comprises a control central processing unit (CPU)1004, a mixingCPU1006 associated with eachuser22, and amemory controller1008. Thecontrol CPU1004 has associatedROM1010 andRAM1012. Similarly, each mixingCPU1006 has associatedROM1014 andRAM1016.
To achieve the functionality described above, the camera outputs from the[0134]array10 are coupled to each of the mixingCPUs1 through N1006-1,1006-N viabus1018. During operation, eachuser22 enters inputs in the interface/display device24 for transmission (via bus1020) to thecontrol CPU1004. Thecontrol CPU1004 interprets the inputs and, via buses1022-1,1022-N, transmits control signals to the mixing CPUs1006-1,1006-N instructing them which camera outputs received onbus1018 to mix. As the name implies, the mixing CPUs1006-1,1006-N mix the outputs in order to generate the appropriate view and transmit the resulting view via buses1024-1,1024-N to the user interface/display devices24-1,24-N.
In an alternate related embodiment, each mixing[0135]CPU1006 multiplexes outputs to more than oneuser22. Indications of which outputs are to mixed and transmitted to eachuser22 comes from thecontrol CPU1004.
The[0136]bus1018 couples the camera outputs not only to the mixing CPUs1006-1,1006-N, but also to thestorage device20. Under control of thememory controller1008, which in turn is controlled by thecontrol CPU1004, thestorage device20 stores the camera outputs in known storage locations. Where user inputs to thecontrol CPU1004 indicate a users'22 desire to view stored images, thecontrol CPU1004 causes thememory controller1008 to retrieve the appropriate images from thestorage device20. Such images are retrieved into the mixingCPUs1006 viabus1026. Additional source output is also retrieved to the mixing CPUs1006-1,1006-N viabus1026. Thecontrol CPU1004 also passes control signals to the mixing CPUs1006-1,1006-N to indicate which outputs are to be mixed and displayed.
Stereoscopic Views[0137]
It is to be understood that it is within the scope of the present invention to employ stereoscopic views of the environment. To achieve the stereoscopic view, the system retrieves from the array (or the electronic storage device) and simultaneously transmits to the user at least portions of outputs from two cameras. The server processing element mixes these camera outputs to achieve a stereoscopic output. Each view provided to the user is based on such a stereoscopic output. In one stereoscopic embodiment, the outputs from two adjacent cameras in the array are used to produce one stereoscopic view. Using the notation of FIGS. 7[0138]a-7g,one view is the stereoscopic view from cameras14-1 and14-2. The next view is based on the stereoscopic output of cameras14-2 and14-3 or two other cameras. Thus, in such an embodiment, the user is provided the added feature of a stereoscopic seamless view of the environment.
Multiple Users[0139]
As described above, the present invention allows multiple users to simultaneously navigate through the array independently of each other. To accommodate multiple users, the systems described above distinguish between inputs from the multiple users and selects a separate camera output appropriate to each user's inputs. In one such embodiment, the server tracks the current camera node address associated with each user by storing each node address in a particular memory location associate with that user. Similarly, each user's input is differentiated and identified as being associated with the particular memory location with the use of message tags appended to the user inputs by the corresponding user interface device.[0140]
In an alternate embodiment, two or more users may choose to be linked, thereby moving in tandem and having the same view of the environment. In such an embodiment, each includes identifying another user by his/her code to serve as a “guide”. In operation, the server provides the outputs and views selected by the guide user to both the guide and the other user selecting the guide. Another user input causes the server to unlink the users, thereby allowing each user to control his/her own movement through the array.[0141]
Multiple Arrays[0142]
In certain applications, a user may also wish to navigate forward and backward through the environment, thereby moving closer to or further away from an object. Although it is within the scope of the present invention to use cameras with zoom capability, simply zooming towards an object does not change the user's image point perspective. One such embodiment in which users can move dimensionally forward and backward through the environment with a changing image point perspective will now be described with respect to FIG. 11 and continuing reference to FIG. 1. As will be understood by those skilled in the art, the arrays described with reference to FIG. 11 may be used with any server, storage device and user terminals described herein.[0143]
FIG. 11 illustrates a top plan view of another embodiment enabling the user to move left, right, up, down, forward or backwards through the environment. A plurality of cylindrical arrays ([0144]121-1-121-n) of differing diameters comprising a series ofcameras14 may be situated around an environment comprising one or more objects1200, one cylindrical array at a time.Cameras14 situated around the object(s)1100 are positioned along an X and Z coordinate system. Accordingly, anarray12 may comprise a plurality of rings of the same circumference positioned at different positions (heights) throughout the z-axis to form a cylinder ofcameras14 around the object(s)1100. This also allows each camera in eacharray12 to have an associated, unique storage node address comprising an X and Z coordinate—i.e., array1(X, Z). In the present embodiment, for example, a coordinate value corresponding to an axis of a particular camera represents the number of camera positions along that axis the particular camera is displaced from a reference camera. In the present embodiment, from the user's perspective, the X axis runs around the perimeter of anarray12, and the Z axis runs down and up. Each storage node is associated with a camera view identified by its X, Z coordinate.
As described above, the outputs of the[0145]cameras14 are coupled to one or more servers for gathering and transmitting the outputs to theserver18.
In one embodiment, because the environment is static, each camera requires only one storage location. The camera output may be stored in a logical arrangement, such as a matrix of n arrays, wherein each array has a plurality of (X,Z) coordinates. In one embodiment, the node addresses may comprise of a specific coordinate within an array—i.e., Array[0146]1(Xn, Zn), Array2(Xn, Zn) through Arrayn(Xn, Zn) . As described below, users can navigate the stored images in much the same manner as the user may navigate through an environment using live camera images.
The general operation of one embodiment of inputting images in[0147]storage device20 for transmission to a user will now be described with reference to FIG. 12 and continuing reference to FIG. 11. As shown instep1210, a cylindrical array12-1 is situated around the object(s) located in anenvironment1100. The view of eachcamera14 is transmitted toserver18 instep1220. Next, instep1220, theelectronic storage device20 of theserver18 stores the output of eachcamera14 at the storage node address associated with thatcamera14. Storage of the images may be effectuated serially, from onecamera14 at a time within thearray12, or by simultaneous transmission of the image data from all of thecameras14 of eacharray12. Once the output for eachcamera14 of array12-1 is stored, cylindrical array12-1 is removed from the environment (step1240). Instep1250, a determination is made as to the availability of additionalcylindrical arrays12 of differing diameters to those already situated. If additionalcylindrical arrays12 are desired, the process repeats beginning withstep1210. When noadditional arrays12 are available for situating around the environment, the process of inputting images intostorage devices20 is complete (step1260). At the end of the process, a matrix of addressable stored images exist.
Upon storing all of the outputs associated with the arrays[0148]12-1 through12-n, a user may navigate through the environment. Navigation is effectuated by accessing the input of the storage nodes by auser interface device24. In the present embodiment, the user inputs generally include moving around the environment orobject1100 by moving to the left or right, moving higher or lower along the z-axis, moving through the environment closer or further from theobject1100, or some combination of moving around and through the environment. For example, a user may access the image stored in the node address Array3(0,0) to view an object from the camera previously located at coordinate (0,0) of Array3. The user may move directly forward, and therefore closer to theobject1100, by accessing the image stored in Array2(0,0) and then Array1(0,0). To move further away from the object and to the right and up, the user may move from the image stored in node address Array1(0,0) and access the images stored in node address Array2(1,1), followed by accessing the image stored in node address Array3(2,2), an so on. A user may, of course, move among arrays and/or coordinates by any increments changing the point perspective of the environment with each node. Additionally, a user may jump to a particular camera view of the environment. Thus, a user may move throughout the environment in a manner similar to that described above with respect to accessing output of live cameras. This embodiment, however, allows user to access images that are stored in storage nodes as opposed to accessing live cameras. Moreover, this embodiment provides a convenient system and method to allow a user to move forward and backward in an environment.
It should be noted that although each storage node is associated with a camera view identified by its X, Z coordinate of a particular array, other methods of identifying camera views and storage nodes can be used. For example, other coordinate systems, such as those noting angular displacement from a fixed reference point as well as coordinate systems that indicate relative displacement from the current camera node may be used. It should also be understood that the[0149]camera arrays12 may be other shapes other than cylindrical. Moreover, it is not essential, although often advantageous, that thecamera arrays12 surround the entire environment.
It is to be understood that the foregoing user inputs, namely, move clockwise, move counter-clockwise, up, down, closer to the environment, and further from the environment, are merely general descriptions of movement through the environment. Although the present invention is not so limited, in the present preferred embodiment, movement in each of these general directions is further defined based upon the user input. Moreover the output generated by the server to the user may be mixed when moving among adjacent storage nodes associated with environment views (along the x axis, z axis, or among juxtaposed arrays) to generate seamless movement throughout the environment. Mixing may be accomplished by, but are not limited to, the processes described above.[0150]
Embodiments Covered[0151]
Although the present invention has been described in terms of certain preferred embodiments, other embodiments that are apparent to those of ordinary skill in the art are also intended to be within the scope of this invention. Accordingly, the scope of the present invention is intended to be limited only by the claims appended hereto.[0152]