This disclosure relates generally to the field of image processing and, more particularly, to various blending techniques for use in generating wide area-of-view images.
One conventional method to generate a wide area-of-view image from a sequence of images (frames) is illustrated in
The role of blending operation 135 is to mask or obfuscate the differences or transition between two frames. One standard approach to do this uses a process known as “gradient domain” blending and consists of constructing the gradient field of final image 140 by copying the gradient fields of each image on the corresponding sides of the identified seam (e.g., referring to identifier 145, the gradient fields across seam 125 would be gradient field A from frame 1 and gradient field B from frame 2). Once this is done, the final image is generated by integrating over the gradients across the seam. Reconstructing a final wide angle-of-view image from its gradient fields requires substantial computational resources (to solve Poisson partial differential equations); resources that do not permit the real-time generation of wide angle-of-view images on common hand-held devices such as, for example, personal electronic devices having embedded image sensors such as mobile telephones, personal music players, tablet computer systems, and personal gaming devices. Gradient domain blending is also unable to mask registration errors visible along objects that span multiple frames.
Another approach, referred to as “image cross-fading,” masks the transition between two frames by cross-fading pixel values from each frame along the transition seam (e.g., 125 and 130). This generally consists of calculating a weighted average between the corresponding pixel values in the two frames, where the weight given to each pixel decreases smoothly while approaching the seam and vanishes at some distance after passing the seam. For example, the weight given each pixel from frame 1 in region 110 can decrease smoothly from 1 to 0 while crossing seam 125 from left to right. Similarly, the weight given each pixel from frame 2 in region 110 can decrease smoothly from 1 to 0 while crossing seam 125 from right to left. Exactly on seam 125, pixels from both frame 1 and frame 2 will have the same weight, 0.5. Reconstructing a final wide angle-of-view image using image cross-fading techniques can result in both ghosting (manifested by preserving parts of a moving object that is close to a transition seam) and banding artifacts (manifested in smooth areas in the images such as sky, constant color walls and fine textures).
In one embodiment the inventive concept provides a method to blend two images in an operation referred to as “image seam-matching.” The method includes obtaining first and second images (or image slices) and identifying an overlap region between the two, where the overlap region has identified therein a seam and guard-band borders demarcating a transition band. For each seam pixel, a value may be determined based, at least in part, on the corresponding pixels from the first and second images. In one embodiment, initial seam values may be filtered to mitigate the effect of noise. For each row of pixels in the overlap region that are also within the transition band, smoothing functions may be defined. One smoothing function may be applied to those pixels in the first image that are to one side of the row's seam pixel and another smoothing function may be applied to those pixels in the second image that are to the other side of the row's seam pixel. In general, these functions may be selected to smoothly change their respective image's pixels in a manner that smoothly increases/decreases pixel values on either side of the seam through the images' transition band. In another embodiment, image seam-matching may be used in conjunction with other blending operations such as, for example, cross-fading operations. In one embodiment, each row of pixels in the overlap region may have both seam-matching and cross-fading operations applied to them, with the output of the blending operation being the weighted sum of the two approaches. The weighting may be based on a number of factors including, but not limited to, the image's content within the transition band (e.g., whether moving objects exist or whether there are long contiguous objects passing thought the overlap region. In other embodiments, the methods described herein may be implemented via computer executable program code. In still other embodiments the disclosed methods may be implemented in electronic devices having image capture capabilities.
This disclosure pertains to systems, methods, and computer readable media for blending images in an operation referred to as “image seam-matching.” Image seam-matching seeks to make the pixel values in the two images being blended equal along their transition border or seam, and smoothly increases/decreases pixel values on either side of the seam through the images' transition band. Image seam-matching provides many of the benefits of gradient blending including the avoidance of ghosting and banding artifacts, without the associated computational overhead. This makes image seam-matching a particularly useful approach for real-time image processing such as during the real-time generation of wide area-of-view images. In those situations in which image seam-matching is inappropriate, such as when the images being blended include long objects that span an entire overlap region(s), a mechanism is described which allows the selection of either, or both, seam-matching and cross-fading blend operations in a graceful or smooth manner.
In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the inventive concept. As part of this description, some of this disclosure's drawings represent structures and devices in block diagram form in order to avoid obscuring the invention. In the interest of clarity, not all features of an actual implementation are described in this specification. Moreover, the language used in this disclosure has been principally selected for readability and instructional purposes, and may not have been selected to delineate or circumscribe the inventive subject matter, resort to the claims being necessary to determine such inventive subject matter. Reference in this disclosure to “one embodiment” or to “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one implementation of the invention, and multiple references to “one embodiment” or “an embodiment” should not be understood as necessarily all referring to the same embodiment.
It will be appreciated that in the development of any actual implementation (as in any development project), numerous decisions must be made to achieve the developers' specific goals (e.g., compliance with system- and business-related constraints), and that these goals may vary from one implementation to another. It will also be appreciated that such development efforts might be complex and time-consuming, but would nevertheless be a routine undertaking for those of ordinary skill in the design an implementation of image processing systems having the benefit of this disclosure.
Referring to
It will be understood that when generating wide area-of-view images, the surrounding scene may be captured as it would be projected onto an imaginary cylindrical manifold. As such, the individual frames forming the wide area-of-view image must be projected onto this cylindrical manifold before being blended into the final image. Thus, while the precise dimensions of a slice are unimportant (e.g., 205′ or 210′), in some embodiments it may be significant that the slice is much larger in one dimension (e.g., height) than it is in the other dimension (e.g., width). In embodiments in which this holds, the slices may be concatenated to approximate the cylindrical projection of the captured frames. By doing this, cylindrical warping operations may be avoided (a computationally intensive process necessary to compensate for image distortions when large slices or whole frames are registered in accordance with the prior art).
Referring to
When applied to each corresponding pair of pixels (e.g., pixel ‘a’ in overlap region 225 from slice 205′ and the corresponding pixel from slice 210′), the result may be cost map 310. Cost map 310 may be filtered via function g(z) 315 to produce filtered cost map 320. In general, filter g(z) 315 may be used to perturb an otherwise standard path (using, for example, scene-cut techniques) through overlap region 225 so as to introduce a guard-band. More specifically, filter g(z) 315 may be used to place a higher cost on pixels that are close to an object. This has the effect of “pushing the seam away from objects” within overlap region 225. In practice, each of cost function Q(x, y) 305 and filter g(z) 315 may be normalized. That is, the sum of their coefficients may be adjusted to equal one (1).
By way of example, and not limitation,
Once modified cost map 320 has been determined, a minimum cost for a path or seam that traverses overlap region 225 from top to bottom may be determined as follows:
where (xk, yk) represents the coordinates of the k-th seam pixel, and K represents the number of pixels in the seam. Resulting seam 325 represents a path through overlap region 225. Application of filter g(z) 315 acts to create guard-band boundaries 330 and 335.
To ensure a continuous or near continuous seam, the number of pixels seam 325 may skip between two consecutive points may be limited to some specified value. For example, assuming that at row xk seam 325 passes through the point (xk, yk), in the next row (row xk+1), it may be restricted so that it may only pass through one of the points:
((xk+1,yk−L),(xk−1,yk−L+1),□(xk+1,yk+L)), EQ. 2
where L represents the maximum permitted discontinuity between consecutive pixels along seam 325. L may typically take on some small number such as, for example, 1, 2, 3, . . . .
When both a minimum cost and continuity constraints are placed on finding seam 325, the cost of seam 325 up to the k-th point may be given by:
With both the minimum cost seam (e.g., seam 325) and guard-band boundaries known (e.g., boundaries 330 and 335), each pixel from slice 205′ and its corresponding pixel in slice 210′ that are along a row in overlap region 225 and between guard-band boundaries 330 and 335 may be blended on a pixel-by-pixel basis. Illustrative blending operations include, but are not limited to, alpha blending, dissolve blending, multiply and screen type blending, dodge and burn type blending, arithmetic blending, Boolean blending, and hue, saturation and luminosity blending. These blends may be performed in real-time (no gradient reconstruction is required).
In summary, the embodiments disclosed above register and blend images using regions defined by overlapping thin strips (aka slices) extracted from each frame. It is further noted that various embodiments of blend operation 300 may be performed in real-time. These results are both novel and unexpected, especially since it has been recognized in the field of image processing that optimal seam selection algorithms are not generally appropriate when thin strips are taken from the input images as in the case of blend operation 300. (See A. Levin, A. Zomet, S. Peleg, and Y. Weiss, Seamless Image Stitching in the Gradient Domain, Proc. of the European Conference on Computer Vision (ECCV), Prague, May 2004.)
Because some embodiments use only thin slices from each frame, it is highly likely that objects in the scene will span multiple slices. In particular, long, straight objects such as wires, bars and the like may span tens of slices (or more). Maintaining the continuity of these types of objects in the final image is important for providing high quality results. The very use of thin slices, however, make this difficult.
Referring to
As previously discussed, seams that pass through, or are placed immediately adjacent to, a moving object can result in ghosting artifacts in the final image. Scene-cut approaches attempt to avoid this problem by selecting seams that are continuous paths and which go around moving objects and other areas where the two images are different. One novel embodiment of this approach is described above (e.g., see
Referring to
In one embodiment, these difficulties may be tempered by selecting a seam based on both the image content (e.g., in accordance with
Given a pixel (x, y) in overlap region 225, let (x1, y1) represent the coordinates of that pixel in first image I1, and (x2, y2) represent the coordinates of the corresponding pixel in second image I2. In one embodiment, Biased Seam-Cut cost function Qb(x, y) may then be represented as:
Qb(x,y)=B(x)×h(I1(x1,y1),I2(x2,y2)), EQ. 4
where h(I1, I2) may represent a distance measure between pixel values, and B(x) represents a function that biases the shape of the cost function Qb(x, y) toward a minimum value along a vertical axis passing through the middle of the overlap region (e.g., region 225). As illustrated in
In one embodiment, function B(x) can be:
Referring to
Accordingly, when overlapping pixels are similar in accordance with function h( )—meaning that function h( ) returns a small value which, in turn, means there is no moving object present—function B(x) can significantly push up the overall cost the further the overlapping pixels are from the overlap region's centerline. This makes it more likely that the minimum cost seam through the location being evaluated is toward the centerline (where B( ) contributes less). It should be recognized that while function B(x) has been discussed in terms of quadratic function 700, this form is not necessary. Substantially any functional relationship may be used including, but not limited to, linear, exponential, and spines. In general, any function that introduces more cost the further the selected location is from the overlap region's centerline may be useful.
Referring to
In another embodiment, blending operations employing either or both approaches described above may be used in conjunction with a registration quality measure. In one such embodiment, when overlap region 225 is identified a metric indicating the quality of the registration that yielded the overlap may be obtained. If this metric indicates the registration is “good enough” (e.g., the metric is above a specified threshold), operation 300 may proceed. If the metric indicates the registration is not good enough, visual blending operations may not return quality blending results. In this case, device sensor output may be used to estimate the device's translation. This information may then be used to register the two images and identify the overlap region. Because of the uncertainty introduced by the use of sensor output, it has been found that operations 300 ad 800 do not necessarily return better results than an alpha-blend. In one embodiment an alpha-blend may be applied across the entire overlap region. In another embodiment, an alpha-blend may be applied in the neighborhood of a vertical seam passing through the overlap region's centerline.
Combining some of the various embodiments described herein, and referring to
Returning now to block 915, if the registration metric indicates the registration does not meet an acceptable threshold (the “NO” prong of block 915), sensor output may be obtained (block 955) and used to identify an overlap region between the images (block 960). By way of example, accelerometer and/or gyroscopic sensors associated with the image capture device may be used to estimate the amount of overlap between the images. Once this is done, the two images may be combined by being blended across the sensor-identified overlap region (block 965), where after operation 900 continues at block 945. In one embodiment, guard-band operations may not be employed (e.g., in accordance with block 925). In another embodiment, seam continuity constraints may not be applied (e.g., in accordance with block 935). In still another embodiment, the described bias seam-cut approach may not be implemented (e.g., in accordance with block 930).
In another embodiment, an “image seam-matching” technique as disclosed here may be used to blend two images across a seam's transition band. Image seam-matching can provide many of the benefits of gradient blending without the associated computational overhead (e.g., avoidance of ghosting artifacts). This makes image seam-matching a particularly useful approach for real-time image processing in electronic devices that do not have the computational resources to perform real-time gradient blending operations.
In general, image seam-matching seeks to make the pixel values in the two images being blended the same along their transition border (e.g., seam 815) and smoothly increases/decreases pixel values on either side of the seam through the transition band. Because image seam-matching does not combine information from both images at any pixel, ghosting artifacts may be avoided.
Referring to
By way of example (and not to limit the breadth of this disclosure), let pixel 1020's value be VL (e.g., 50) and pixel 1025's value be VR (e.g., 200). Using an averaging operator, the value of the output pixel corresponding to pixels 1020 and 1025 may have a value of Vseam (e.g., 125, the average of VL and VR). To achieve this without introducing visual artifacts in the final image, the pixels in row 1000 from each image within transition band 1005 (i.e., pixel row 1010 from image slice 205′ and pixel row 1015 from image slice 210′), may be smoothly adjusted so as to just equal Vseam (e.g., 125) at seam 815. For the example begun above, left image pixels may be smoothly increased when approaching seam 815 from guard-band boundary 820, and right image pixels smoothly decreased when approaching seam 815 from guard-band boundary 825.
In one embodiment, the increase in pixel values for left image slice 205′ (i.e., pixels in row 1010) may be accomplished by adding a linear function that increases from 0 to a value V1, where V1 is a value that when added to VL, equals Vseam (e.g., 75). Thus, for left image slice 205′, a left image pixel that is at a distance ‘d’ from seam 815 may have its value increased by:
where ‘D’ represents half the width of transition band 1005, and d and V1 are as defined above. In this manner, the value of a pixel from left image slice 205′ that is exactly on seam 815 (i.e., d =0) will become Vseam (V1+VL=Vseam; 75+50=125). Similarly, the pixels in row 1015 from right image slice 210′ may be smoothly decreased in the same way such that, at seam 815 the value of pixel VL, will become Vseam (e.g., 125). It should be noted that the linear function identified in EQ. 6 is merely illustrative. In general, any function may be used (linear or non-linear) so long as it evaluates to zero at d=D and V1 at d=0. It is further noted that whether the selected function increases when moving from guard-band boundary 820 toward the seam (as discussed here), or whether it decreases depends on the value of the seam pixel (Vseam) compared to the from selected image's pixel value (e.g., pixel 1020).
An illustration of this approach may be seen in
To summarize,
It has been found that noise can cause the difference between two adjacent seam pixels to vary widely from pixel-pair to pixel-pair. These fluctuations may generate unwanted visual artifacts in the final output image. To avoid this problem, seam pixels may be filtered before being used, e.g., by a finite-impulse response (FIR) filter. Referring to
In situations where there is a long object that crosses the entire overlap area, there will be no possibility of finding a seam that can avoid cutting such an object. If the two parts of the object are perfectly registered (one in the left image and one in the right image), the difference between their pixel values along the seam should be small and the application of image seam-matching techniques in accordance with this disclosure is appropriate. If the two parts of the object are not correctly registered, there can be some pixel locations along the seam where the difference between the left image's pixel value and the right image's pixel value is large. In such cases, image cross-fading may yield a better result because it can mask large differences due to misalignment. Thus, if the absolute values of the difference between pixel values from the left and right images along the seam are small, image seam-matching is an appropriate technique to blend the two images. If, on the other hand, the absolute values of the difference between pixel values from the left and right images along the seam are large, image cross-fading may yield better results.
Rather than selecting one or the other approach (seam-matching or cross-fading), it has been found that a smooth transition between the two can result in a final image having fewer unwanted artifacts. In one embodiment, this may be provided by assigning a weight ‘a’ to the use of image cross-fading, and a weight (1−α) to the use of image seam-matching, where α[0, 1]. If α=1, only image cross-fading techniques may be used. If α=0, only image seam-matching may be used. For any other value of α, a weighted combination of pixel values in accordance with cross-fading and seam-matching approaches may be applied.
Referring to
Pout=αPcf+(1−α)Psm, EQ. 7
where Pout represents the final or output pixel value, Pcf represents the pixel's cross-fade value, Psm represents the pixel's seam-match value, and α is as described above. Applying EQ. 7 to each pixel results in pixel values for the output image's corresponding pixel row. Once the currently selected row has been processed, a check may be made to determine if additional rows in the overlap region have yet to be processed (block 1430). If at least one row remains to be processed (the “YES” prong of block 1430), a next row is selected (block 1435), where after operation 1400 continues at block 1410. If all rows in the overlap region have been processed (the “NO” prong of block 1430), the overlap region's blend operation is complete.
In one embodiment, weighting factor α may be determined for each pixel row in an overlap region. For example, a value for a may be based on the absolute difference between the pixels in the left and right image at the seam, normalized so that α is between 0 and 1. In another embodiment, α values may be collected (e.g., into an array—one entry for each pixel row in an overlap region) and pre-filtered in a manner like that described above with respect to
Referring now to
Referring to
Processor 1605 may execute instructions necessary to carry out or control the operation of many functions performed by device 1600 (e.g., such as the generation and/or processing of images in accordance with operations in any one or more of
Sensor and camera circuitry 1650 may capture still and video images that may be processed to generate wide angle-of-view images, at least in part, by video codec(s) 1655 and/or processor 1605 and/or graphics hardware 1620, and/or a dedicated image processing unit incorporated within circuitry 1650. Images so captured may be stored in memory 1660 and/or storage 1665. Memory 1660 may include one or more different types of media used by processor 1605, graphics hardware 1620, and image capture circuitry 1650 to perform device functions. For example, memory 1660 may include memory cache, read-only memory (ROM), and/or random access memory (RAM). Storage 1665 may store media (e.g., audio, image and video files), computer program instructions or software, preference information, device profile information, and any other suitable data. Storage 1665 may include one more non-transitory storage mediums including, for example, magnetic disks (fixed, floppy, and removable) and tape, optical media such as CD-ROMs and digital video disks (DVDs), and semiconductor memory devices such as Electrically Programmable Read-Only Memory (EPROM), and Electrically Erasable Programmable Read-Only Memory (EEPROM). Memory 1660 and storage 1665 may be used to retain computer program instructions or code organized into one or more modules and written in any desired computer programming language. When executed by, for example, processor 1605 such computer program code may implement one or more of the methods described herein.
It will also be recognized that operations in accordance with blocks 1415 and 1420 may be performed in any order. It should also be recognized that the identification of blending operation weight factor α may be made after either of the acts identified in blocks 1415 and 1420.
It is to be understood that the above description is intended to be illustrative, and not restrictive. The material has been presented to enable any person skilled in the art to make and use the invention as claimed and is provided in the context of particular embodiments, variations of which will be readily apparent to those skilled in the art (e.g., some of the disclosed embodiments may be used in combination with each other). In addition, it will be understood that some of the operations identified in FIGS. 9 and 13-14 may be performed in different orders. The scope of the invention therefore should be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled. In the appended claims, the terms “including” and “in which” are used as the plain-English equivalents of the respective terms “comprising” and “wherein.”
Number | Name | Date | Kind |
---|---|---|---|
6075905 | Herman et al. | Jun 2000 | A |
6094215 | Sundahl | Jul 2000 | A |
6167404 | Morcos | Dec 2000 | A |
6243103 | Takiguchi | Jun 2001 | B1 |
6304284 | Dunton | Oct 2001 | B1 |
6978052 | Beged-Dov | Dec 2005 | B2 |
7006124 | Peleg | Feb 2006 | B2 |
7409105 | Jin | Aug 2008 | B2 |
7424218 | Baudisch | Sep 2008 | B2 |
7460730 | Pal | Dec 2008 | B2 |
7577314 | Zhou | Aug 2009 | B2 |
7590335 | Kobayashi | Sep 2009 | B2 |
7627225 | Shimosato | Dec 2009 | B2 |
7656428 | Trutna | Feb 2010 | B2 |
7656429 | Larson | Feb 2010 | B2 |
7746404 | Deng | Jun 2010 | B2 |
7796871 | Park | Sep 2010 | B2 |
7844130 | Dong | Nov 2010 | B2 |
7912337 | Souchard | Mar 2011 | B2 |
8121809 | Mealy | Feb 2012 | B2 |
8285079 | Robertson | Oct 2012 | B2 |
8310522 | Jeong | Nov 2012 | B2 |
8311355 | Brunner | Nov 2012 | B2 |
8379054 | Katayama | Feb 2013 | B2 |
20020126913 | Kotake | Sep 2002 | A1 |
20040066449 | Givon | Apr 2004 | A1 |
20040155968 | Cheatle | Aug 2004 | A1 |
20040201705 | Lin | Oct 2004 | A1 |
20040233274 | Uyttendaele | Nov 2004 | A1 |
20050168593 | Akizuki | Aug 2005 | A1 |
20060114363 | Kang | Jun 2006 | A1 |
20060115181 | Deng | Jun 2006 | A1 |
20060215930 | Terui | Sep 2006 | A1 |
20060224997 | Wong | Oct 2006 | A1 |
20060268130 | Williams | Nov 2006 | A1 |
20060291747 | Peterson | Dec 2006 | A1 |
20070019882 | Tanaka | Jan 2007 | A1 |
20070025723 | Baudisch | Feb 2007 | A1 |
20070081081 | Cheng | Apr 2007 | A1 |
20070097266 | Souchard | May 2007 | A1 |
20070236513 | Hedenstroem | Oct 2007 | A1 |
20070237421 | Luo | Oct 2007 | A1 |
20070237423 | Tico | Oct 2007 | A1 |
20070258656 | Arabi | Nov 2007 | A1 |
20080056612 | Park | Mar 2008 | A1 |
20080309772 | Ikeda | Dec 2008 | A1 |
20090021576 | Linder | Jan 2009 | A1 |
20090058989 | Kim | Mar 2009 | A1 |
20090190803 | Neghina | Jul 2009 | A1 |
20090208062 | Sorek | Aug 2009 | A1 |
20090231447 | Paik | Sep 2009 | A1 |
20090244404 | Park | Oct 2009 | A1 |
20100053303 | Hayashi | Mar 2010 | A1 |
20100054628 | Levy | Mar 2010 | A1 |
20100097442 | Lablans | Apr 2010 | A1 |
20100141737 | Li | Jun 2010 | A1 |
20100165087 | Corso | Jul 2010 | A1 |
20100188579 | Friedman | Jul 2010 | A1 |
20100309336 | Brunner | Dec 2010 | A1 |
20100328512 | Davidovici | Dec 2010 | A1 |
20110043604 | Peleg et al. | Feb 2011 | A1 |
20110058015 | Moriyama | Mar 2011 | A1 |
20110110605 | Cheong | May 2011 | A1 |
20110116767 | Souchard | May 2011 | A1 |
20110129126 | Begeja | Jun 2011 | A1 |
20110141227 | Bigioi et al. | Jun 2011 | A1 |
20110141300 | Stec et al. | Jun 2011 | A1 |
20110157386 | Ishii | Jun 2011 | A1 |
20110216156 | Bigioi | Sep 2011 | A1 |
20110234750 | Lai | Sep 2011 | A1 |
20110267544 | Mei | Nov 2011 | A1 |
20110304688 | Ge | Dec 2011 | A1 |
20120076358 | Meadow et al. | Mar 2012 | A1 |
20120133639 | Kopf | May 2012 | A1 |
20120155786 | Zargarpour et al. | Jun 2012 | A1 |
20120169840 | Yamashita et al. | Jul 2012 | A1 |
20120229595 | Miller | Sep 2012 | A1 |
20120263397 | Kimura | Oct 2012 | A1 |
20120274739 | Li | Nov 2012 | A1 |
20120314945 | Cha et al. | Dec 2012 | A1 |
20130004100 | Putraya | Jan 2013 | A1 |
20130033568 | Kim | Feb 2013 | A1 |
20130063555 | Matsumoto | Mar 2013 | A1 |
20130236122 | Drouot | Sep 2013 | A1 |
Number | Date | Country |
---|---|---|
0592136 | Apr 1994 | EP |
1940152 | Dec 2006 | EP |
2018049 | Jan 2009 | EP |
2009290827 | Dec 2009 | JP |
9951027 | Oct 1999 | WO |
2004049257 | Jun 2004 | WO |
2006048875 | May 2006 | WO |
2009094661 | Jul 2009 | WO |
2010025309 | Mar 2010 | WO |
2011033968 | Mar 2012 | WO |
Entry |
---|
Xiong et al. “Fast Panorama Stitching for High-Quality Panoramic Images on Mobile Phones”. IEEE Transactions on Consumer Electronics, vol. 56, No. 2, May 2010. pp. 298-306. |
U.S. Appl. No. 13/109,875, filed May 17, 2011, Bhogal. |
U.S. Appl. No. 13/109,878, filed May 17, 2011, Doepke. |
U.S. Appl. No. 13/109,883, filed May 17, 2011, Doepke. |
U.S. Appl. No. 13/109,889, filed May 17, 2011, Doepke. |
U.S. Appl. No. 13/109,941, filed May 17, 2011, Doepke. |
U.S. Appl. No. 13/151,149, filed Jun. 1, 2011, Doepke. |
U.S. Appl. No. 13/489,950, filed Jun. 6, 2012, Tico. |
U.S. Appl. No. 13/490,183, filed Jun. 6, 2012, Tico. |
U.S. Appl. No. 13/911,243, filed Jun. 6, 2013, Doepke. |
‘Panoramic Image Projections’, http://www.cambridgeincolour.com/tutorials/image-projections.htm, 9 pages, May 12, 2011. |
‘Photo Stitching Digital Panoramas’, http://www.cambridgeincolour.com/tutorials/digital-panoramas.htm, 11 pages, May 12, 2011. |
‘Using Photo Stitching Software’, http://www.cambridgeincolour.com/tutorials/photo-stitching-software.htm, 9 pages, May 12, 2011. |
International Search Report and Search Opinion for PCT Application No. PCT/US2012/033010, Dated Jun. 19, 2012, 9 pages. |
Joshi, Neei, et al., ‘Image Deblurring using Inertial Measurement Sensors’, ACM SIGGRAPH, New York, NY, 8 pages, Jul. 2010. |
PCT Search Report and Search Opinion for PCT Application No. PCT/US2012/034625, dated Jul. 31, 2012, 10 pages. |
“Method of Adaptive Image Blending and Artifacts Masking for Panorama Creation.” Apple Inc. Camera Algorithm Team, Technical Report TR-2012-001. |
“Rendering by Manifold Hopping.” Submitted to Siggraph '2001, Paper No. 194, Catgory: research. pp. 1-10. |
Cha, Joon-Hyuk, et al., “Seamless and Fast Panoramic Image Stitching,” 2012 IEEE International Conference on Consumer Electronics (ICCE), pp. 29-30. |
Efros, Alexei. “Image Blending and Compositing.” Computational Photography, CMU, Fall 2010. pp. 1-82. |
Levin, Anat, Assaf Zomet, Shmuel Peleg and Yair Weiss. “Seamless Image Stitching in the Gradient Domain.” Proc. of the European Conference on Computer Vision (ECCV). Prague. May 2004. pp. 1-12. |
McCann, James, Nancy S. Pollard. “Real-Time Gradient-Domain Painting.” Computer Science Department, http://repository.cmu.edu/compsci/1257. |
Perez, P., Gangnet, M., and Blake, A., ‘Poisson Image Editing,’ ACM Transactions on Graphics (TOG) Proceedings of ACM SIGGRAPH 2003, vol. 22, iss. 3, pp. 313-318, Jul. 2003. |
Yingen Xiong and Kari Pulli, “Fast Panorama Stitching for High-Quality Panoramic Images on Mobile Phones,” IEEE Transactions on Consumer Electronics, vol. 56, pp. 298-306 (2010). |
Number | Date | Country | |
---|---|---|---|
20130329002 A1 | Dec 2013 | US |