The present application relates generally to photography and more particularly to an improved digital camera and method that provides a desirable motion blur effect.
When shooting action scenes, such as sports, photographers make an artistic decision regarding shutter speed. A fast shutter speed can freeze the action in clear, sharp detail. A slower shutter speed will show some “motion blur” for the faster moving objects or people in the scene. Sometimes the photographer chooses a shutter speed such that the fast-moving objects (e.g. ball, baseball bat, arm throwing a ball, etc) are somewhat blurred, but the relatively stationary objects (including the subject's face) are sharp. A properly chosen shutter speed can provide a sense of the motion in the scene while still providing sharp detail for most of the scene.
Additionally, with the use of a flash, there are additional options for the action photographer. By choosing a shutter speed long enough to show some motion blur and by setting the flash to occur at the end of the duration in which the shutter is open (sometimes known as “rear-curtain sync” or “second curtain sync”), the photo can have motion blur that appears to trail a fairly clear image of the object in motion.
A camera according to several embodiments and an image processing method provide the ability to provide trailing motion blur without a flash. A flash is not always suitable or appropriate in a particular setting. The flash can be disruptive to other spectators or the participants in the activity being photographed. The action may be outside where it is too bright or the action is too far to effectively use the flash for rear-curtain sync motion blur effect.
Several embodiments of the present invention provide the trailing motion blur effect without a flash, but with novel hardware arrangements. Other embodiments provide this effect with standard (or at least available) hardware, but with novel software. It is also contemplated that the disclosed novel hardware and software could have other uses and could provide effects other than trailing motion blur.
In one embodiment, a variable light-transmissive filter is positioned in front of an image sensor. While the light-transmissive property of the filter is lower, the blurred image of the object in motion is produced during a longer period of exposure. The light-transmissive property of the filter is increased toward the end the exposure in order to produce a clearer image of the object at the end of the exposure.
In a method, a plurality of images taken in rapid succession are combined to produce a clear image of the object with a trailing blurred image of the object.
In another embodiment, a smartphone includes a first camera configured to provide a first image of an object at a first exposure time and a second camera configured to provide a second image of the object at a second exposure time shorter than the first exposure time. The smartphone further includes a processor programmed to combine the first image and the second image to generate a final image having a motion blur of the object trailing a clearer image of the object in the final image.
Although shown in greatly simplified form, these components are intended to be as is generally known with the exception of the control of the aperture 14. In
Thus for an exposure during which the desired motion blur input function 22 is selected by the user, the moving object (such as a ball, car or person) will be moving during the initial, longer period in which the aperture is open a lesser amount, creating a blur in the image received by CCD 18. During the period in which the aperture is opened wider, more light is being passed onto CCD 18 in a much shorter period of time, so a clearer, brighter, higher-contrast image of the object appears at the end of the blurred portion of the image. As known with rear-curtain sync, this provides the desirable effect of a clear image of the object with motion blur trailing behind the object.
In operation, when the desired motion blur effect is selected by the user, the CCDs 18 are set to different sensitivities (e.g. ISO settings) and the shutters 16 are set to different shutter speeds that correspond to their respectively associated CCDs 18 (i.e. the slower shutter speed would have a lower ISO setting and the faster shutting speed would have a higher ISO setting). One shutter 16 is set to a slower shutter speed and the other shutter 16 is set to a much faster shutter speed. Again, the amplification of the light is set in each of the CCDs 18 to provide a good image from each shutter 16. The slower shutter 16 is open for the entire exposure and the faster shutter 16 is open only at the very end of the exposure, with both shutters closing again simultaneously (or nearly so). Alternatively, the slower shutter 16 closes during the time that the faster shutter 16 is open.
Two images are thus provided to the image processor. A first image from the slower shutter 16 provides motion blur of the object in motion. The second image provides a sharp, higher-contrast image of the object in motion, positioned at the end of the motion blur of the object in the first image. The image processor 20 combines the two images to provide a single image with the desired effect of the motion blur trailing behind the clear, high-contrast image of the object. This level of image combination is well-known and is provided by several existing in-camera processors.
Alternatively, instead of adjusting the amplification of the CCDs 18 differently, a neutral density filter could be provided in the light path of the slower shutter 16 (between the prism 30 and the shutter 16 or between the shutter 16 and the CCD 18). The neutral density filter is preferably at least several full stops (e.g. three full stops). An electronically adjustable neutral density filter could also be provided so that the difference in shutter speeds between the two shutters 16 can be adjustable (either by the user or automatically by a computer processor).
A camera system 10B according to a third embodiment of the present invention is shown schematically in
Additionally, in this embodiment is provided a second shutter 38 that is in the form of a lens cap or lens filter, such that it snap-fits or is threaded (or otherwise connected) to the front of the lens 12. The second shutter 38 is also connected by a cable 40 to the existing external flash connector 42 (“hot shoe”) of the camera (e.g. via a battery pack 44 mounted to the connector 42). The second shutter 38 may report itself to the camera 50 through the connector 42 as an external flash. As far as the camera 50 (and its internal computer processor) is aware, the camera 50 is connected to an external flash (which is actually the second shutter 38). The second shutter 38 is an electronically adjustable neutral density filter that is capable of changing from a highly-filtered state to a non-filtered (or minimally filtered) state very rapidly. The second shutter 38 may function similarly to an electronic shutter, except that it allows some light to pass through it when “closed” instead of no light. Thus, when the camera 10B takes its exposure readings, it takes it through the multiple-stop neutral density filter of the second shutter 38 (e.g. a three-stop or four-stop neutral density filter). The user selects the existing rear-curtain sync function on the camera (e.g. via a menu on a rear display of the camera). Since the camera 10B believes it is connected to an external flash, the camera 10B sets a relatively long shutter speed to capture some motion blur and then fires the “flash,” which in this case actually operates the second shutter 38 to open at the end of the exposure, thus increasing the light by multiple stops. This provides the desired motion blur effect, with the blurred image of the object trailing behind the clear, high-contrast image of the object.
This embodiment of the camera 10B has the advantage that it is provided as an accessory to be used with existing cameras. Several embodiments are described below that can be provided solely with existing camera hardware solely with image processing software, either on-camera or on a computer after the images are transferred to the computer. Of course, combinations of the above-described hardware and below-described software could also be used, not only for trailing motion blur but for other effects as well.
In another embodiment, the motion blur effect (or other effects) is provided by taking multiple images (such as from
It is common in digital photography for images to be stored as a series of numbers arranged in an array, such that each pixel of the image is given a number value assigned to its location in the image. The number values correlate to particular color hues, with all available color hues having distinct number values. When the image number array is referenced for display, the appropriate color hue associated with each number value will be displayed at the corresponding pixel location, and the image will be faithfully recreated.
It is important to note that in actual digital photography, three separate arrays may be used to store the color value of the image pixels, correlated to each pixel's value in either the red, green, or blue primary light color spectrum. Also, what is referred to color hue above may encompass a combination of a color's hue, tint, shade, brightness, lightness, colorfulness, chroma, and/or saturation. The techniques of this method apply not just to color images but to black and white or monochromatic images as well, as the color value of each pixel can be stored as a number value in an array correlated to that pixel's value in a monochromatic scheme.
The specific details of the qualities associated with an image's color palette are not important to this method, beyond the understanding that digital images can be stored as an arrayed series of numbers correlating to pixel values, and those values can be manipulated to change the appearance of the original image.
This method relies on the ability to photograph a series of images taken in rapid succession. Many modern digital cameras already possess this ability, and when the photos are taken of a moving body the resulting images will differ from one another only in the amount that the subject moved across the viewing angle. Stated more simply, when laid side-by-side the individual images would resemble pages torn from a flipbook animation, as the differences between successive images may be slight but the difference between the first and last may be greater.
It may also be possible to create the image series necessary for this method by utilizing individual frames from a video source. If conventional movie film were used, then successive frames could be stored as a digital images and the collection of those digital images could be used for this method. If digital video were to be used for this method, then screen shots from successive moments in time could be used as the required digital images.
Any single digital image can be stored as a two-dimensional array, image1[x][y], with each pixel's number value being associated to that pixel's position in the image at row x and column y. For a series of images each could be stored as its own two-dimensional array, image1[x][y], image2[x][y], image3[x][y], etc., or the series could be stored with each image being in its own z position in a three-dimensional array, imageseries[x][y][1], imageseries[x][y][2], imageseries[x][y][3], etc. For simplification of describing the algorithms involved in this method the series of images will be referred to in this manner as a three-dimensional array, with the general nomenclature of array1[x][y][z].
An example of how an image can be stored as an array is shown in
The first step in the method is to execute a “smear function”. The output of the smear function will be an entirely new single image array which when recreated for viewing will appear to have a crisp recreation of all pixels common to the images in the series, along with a blending of the pixels whose number values change from image to image. The intensity of this blending can be adjusted within the smear function by the use of a variable hereto known as the “smear factor”. In general, the output image array of the smear function, hereto known as the “smeared array”, would resemble a photographic image taken with a long exposure.
The basic structure of the smear function is based on an iterative loop sequence which compares the corresponding pixel number values of successive images in the series and writes a number value to the smeared array in the same pixel location. If a pixel number value in a particular location of one image array is equal to the corresponding pixel number value in the same location of the next successive image in the series, then that same number value will be written to the same location in the smeared array. If the pixel number values differ in the same location between successive image arrays, then one or the other of the compared pixel number values will be written to the smeared array. In this case, the choice of which pixel number value to write to the smeared array is dependent on a selection algorithm within the smear function. One algorithmic method for making this choice is to use a simple counter, hereto known as the “smear counter”, that increases with each loop iteration, and the decision on which pixel number value to write to the smeared array is made by the referencing the value of the counter and using it in a decision function (for example, if the counter is even select the value from the former image in the series, and if it is odd select the value from the latter).
After the first loop iteration compares the first and second images of the series, an initial smeared array will be created that contains all of the common pixels of those two images along with a blending of the pixels which do not match. If the loop sequence were continued solely as described in the above paragraph, then with each successive comparison of two sequential image arrays the altered pixel number values in the preexisting smeared array could be overwritten by the selection algorithm. This would have the net effect of only comparing the last two images in the series. To resolve this issue and ensure that the smeared array contains pixel number values from each image in the series, the smear function has to keep track of which pixel locations in the smeared array have been chosen by the selection algorithm to be different from the pixel number values of the former of the images in the sequence, and it has to ensure that those specific pixel locations cannot be further changed by the smear function. This can be achieved by adding an additional dimension to each member of the smeared array or by creating an extra array parallel to the smeared array, whose values tell the selection algorithm whether a particular pixel location is to be protected from further alteration, hereto known as the “protection array”.
For example, a basic smear function loop sequence may look like this:
array1[24][48][14]—Acts as a series of 14 two-dimensional arrays, each having 24 rows and 48 columns
In this case, 12 images are being read into the program to be compared, each of which has 24 pixel rows and 48 pixel columns (per the conventions of the C programming language, zero is an available element location. These 12 images will be saved in locations array1[x][y][0] through array1[x][y][11])
The 13th array will contain values which denote whether a specific pixel location in the smeared array is to be protected from further alteration (the protection array in location array1[x][y][12])
The 14th will be the output array of the smear function (the smeared array in location array1[x][y][13])
In the above example, each iteration of the “for (z=1; z<13; z++)” loop acts as a comparator of two successive images in the series at locations array1[x][y][z] and array1[x][y][z−1] for all x values (0-23) and y values (0-47). In this case, array1[x][y][z−1] is the former of the images in the series and array1[x][y][z] is the latter. For each [x][y] location in the smeared array (array1[x][y][13]), the value will be equal to that of the former of the images in the series unless each of three conditions is met:
1. The pixel number values are not equal in the same [x][y] location for the two compared image arrays (array1[x][y][z] !=array1[x][y][z−1]). This is the most basic element of the smear array, as it checks to see if the corresponding pixel number values between successive image arrays differ.
2. The counter function is equal to a particular value (a==1). A smear counter is incorporated in the “for (y=0; y<48; y++)” loop sequence in the form of an if-then-else statement (if (a==sf) a=1; else a=a+1;). This simply adds 1 to the value of a until a equals the value of sf (the smear factor) at which point the value of a is reset to 1. If the smear factor is given the value of 1, then the conditional statement a==1 would be true in every case and when the first two images of the series are compared all of the differing pixel number values of the latter image would be written to the smeared array and none of the former image pixel number values would be seen in the smeared array. If the smear factor is given a value of 2, then when the first two images of the series are compared every other differing pixel number value would be selected from the former image and then the latter image. If low smear factor values like 1 or 2 are used, then as the smear function progresses through successive images in the series fewer of the latter image pixel number values would be written to the smeared array and the resulting image would have an uneven blending which favors the earlier images in the series. By having the ability to change the smear factor, the smear function can be adapted to give the most desired blending for the images in the series. In the case above, a smear factor of 5 is used. Thus, for every 5 dissimilar corresponding pixel number values, only one is written to the smeared array (presuming it meets the other selection criteria).
3. The pixel location protection array is not equal to a particular value (array1[x][y][12] !=10). Earlier in the program, all of the values in the protection array are set to the arbitrary value of 4. So when the first two images of the series are compared, all dissimilar corresponding pixel number values are available to be written to the smeared array. An example of the smeared array after one iteration of the smear function is shown in
As the code is written in the above smear function, the pixel number values from the former image will always be written to the smear array unless there is a value of 10 for a particular location in the protection array (
The example smear function above uses ascending loop sequences, and thus the images in the series are compared to one another in ascending order. Additionally, the individual pixel number values are compared in an ascending order from the first row to the last and the first column to the last. If only this one basic smear function is used, it is likely that geometric patterns will emerge in the blended areas of the smeared array image because of the iterative nature of the function.
One method to alleviate possible recognizable patterning of the smeared array would be to use a series of smear functions, with each one comparing the successive images in different orders of ascending and descending loop sequences. For example, in the above example the rows of successive image arrays are compared in ascending order from 0 to 23 using the “for (x=0; x<24; x++)” algorithm. This could be changed to a “for (x=23; x>=0; x−−)” algorithm and the rows would be compared in descending order from 23 to 0. When applied to the three for loops in the smear function (x, y, and z counters), alternating the sequence of ascending and descending linear counters would allow for eight separate distinct smear functions. By combining the results of all, or any number, of these individual smear functions into one single smeared array, variations of geometric patterns could be achievable in the smeared array image (presumably from unnoticeable to very noticeable).
Conceivably, the loops used to step through the comparisons of pixel array values would not necessarily have to progress in a linear nature (ie., 1, 2, 3, as done by the x++ operator), but they could progress in an order dictated by a mathematical function or additional algorithm. This may be done to save processing time or memory storage requirements, or to further alleviate geometrical patterning in the smeared array.
Another way to alleviate geometrical patterning in the smeared array may be to use a varying smear factor value rather than a constant. It is possible that the smear factor value could be the product of a mathematical function or additional algorithm that references properties of the images themselves. This again could be done to save processing time or memory storage requirements.
In the smear function methods described above, images are compared to one another in order of succession and the function determines which pixel number values to output to the smeared array. With this first step through the smear function an initial smeared array is created and it grows closer to an accurate blending of all images in the series with each image comparison. It may also be possible to achieve the same or similar effect not by comparing successive images, but by comparing each image to the smeared array as it develops though each iteration.
Regardless of the exact algorithms, the process performed by the smear array can be summed up into three parts: 1. Compare corresponding pixels between images in a series, 2. Decide which pixels should be represented in the final aggregate image, and 3. Ensure that as the process carries out, the pixels intended to remain the aggregate image are unaltered.
The second step in this method for simulating second curtain sync is to overlay a clear image of the moving objet(s) on top of the smeared array, hereto known as the “(final position) overlay function”. As mentioned before the smeared array would appear just like a photograph taken with long exposure when recreated as an image, and thus it would not yet give a clear view of the moving object(s) in its final position. For example, although many of the pixels representing the moving body in
The way that this method creates the final position image overlay is by comparing the pixel number values of the final image in a series to those of two other image arrays within the series. In order to reproduce a clear image of a moving subject the overlay function cannot perform any kind of blending or smearing of pixel number values. Therefore it is critical to the method that all of the pixel number values associated with the moving subject in its final photographed position be written to the array associated with the final “second curtain sync” image, hereto known as the “overlaid array”.
Because a function looking for differences between two arrays will only be able to identify different pixel number values but not actually know which preceded which in the movement of an object, it would not work to simply compare the last image of a series to the first and keep the differing pixel number values from the latter image. That would not only give a clear view of the object in its last position, but it would also write background pixels from the final image over the pixels from the first position and any other pixels in the smeared array that were blended over the original position of the object. However, by comparing the final image to two other images in the series and only keeping the pixels from the final image that are different than both, the overlay function will only keep the pixel number values from the moving object(s) in its final position. Presumably, the overlay function would be most effective if comparing the final image in a series to the most dissimilar images possible from it and one another. So, it would likely be best to compare the final image to the first and one closest to the middle of the series (ie. for a 9 image series, compare image 9 to images 1 and 5).
For example, a basic overlay function loop sequence may look like this:
In the above example, each iteration of the “for (x=1; x<24; x++)” loop acts as a very simple comparator of the last image in the series to the first and one near the middle of the series, for all x values (0-23) and y values (0-47). When it recognizes that a pixel number value on the last image of the series (
In both the smear function and overlay function described above, pixel number values are compared to identify if they are precisely equal. In actual use, it may be necessary to apply a “variation factor” which would in effect add a tolerance to the pixel number value comparisons. Because of the slight variations that may exist between images of the same subject taken in rapid succession, it's possible that individual pixel number values may differ slightly in spite of representing the same object. By having a tolerance in the value comparisons, it may be possible to counteract those slight variations in an effective manner.
Further, in the functions as previously described, pixel number values are individually compared between successive images. It is conceivable that groups of pixel number values could be compared with each loop step rather than just two, in an effort to either save processing time or data storage requirements.
As previously stated, the processing methods described above made use of a single 3 dimensional array and all number values required were stored in that array. It is possible that a series of 2 dimensional arrays could be used in similar fashion, with each image being represented as a single 2 dimensional array. Further, the smeared array, protection array, and overlaid array would each be represented as a 2 dimensional array.
It is further conceivable that the methods described above could be used to compare a series of 3 dimensional images. To achieve this, each image could be stored as a 3 dimensional array and the series of arrays compared to one another with the use of additional comparison loops in the smear and overlay functions to account for the extra dimension of the images. Or, the series of images could be stored in a single 4 dimensional array with 4th dimensional values being used to designated each individual image array and the smeared, protection, and overlaid arrays.
Conceivably, it would be possible to use two separate image capture devices (cameras) to create the desired second curtain sync effect. The first camera could capture a series of still images of a moving object, while a second camera captures a long exposure image of the same object for the same period of time. Instead of using the resultant of the smear function process, the overlay function could actually overwrite the long exposure image with specific pixels chosen from the last image in the series from the first camera.
The method as described above will generate an image with the second curtain sync effect. Variations of this same method could be used to generate other photographic effects. For example, if the overlay function is changed to give priority to the first image in the series so that pixel number values correlating to the moving object in its original position are written to the overlaid array rather than those from its final position, then the resulting image will show a clear view of the object in its original position and a blurred representation of the object leading to its final position. This will be the equivalent of a first curtain sync effect. By adjusting the overwriting priority of the overlay function to other images in the series, additional effects could be produced where a blurred representation of the moving object trails both behind and in front of a clear view of the object in the middle of its range of movement. Similarly, the overlay function could be run multiple times with overwrite priority given to different images in the series each time. The resulting image could show clear views of the moving object in multiple positions along its path of movement, with blurred representations of the object joining them.
Another interesting variation of this method could be created by continuing to display the smeared array image as the smear function progresses. The resulting display would appear like a video of a moving objet(s) but only as a blurred representation of the object as it moves. If an overlay function were utilized to produce a clear view of the moving object(s) in its final position, then the resulting video would appear to show the object(s) streaking to that position. Conceivably, a similar method could be used to show a clear view of a moving object(s) in its original position with a blurred representation of the object progressing toward its direction of travel. A combination of methods could create a video that shows an object(s) in a clear first position, a blurred representation of the object moving in the direction of motion, and then a clear view of the object in its final position.
An optional slider control 140 is provided to adjust the blur speed (e.g. in terms of exposure time or shutter speed), which will depend on the speed of the subject 134 in motion. The user may want a blur that is smaller than the size of the subject 134 or the user may want a blur that is several times larger than the size of the subject 134.
In capturing an image, when trailing blur is selected by the user, the shutter speeds of the cameras 120, 122 are set to different speeds (e.g. one is at least ⅔ stop to 2 stops faster). As explained above with respect to
The shutter of the wide-angle camera 120 is open beginning when the user presses the shutter release (e.g. either the GUI button 126 or the hardware button 128), and the telephoto lens camera 122 is open toward the end of that exposure. The shutters of both cameras 120, 122 may close simultaneously or nearly so to provide complete or significant overlap of the two images. Alternatively, the shutter of the wide angle lens camera 120 closes during the time that the shutter of the telephoto lens camera 122 is open to provide only partial overlap.
The two images are then provided to the processor 118. A first image from the longer exposure wide-angle lens camera 120 provides motion blur of the subject 134 in motion. The second image from the short-exposure telephoto lens camera 122 provides a sharp, higher-contrast image of the subject 134 in motion, positioned near the end of the motion blur of the subject 134 in the first image. The processor 118 may automatically combine the two images to provide a single image with the desired effect of the motion blur trailing behind the clear, high-contrast image of the subject 134. Since the telephoto image will cover less area than the wide-angle image, only a portion of the wide-angle image will be used. The processor 118 aligns the overlapping portion of the wide-angle image with the telephoto image (for example, based upon the positions of the background objects 136). The processor 118 may automatically identify the highly-blurred portion of the long-exposure image and only combine the motion blur of the subject 134 with the telephoto image and ignore any sharp portions of the long-exposure image (including background objects 136). This may all be performed automatically by the processor 118. Alternatively, the user can exercise some control over the combination of the two images as explained in
Alternatively, the background of the final image may be provided from the slower exposure camera and the sharp image of the subject 134 only may be taken from the faster exposure image. In this manner, the wide-angle camera 120 could provide both the background and the blurred image of the subject 134. The processor 118 may automatically find the edges of the clear image of the subject 134 in the faster exposure image and take only the clear image of the subject 134 from the faster exposure image. The clear image of the subject 134 can then be added over the slower exposure image, either fully automatically, or with some user input, as described with respect to
Alternatively, the wide-angle camera 120 can be set to the faster shutter speed (and correspondingly higher ISO and/or lower f-stop) and the shutter speed of the telephoto lens camera 122 can be set to a slower shutter speed (and correspondingly lower ISO and/or higher f-stop), although the motion of the subject 134 would have to be in the smaller field of view of the telephoto camera 122. Again, the ISOs and/or apertures in each camera 120, 122 may be automatically adjusted to provide a proper exposure. Alternatively, the ISO and apertures settings in the longer exposure camera (in this example, the telephoto lens camera 122) may be ⅓ to 1⅔ stops below ideal exposure to provide a darker blur. Once again, either the blur may be copied into the faster exposure image, or the sharp image of the subject 134 can be copied into the slower exposure image.
As yet another alternative, the camera providing the fast shutter speed exposure may capture a first image immediately when the user presses the shutter release in addition to the fast shutter speed exposure at the end of the slower shutter speed exposure. This initial “background image” can have an even faster shutter speed than the one for obtaining the sharp image of the subject (by also raising ISO and/or lowering the f-stop). The background image can be used to capture an image that is all or mostly background, without the subject 134 or at least while the subject 134 is not overlapping the later sharp image of the subject 134. This background image can be used by the processor 118 to identify and locate the edges of the subject 134 in the fast shutter speed exposure in its final position. This is particularly useful in the optional implementation where the background is provided from the slower exposure camera and only the image of the subject is taken from the faster exposure image.
Referring to
In a tool section 144 of the screen 140, the user may choose which layer (or both) to edit independently by toggling a layer button 146. The user can then touch a contrast button 148, opacity button 150 or exposure button 152 and then use the slider bar 154 to adjust the corresponding aspect of the selected layer (or both). When the user is done with the adjustments and selections, the user can save the final combined image to the photo database in the storage 116 on the smartphone 112.
Referring again to
For example, the user may choose a sharp image of the subject 134 from the end of the long exposure to obtain a trailing blur or a sharp image of the subject 134 from the beginning of the long exposure for a front-curtain sync effect. Alternatively, the user could choose a sharp image from the middle, but choose to only expose the portion of the blur image trailing that image. Alternatively the user could choose more than one sharp image to display in the final image and choose to have trailing motion blur behind each sharp image. When the user is done with the adjustments and selections, the user can save the final combined image to the photo database in the storage 116 on the smartphone 112.
The burst images could also be used as described above. Specifically, the background from some of the earlier images in the burst can be used to help find the subject and the edges of the subject in the later images in the burst.
In accordance with the provisions of the patent statutes and jurisprudence, exemplary configurations described above are considered to represent a preferred embodiment of the invention. However, it should be noted that the invention can be practiced otherwise than as specifically illustrated and described without departing from its spirit or scope. Alphanumeric identifiers on method steps are for convenient reference in dependent claims and do not signify a required sequence of performance unless otherwise indicated in the claims.
Number | Date | Country | |
---|---|---|---|
61878265 | Sep 2013 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 14488238 | Sep 2014 | US |
Child | 15434973 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 15946945 | Apr 2018 | US |
Child | 17194628 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 15434973 | Feb 2017 | US |
Child | 15946945 | US |