The subject matter disclosed herein relates to generating an image of a scene. In particular, the subject matter disclosed herein relates to methods, systems, and computer-readable storage media for selecting image capture positions to generate three-dimensional images of a scene.
Stereoscopic, or three-dimensional, imagery is based on the principle of human vision. Two separate detectors detect the same object or objects in a scene from slightly different angles and project them onto two planes. The resulting images are transferred to a processor which combines them and gives the perception of the third dimension, i.e. depth, to a scene.
Many techniques of viewing stereoscopic images have been developed and include the use of colored or polarizing filters to separate the two images, temporal selection by successive transmission of images using a shutter arrangement, or physical separation of the images in the viewer and projecting them separately to each eye. In addition, display devices have been developed recently that are well-suited for displaying stereoscopic images. For example, such display devices include digital still cameras, personal computers, digital picture frames, set-top boxes, high-definition televisions (HDTVs), and the like.
The use of digital image capture devices, such as digital still cameras, digital camcorders (or video cameras), and phones with built-in cameras, for use in capturing digital images has become widespread and popular. Because images captured using these devices are in a digital format, the images can be easily distributed and edited. For example, the digital images can be easily distributed over networks, such as the Internet. In addition, the digital images can be edited by use of suitable software on the image capture device or a personal computer.
Digital images captured using conventional image capture devices are two-dimensional. It is desirable to provide methods and systems for using conventional devices for generating three-dimensional images. In addition, it is desirable to provide methods and systems for aiding users of image capture devices to select appropriate image capture positions for capturing two-dimensional images for use in generating three-dimensional images.
Methods, systems, and computer program products for selecting image capture positions to generate three-dimensional images are disclosed herein. According to one aspect, a method includes determining a plurality of first guides associated with a first still image of a scene. The method can also include displaying a real-time image of the scene on a display. Further, the method can include determining a plurality of second guides associated with the real-time image. The method can also include displaying the first and second guides on the display for guiding selection of a position of an image capture device to automatically or manually capture a second still image of the scene, as well as any images between in case the image capture device is set in a continuous image capturing mode, for pairing any of the captured images as a stereoscopic pair of a three-dimensional image.
According to another aspect, a user can, by use of the subject matter disclosed herein, use an image capture device for capturing a plurality of different images of the same scene and for generating a three-dimensional, or stereoscopic, image of the scene. The subject matter disclosed herein includes a process for generating three-dimensional images. The generation process can include identification of suitable pairs of images, registration, rectification, color correction, transformation, depth adjustment, and motion detection and removal. The functions of the subject matter disclosed herein can be implemented in hardware and/or software that can be executed on an image capture device or a suitable display device. For example, the functions can be implemented using a digital still camera, a personal computer, a digital picture frame, a set-top box, an HDTV, a phone, and the like.
According to an aspect, a system for selecting an image capture position to generate a three-dimensional image is disclosed. The system includes a memory having stored therein computer-executable instructions. The system also includes a computer processor that executes the computer-executable instructions. Further, the system may include an image generator configured to: determine a plurality of first guides associated with a first still image of a scene; and determine a plurality of second guides associated with the real-time image. The system may also include a display configured to: display a real-time image of the scene; and display the first and second guides for guiding selection of a position of an image capture device to capture a second still image of the scene, as well as any images in between, for pairing any of the captured images as a stereoscopic pair of a three-dimensional image.
According to another aspect, the image generator is configured to: determine at least one of a first horizontal guide, a first vertical guide, and a first perspective guide; and determine at least one of a second horizontal guide, a second vertical guide, and a second perspective guide.
According to another aspect, the image generator is configured to: apply edge sharpness criteria to identify the first template region to generate horizontal and vertical guides; and optionally apply a Hough transform or similar operation to identify the second horizontal, vertical, and perspective guide.
According to another aspect, the image generator is configured to capture the first still image using the image capture device, wherein the displaying of the real-time image of the scene occurs subsequent to capturing the first still image.
According to another aspect, the image generator is configured to receive input for entering a stereoscopic mode.
According to another aspect, the image generator is configured to: store settings of the image capture device used when the first still image is captured; and capture the second or other still images using the stored settings.
According to another aspect, the image generator is configured to dynamically change the displayed real-time image of the scene as the position of the image capture device changes with respect to the scene.
According to another aspect, the image generator is configured to dynamically change positioning of the first and second guides with respect to one another on the display as the position of the image capture device changes with respect to the scene.
According to another aspect, the image generator is configured to automatically or manually capture the second still image, or to stop capturing images when in continuous capture mode, when the first and second guides become aligned.
According to another aspect, the first and second guides become aligned when the image capture device is positioned using such predetermined criteria for pairing the first and second/last still images as the stereoscopic pair of the three-dimensional image.
According to an aspect, a system for positioning an image capture device for generating a three-dimensional image is disclosed. The system includes a memory having stored therein computer-executable instructions. The system also includes a computer processor that executes the computer-executable instructions. Further, the system may include an image generator configured to: determine a plurality of first guides associated with a first still image of a scene; capture at least one real-time image of the scene during movement of the image capture device; and determine a plurality of second guides associated with the real-time image. The system may also include a motorized device configured to: move the image capture device; and position the image capture device to a predetermined position where the guides are aligned to capture a second/last still image of the scene for pairing any of the captured images as a stereoscopic pair of a three-dimensional image.
According to another aspect, the image generator is configured to: determine at least one of a first horizontal guide, a first vertical guide, and a first perspective guide, and determine at least one of a second horizontal guide, a second vertical guide, and a second perspective guide.
According to another aspect, the image generator is configured to: apply edge sharpness criteria to identify the first template region to generate horizontal and vertical guides; and optionally apply a Hough transform or similar operation to identify the second horizontal, vertical, and perspective guide.
The foregoing summary, as well as the following detailed description of various embodiments, is better understood when read in conjunction with the appended drawings. For the purposes of illustration, there is shown in the drawings exemplary embodiments; however, the invention is not limited to the specific methods and instrumentalities disclosed. In the drawings:
The subject matter of the present invention is described with specificity to meet statutory requirements. However, the description itself is not intended to limit the scope of this patent. Rather, the inventors have contemplated that the claimed subject matter might also be embodied in other ways, to include different steps or elements similar to the ones described in this document, in conjunction with other present or future technologies. Moreover, although the term “step” may be used herein to connote different aspects of methods employed, the term should not be interpreted as implying any particular order among or between various steps herein disclosed unless and except when the order of individual steps is explicitly described.
Embodiments of the present invention are based on technology that allows a user to capture a plurality of different images of the same object within a scene and to generate one or more stereoscopic images using the different images. Particularly, methods in accordance with the present invention provide assistance to camera users in capturing pictures that can be subsequently converted into high-quality three-dimensional images. The functions disclosed herein can be implemented in hardware and/or software that can be executed within, for example, but not limited to, a digital still camera, a video camera (or camcorder), a personal computer, a digital picture frame, a set-top box, an HDTV, a phone, or the like. A mechanism to automate the image capture procedure is also described herein.
Methods, systems, and computer program products for selecting an image capture position to generate a three-dimensional image in accordance with embodiments of the present invention are disclosed herein. According to one or more embodiments of the present invention, a method includes determining a plurality of first guides associated with a first still image of a scene. The method can also include displaying a real-time image of the scene on a display. Further, the method can include determining a plurality of second guides associated with the real-time image. The method can also include displaying the first and second guides on the display for guiding selection of a position of an image capture device to automatically or manually capture a second still image of the scene, as well as any images in between in case the image capture device is set in a continuous image capturing mode, for pairing any of the captured images as a stereoscopic pair of a three-dimensional image. Such three-dimensional images can be viewed or displayed on a suitable stereoscopic display.
The functions and methods described herein can be implemented on a device capable of capturing still images, displaying three-dimensional images, and executing computer executable instructions on a processor. The device may be, for example, a digital still camera, a video camera (or camcorder), a personal computer, a digital picture frame, a set-top box, an HDTV, a phone, or the like. The functions of the device may include methods for rectifying and registering at least two images, matching the color and edges of the images, identifying moving objects, removing or adding moving objects from or to the images to equalize them, altering the perceived depth of objects, and any final display-specific transformation to create a single, high-quality three-dimensional image. The techniques described herein may be applied to still-captured images and video images, which can be thought of as a series of images; hence for the purpose of generalization the majority of the description herein is limited to still-captured image processing.
Referring to
The memory 104 and the CPU 106 may be operable together to implement an image generator function 114 for generating three-dimensional images in accordance with embodiments of the present invention. The image generator function 114 may generate a three-dimensional image of a scene using two or more images of the scene captured by the device 100.
The method of
The method of
The method of
The method of
Although the above examples are described for use with a device capable of capturing images, embodiments of the present invention described herein are not so limited. Particularly, the methods described herein for assisting a camera user to generate a three-dimensional image of a scene may, for example, be implemented in any suitable system including a memory and computer processor. The memory may have stored therein computer-executable instructions. The computer processor may execute the computer-executable instructions. The memory and computer processor may be configured for implementing methods in accordance with embodiments of the present invention described herein.
Image pairs suitable for use as a three-dimensional image may be captured by a user using any suitable technique. For example,
In another example,
In accordance with embodiments of the present invention, a user may create high-quality, three-dimensional content using a standard digital still, video camera (or cameras), other digital camera equipment or devices (e.g., a camera-equipped mobile phone), or the like. In order to generate a good three-dimensional picture or image, a plurality of images of the same object can be captured from varied positions. In an example, in order to generate three-dimensional images, a standard digital still or video camera (or cameras) can be used to capture a plurality of pictures with the following guidelines. The user uses the camera to capture an image, and then captures subsequent pictures after moving the camera left or right from its original location. These pictures may be captured as still images or as a video sequence.
where B is the stereo baseline separation in inches, D is the distance in feet to the nearest object in frame, F is the focal length of the lens in millimeters (mm), and C is the camera crop factor relative to a full frame (36×24 square mm) digital sensor (which approximates the capture of a 35 mm analog camera). In the examples provided herein, it is assumed that at least two images have been captured, at least two of which can be interpreted as a stereoscopic pair.
Returning to
After images are determined to be a potential stereoscopic pair, the method includes applying 304 rudimentary color adjustment to the images. For example, the image generator function 114 shown in
Using the results of the motion estimation process used for object similarity evaluation, vertical displacement can be assessed. Vertical motion vector components are indicative of vertical parallax between the images, which when large can indicate a poor image pair. Vertical parallax must be corrected via rectification and registration to allow for comfortable viewing, and this correction will reduce the size of the overlapping region of the image in proportion to the original amount of vertical parallax.
Using the motion vectors from the similarity of objects check, color data may be compared to search for large changes between images. Such large changes can represent a color difference between the images regardless of similar luminance.
A Hough transform can be applied (e.g., step 306 of
The aforementioned criteria may be applied to scaled versions of the original images for reducing computational requirements. The results of each measurement may be gathered, weighted, and combined to make a final decision regarding the probable quality of a given image pair as a stereoscopic image pair.
The method of
The method of
For a stereo pair of left and right view images, the method of
For a stereo pair of left and right view images with a set of identified interest points, rectification 318 may be performed on the stereo pair of images. Using the interest point set for the left view image, motion estimation techniques (as described in stereo pair identification above) and edge matching techniques are applied to find the corresponding points in the right view image. In an example, N corresponding points in left and right view images may be made into a 3×N set of point values, for example:
and the fundamental matrix equation
rightptsT*F*leftpts=0
is solved or approximated to determine the 3×3 fundamental matrix, F, and epipoles, e1 and e2. The camera epipoles are used with the interest point set to generate a pair of rectifying homographies. It can be assumed that the camera properties are consistent between the two captured images. The respective homographies are then applied to the right and left images, creating the rectified images. The overlapping rectangular region of the two rectified images is then identified, the images are cropped to this rectangle, and the images are resized to their original dimensions, creating the rectified image pair, right_r and left_r. The rectified image pair can be defined by the following equations:
right—r=cropped(F*right)
left—r=cropped(F*left)
For the stereo pair of “left_r” and “right_r” images, registration is next performed on the stereo pair. A set of interest points is required, and the interest point set selected for rectification (or a subset thereof) may be translated to positions relative to the output of the rectification process by applying the homography of the rectification step to the points. Optionally, a second set of interest points may be identified for the left_r image, and motion estimation and edge matching techniques may be applied to find the corresponding points in the right_r image. The interest point selection process for the registration operation is the same as that for rectification. Again, the N corresponding interest points are made into a 3×N set of point values as set forth in the following equations:
and the following matrix equation
left—rpts=Tr*right—rpts
is approximated for a 3×3 linear conformal transformation, Tr, which may incorporate both translation on the X and Y axes and rotation in the X/Y plane. The transform Tr is applied to the right_r image to create the image “Right′” as defined by the following equation:
Right′=Tr*right—r,
where right_r is organized as a 3×N set of points (xir, yir, 1) for i=1 to image_rows*image cols.
Finally, the second set of interest points for the left_r image may be used to find correspondence in the Right′ image, the set of points as set forth in the following equations:
is identified and composed, and the equation
Right′pts=Tl*left—rpts
is approximated for a second linear conformal transformation, Tl. The transform Tl is applied to the left_r image to create the image “Left′”, as defined by the following equation:
Left′=Tl*left—r
“Right′” and “Left′” images represent a rectified, registered stereoscopic pair.
The method of
The method of
For a stereoscopic pair of registered “Left′” and “Right′” images, the screen plane of the stereoscopic image can be altered 334, or relocated, to account for disparities measured as greater than a viewer can resolve. This is performed by scaling the translational portion of transforms that created the registered image views by a percent offset and re-applying the transforms to the original images. For example, if the initial left image transform is as follows:
for scaling factor S, X/Y rotation angle θ, and translational offsets Tx and Ty, the adjustment transform becomes
where Xscale and Yscale are determined by the desired pixel adjustment relative to the initial transform adjustment, i.e.,
Only in rare occurrences will Yscale be other than zero, and only then as a corrective measure for any noted vertical parallax. Using the altered transform, a new registered image view is created, e.g. the following:
Left′=Tlalt*left—r
Such scaling effectively adds to or subtracts from the parallax for each pixel, effectively moving the point of now parallax forward or backward in the scene. The appropriate scaling is determined by the translational portion of the transform and the required adjustment.
At step 336 of
Since moving an object region in the image may result in a final image that has undefined pixel values, a pixel-fill process is required to ensure that all areas of the resultant image have defined pixel values after object movement. An exemplary procedure for this is described below. Other processes, both more or less complex, may be applied.
The method of
The method of
For objects where motion is indicated and where the motion of an object is below the acceptable disparity threshold, identify the most suitable image to copy the object from, copy the object to the left and right target images and adjust the disparities. The more frames that are captured, the less estimation is needed to determine the rightmost pixel of the right view. Most of occluded pixels can be extracted from the leftmost images. For an object that is moving in and out of the scene between the first and last picture, identify the object and completely remove it from the first picture if there is enough data in the captured sequence of images to fill in the missing pixels.
For objects where motion is indicated and where the motion is above the acceptable disparity, identify the most suitable picture from which to extract the target object and extrapolate the proper disparity information from the remaining captured pictures.
The actual object removal process involves identifying N×N blocks, with N empirically determined, to make up a bounding region for the region of “infinite” parallax, plus an additional P pixels (for blending purposes), determining the corresponding position of those blocks in the other images using the parallax values of the surrounding P pixels that have a similar gradient value (meaning that high gradient areas are extrapolated from similar edge areas and low gradient areas are extrapolated from similar surrounding flat areas), copying the blocks/pixels from the opposite locations to the intended new location, and performing a weighted averaging of the outer P “extra” pixels with the pixel data currently in those positions to blend the edges. If it is determined to remove an object, fill-in data is generated 344. Otherwise, the method proceeds to step 346.
At step 346, the method includes applying 346 color correction to the images. For example, for a plurality of images, a pixel-by-pixel color comparison may be performed to correct lighting changes between image captures. This is performed by using the parallax map to match pixels from Left′ to Right′ and comparing the luminance and chrominance values of those pixels. Pixels with both large luminance and chrominance discrepancies are ignored, assuming occlusion. Pixels with similar luminance and variable chrominance are altered to average their chrominance levels to be the same. Pixels with similar chrominance and variable luminance are altered to average their luminance values to account for lighting and reflection changes.
For a finalized, color corrected, motion corrected stereoscopic image pair, the “Left′” and “Right′” images are ordered and rendered to a display as a stereoscopic image. The format is based on the display parameters. Rendering can require interlacing, anamorphic compression, pixel alternating, and the like.
For a finalized, color corrected, motion corrected stereoscopic image pair, the “Left′” view may be compressed as the base image and the “Right′” image may be compressed as the disparity difference from the “Left′” using a standard video codec, differential JPEG, or the like.
The method of
When a video sequence is captured with lateral camera motion as described above, stereoscopic pairs can be found within the sequence of resulting images. Stereoscopic pairs are identified based on their distance from one another determined by motion analysis (e.g., motion estimation techniques). Each pair represents a three-dimensional picture or image, which can be viewed on a suitable stereoscopic display. If the camera does not have a stereoscopic display, the video sequence can be analyzed and processed on any suitable display device. If the video sequence is suitable for conversion to three-dimensional content (e.g., one or more three-dimensional images), it is likely that there are many potential stereoscopic pairs, as an image captured at a given position may form a pair with images captured at several other positions. The image pairs can be used to create three-dimensional still images or re-sequenced to create a three-dimensional video.
When generating three-dimensional still images, the user can select which images to use from the potential pairs, thereby adjusting both the perspective and parallax of the resulting images to achieve the desired orientation and depth.
Another method of generating a three-dimensional sequence includes generating stereoscopic pairs by grouping the first and last images in the sequence, followed by the second and next-to-last images, and so on until all images have been used. During playback this creates the effect of the camera remaining still while the depth of the scene decreases over time due to decreasing parallax. The three-dimensional images can also be sequenced in the opposite order so that the depth of the scene increases over time.
In the case of still cameras, camera phones, and the like, the present invention facilitates suitable image capture by allowing the detection of critical patterns in the first image and superposing those patterns when capturing subsequent images. Following this method, a pair of images is available that can be manipulated as necessary to render on a three-dimensional-capable display. This might include side-by-side rendering for auto-stereoscopic or polarized displays, interlaced line rendering for polarized displays, or two dimension plus delta rendering for anaglyph displays.
Embodiments of the present invention define a “stereoscopic mode,” which may be used in conjunction with a standard digital still camera, standard video camera, other digital camera, or the like to assist the camera user in performing the function of capturing images that ultimately yield high-quality, three-dimensional images.
The method of
In turn, the near field depth of field (Dn) for an image can be approximated for a given focus distance (d) using the following equation:
(for moderate to large d), and the far field DOF (Df) as
for d<H. For values of d>=H, the far field DOF is infinite.
Since the focus distance, focal length, and aperture are recorded at the time of capture, and the circle of confusion value is known for a given camera sensor format, the closest focused object can be assumed to be at the distance Dn, while the furthest focused pixels are at Df.
In addition to this depth calculation, edge and feature point extraction may be performed on the image to identify interest points for later use. To reduce the complexity of this evaluation, the image may be down-scaled to a reduced resolution before subsequent processing. An edge detection operation is performed on the resultant image, and a threshold operation is applied to identify the most highly defined edges at a given focus distance. Finally, edge crossing points are identified. This point set, IP, represents primary interest points at the focused depth(s) of the image.
The stereoscopic camera assist method then uses the depth values Dn and Df to determine the ideal distance to move right or left between the first and subsequent image captures. The distance to move right or left between the first and subsequent image captures is the position offset. It is assumed that the optimal screen plane is some percentage, P, behind the nearest sharp object in the depth of field, or at
D
s=(Dn*(1+P/100)),
where P is a defined percentage that may be camera and/or lens dependent. At the central point of this plane, an assumed point of eye convergence, there will be zero parallax for two registered stereoscopic images. Objects in front of and behind the screen plane will have increasing amounts of disparity as the distance from the screen increases (negative parallax for objects in front of the screen, positive parallax for object behind the screen).
The value Ds gives the value of R. Hence, the binocular distance indicated to the user to move before the second/last capture is estimated as
Or for default θ=2°, and
for B and Ds measured in inches (or centimeters, or any consistent unit).
The method of
The value S is calculated using the value Ds (converted to mm) and the angle of view (V) for the capture. The angle of view (V) is given by the equation
for the width of the image sensor (W) and the focal length (F). Knowing V and Ds, the width of the field of view (WoV) can be calculated as
WoV=2*Ds*tan(V/2)=Ds*W/F.
The width of view for the right eye capture is the same. Hence, if the right eye capture at the camera is to be offset by the binocular distance B, and the central point of convergence is modeled as B/2, the position of the central point of convergence in each of WoV1 and WoV2 (the width of view of images 1 and 2, respectively) can be calculated. Within WoV1, the central point of convergence will lie at a position
Conversely, within WoV2, the central point of convergence will lie at a position
and X2 is the similar coordinate for the right image to be captured, calculated as
where Pw is the image width in pixels. Finally, S is calculated as
Since W, F, and Pw are camera-specific quantities, the only specified quantity is the modeled convergence angle, θ, as noted typically 1-2 degrees. The value S may need to be scaled for use with a given display, due to the potentially different resolution of the display and the camera sensor.
In the case where guides beyond displacement and vertical alignment are generated (assisting with perspective alignment, rotation prevention, and the prevention of camera toe-in),
To determine the positions for the “alignment guide,” block matching techniques using any common technique (sum of difference, cross correlation, etc.) can be used. In the left image capture, a vertical strip of 8×8 blocks is defined based on xleft=X1r−4 and xright=X1r+3. Block matching can be performed versus the current live-view window image to determine the position of this same feature strip in the live-view window, and the right “alignment guide” can be drawn at the position of best match. The left “alignment guide” can then be drawn based on the known x-axis offset of X11 and X1r in the left image.
In accordance with other embodiments of user alignment assistance, one or more windows 1418 may be displayed which contain different alignment guides 1420 to assist the user in moving the camera for capturing the second image. The windows 1418 may include live views of the scene and alignment guides 1420 that are calculated based on various objects 1422 in the image. A feature may also be available which allows the user to control the zoom factor of one or more windows 1424 in order to improve viewing of the enclosed objects 1426 and alignment guides 1428, thus facilitating camera alignment in accordance with embodiments of the presently disclosed invention.
Note that although the convergent point at a distance Ds should have zero parallax, the individual image captures do not capture the convergent center as the center of their image. To obtain the convergent view, registration of the image pair after capture must be performed.
Referring to
If the camera monitoring feature is activated, the device 100 may analyze the currently viewed image (step 918). For example, in this mode, the device 100 continues to monitor the capture window as the user moves the camera in different positions to capture the second/last picture. The device 100 analyzes the image and determines if an ideal location has been reached and the camera is aligned (step 920). If the ideal location has not been reached and the camera is not aligned, the device 100 may adjust directional feedback relative to its current camera position (step 922). If the ideal location has not been reached and the camera is not aligned, the second image may be captured automatically when the calculated binocular distance is reached as indicated by proper alignment of the region of interest with the current live view data, and any assistance lines, such as those generated by Hough transform (step 924).
Although the camera may be moved manually, the present invention may include a mechanism to automate this process.
At step 1606, the camera 1504 may use optics, focus, depth of field information, user parallax preference, and/or the like to determine position offset for the next image. For example, after the first image is captured, the camera 1504 may communicate feedback information about the movement needed for the second/last shot to the motor controller. The motor 1502 may then move the camera 1504 to a new location along the rails 1506 according to the specified distance (step 1608). When the calculated camera position is reached, the last image may be captured automatically with settings to provide the same exposure as the first image (step 1610). The camera 1504 may then be moved back to the home position (step 1612). Any of the captured images may be used to form stereoscopic pairs used to create three-dimensional images. All of the calculations required to determine the required camera movement distance are the same as those above for manual movement, although the process simplifies since the mount removes the possibility of an incorrect perspective change (due to camera toe-in) that would otherwise have to be analyzed.
Embodiments of the present invention may be implemented by a digital still camera, a video camera, a mobile phone, a smart phone, and the like. In order to provide additional context for various aspects of the present invention,
Generally, however, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular data types. The operating environment 1700 is only one example of a suitable operating environment and is not intended to suggest any limitation as to the scope of use or functionality of the present invention. Other well known computer systems, environments, and/or configurations that may be suitable for use with the invention include but are not limited to, personal computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include the above systems or devices, and the like.
With reference to
The system bus 1708 can be any of several types of bus structure(s) including the memory bus or memory controller, a peripheral bus or external bus, and/or a local bus using any variety of available bus architectures including, but not limited to, 11-bit bus, Industrial Standard Architecture (ISA), Micro-Channel Architecture (MCA), Extended ISA (EISA), Intelligent Drive Electronics (IDE), VESA Local Bus (VLB), Peripheral Component Interconnect (PCI), Universal Serial Bus (USB), Advanced Graphics Port (AGP), Personal Computer Memory Card International Association bus (PCMCIA), and Small Computer Systems Interface (SCSI).
The system memory 1706 includes volatile memory 1710 and nonvolatile memory 1712. The basic input/output system (BIOS), containing the basic routines to transfer information between elements within the computer 1702, such as during start-up, is stored in nonvolatile memory 1712. By way of illustration, and not limitation, nonvolatile memory 1712 can include read only memory (ROM), programmable ROM (PROM), electrically programmable ROM (EPROM), electrically erasable ROM (EEPROM), or flash memory. Volatile memory 1710 includes random access memory (RAM), which acts as external cache memory. By way of illustration and not limitation, RAM is available in many forms such as synchronous RAM (SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), double data rate SDRAM (DDR SDRAM), enhanced SDRAM (ESDRAM), Synchlink DRAM (SLDRAM), and direct Rambus RAM (DRRAM).
Computer 1702 also includes removable/nonremovable, volatile/nonvolatile computer storage media.
It is to be appreciated that
A user enters commands or information into the computer 1702 through input device(s) 1726. Input devices 1726 include, but are not limited to, a pointing device such as a mouse, trackball, stylus, touch pad, keyboard, microphone, joystick, game pad, satellite dish, scanner, TV tuner card, digital camera, digital video camera, web camera, and the like. These and other input devices connect to the processing unit 1704 through the system bus 1708 via interface port(s) 1728. Interface port(s) 1728 include, for example, a serial port, a parallel port, a game port, and a universal serial bus (USB). Output device(s) 1530 use some of the same type of ports as input device(s) 1726. Thus, for example, a USB port may be used to provide input to computer 1702 and to output information from computer 1702 to an output device 1730. Output adapter 1732 is provided to illustrate that there are some output devices 1730 like monitors, speakers, and printers among other output devices 1730 that require special adapters. The output adapters 1732 include, by way of illustration and not limitation, video and sound cards that provide a means of connection between the output device 1730 and the system bus 1708. It should be noted that other devices and/or systems of devices provide both input and output capabilities such as remote computer(s) 1734.
Computer 1702 can operate in a networked environment using logical connections to one or more remote computers, such as remote computer(s) 1734. The remote computer(s) 1734 can be a personal computer, a server, a router, a network PC, a workstation, a microprocessor based appliance, a peer device or other common network node and the like, and typically includes many or all of the elements described relative to computer 1702. For purposes of brevity, only a memory storage device 1736 is illustrated with remote computer(s) 1734. Remote computer(s) 1734 is logically connected to computer 1702 through a network interface 1738 and then physically connected via communication connection 1740. Network interface 1738 encompasses communication networks such as local-area networks (LAN) and wide-area networks (WAN). LAN technologies include Fiber Distributed Data Interface (FDDI), Copper Distributed Data Interface (CDDI), Ethernet/IEEE 1102.3, Token Ring/IEEE 1102.5 and the like. WAN technologies include, but are not limited to, point-to-point links, circuit switching networks like Integrated Services Digital Networks (ISDN) and variations thereon, packet switching networks, and Digital Subscriber Lines (DSL).
Communication connection(s) 1740 refers to the hardware/software employed to connect the network interface 1738 to the bus 1708. While communication connection 1740 is shown for illustrative clarity inside computer 1702, it can also be external to computer 1702. The hardware/software necessary for connection to the network interface 1738 includes, for exemplary purposes only, internal and external technologies such as, modems including regular telephone grade modems, cable modems and DSL modems, ISDN adapters, and Ethernet cards.
The various techniques described herein may be implemented with hardware or software or, where appropriate, with a combination of both. Thus, the methods and apparatus of the disclosed embodiments, or certain aspects or portions thereof, may take the form of program code (i.e., instructions) embodied in tangible media, such as floppy diskettes, CD-ROMs, hard drives, or any other machine-readable storage medium, wherein, when the program code is loaded into and executed by a machine, such as a computer, the machine becomes an apparatus for practicing the invention. In the case of program code execution on programmable computers, the computer will generally include a processor, a storage medium readable by the processor (including volatile and non-volatile memory and/or storage elements), at least one input device and at least one output device. One or more programs are preferably implemented in a high level procedural or object oriented programming language to communicate with a computer system. However, the program(s) can be implemented in assembly or machine language, if desired. In any case, the language may be a compiled or interpreted language, and combined with hardware implementations.
The described methods and apparatus may also be embodied in the form of program code that is transmitted over some transmission medium, such as over electrical wiring or cabling, through fiber optics, or via any other form of transmission, wherein, when the program code is received and loaded into and executed by a machine, such as an EPROM, a gate array, a programmable logic device (PLD), a client computer, a video recorder or the like, the machine becomes an apparatus for practicing the invention. When implemented on a general-purpose processor, the program code combines with the processor to provide a unique apparatus that operates to perform the processing of the present invention.
While the embodiments have been described in connection with the preferred embodiments of the various figures, it is to be understood that other similar embodiments may be used or modifications and additions may be made to the described embodiment for performing the same function without deviating therefrom. Therefore, the disclosed embodiments should not be limited to any single embodiment, but rather should be construed in breadth and scope in accordance with the appended claims.
This is a continuation application which claims the benefit of U.S. patent application Ser. No. 13/865,312, filed Apr. 18, 2013, which claims the benefit of U.S. patent application Ser. No. 12/842,171, which claims the benefit of U.S. provisional patent application No. 61/230,133, filed Jul. 31, 2009, all the disclosures of which are incorporated herein by reference in their entireties. The disclosures of the following U.S. provisional patent applications, commonly owned and simultaneously filed Jul. 31, 2009, are all incorporated by reference in their entirety: U.S. provisional patent application No. 61/230,131; and U.S. provisional patent application No. 61/230,138.
Number | Date | Country | |
---|---|---|---|
61230133 | Jul 2009 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 13865312 | Apr 2013 | US |
Child | 14447578 | US | |
Parent | 12842171 | Jul 2010 | US |
Child | 13865312 | US |