Image Compositing and Blending15-463: Computational PhotographyAlexei Efros, CMU, Fall 2007© NASAImage CompositingCompositing Procedure1. Extract Sprites (e.g using Intelligent Scissors in Photoshop)Composite by David Dewey2. Blend them into the composite (in the right order)Just replacing pixels rarely worksProblems: boundries & transparency (shadows)Binary maskTwo Problems:Semi-transparent objectsPixels too largeSolution: alpha channelAdd one more channel:• Image(R,G,B,alpha)Encodes transparency (or pixel coverage):• Alpha = 1: opaque object (complete coverage)• Alpha = 0: transparent object (no coverage)• 0<Alpha<1: semi-transparent (partial coverage)Example: alpha = 0.3Partial coverage or semi-transparencyAlpha BlendingalphamaskIcomp= αIfg+ (1-α)IbgshadowMultiple Alpha BlendingSo far we assumed that one image (background) is opaque. If blending semi-transparent sprites (the “A over B” operation):Icomp= αaIa+ (1-αa)αbIbαcomp= αa+ (1-αa)αbNote: sometimes alpha is premultiplied: im(αR,αG,αB,α):Icomp= Ia+ (1-αa)Ib(same for alpha!)Alpha Hacking…No physical interpretation, but it smoothes the seamsFeathering0101+=Encoding as transparencyIblend= αIleft+ (1-α)IrightSetting alpha: simple averagingAlpha = .5 in overlap regionSetting alpha: center seamAlpha = logical(dtrans1>dtrans2)DistancetransformSetting alpha: blurred seamAlpha = blurredDistancetransformSetting alpha: center weightingAlpha = dtrans1 / (dtrans1+dtrans2)DistancetransformGhost!Affect of Window Size01leftright01Affect of Window Size0101Good Window Size01“Optimal” Window: smooth but not ghostedWhat is the Optimal Window?To avoid seams• window = size of largest prominent featureTo avoid ghosting• window <= 2*size of smallest prominent featureNatural to cast this in the Fourier domain• largest frequency <= 2*size of smallest frequency• image frequency content should occupy one “octave” (power of two)FFTWhat if the Frequency Spread is WideIdea (Burt and Adelson)• Compute Fleft= FFT(Ileft), Fright= FFT(Iright)• Decompose Fourier image into octaves (bands)–Fleft= Fleft1+ Fleft2+ …• Feather corresponding octaves Fleftiwith Frighti– Can compute inverse FFT and feather in spatial domain• Sum feathered octave images in frequency domainBetter implemented in spatial domainFFTOctaves in the Spatial DomainBandpass ImagesLowpass ImagesPyramid Blending010101Left pyramid Right pyramidblendPyramid Blendinglaplacianlevel4laplacianlevel2laplacianlevel0left pyramid right pyramid blended pyramidLaplacian Pyramid: BlendingGeneral Approach:1. Build Laplacian pyramids LA and LB from images A and B2. Build a Gaussian pyramid GR from selected region R3. Form a combined pyramid LS from LA and LB using nodes of GR as weights:• LS(i,j) = GR(I,j,)*LA(I,j) + (1-GR(I,j))*LB(I,j)4. Collapse the LS pyramid to get the final blended imageBlending RegionsHorror Photo© david dmartin (Boston College)Results from this class (fall 2005)© Chris CameronSeason Blending (St. Petersburg)Season Blending (St. Petersburg)Simplification: Two-band BlendingBrown & Lowe, 2003• Only use two bands: high freq. and low freq.• Blends low freq. smoothly• Blend high freq. with no smoothing: use binary alphaLow frequency (λ > 2 pixels)High frequency (λ < 2 pixels)2-band BlendingLinear Blending2-band BlendingGradient DomainIn Pyramid Blending, we decomposed our image into 2ndderivatives (Laplacian) and a low-res imageLet us now look at 1stderivatives (gradients):• No need for low-res image – captures everything (up to a constant)• Idea: – Differentiate– Blend– ReintegrateGradient Domain blending (1D)TwosignalsRegularblendingBlendingderivativesbrightdarkGradient Domain Blending (2D)Trickier in 2D:• Take partial derivatives dx and dy (the gradient field)• Fidle around with them (smooth, blend, feather, etc)• Reintegrate– But now integral(dx) might not equal integral(dy)• Find the most agreeable solution– Equivalent to solving Poisson equation– Can use FFT, deconvolution, multigrid solvers, etc.Perez et al., 2003Perez et al, 2003Limitations:• Can’t do contrast reversal (gray on black -> gray on white)• Colored backgrounds “bleed through”• Images need to be very well alignededitingDon’t blend, CUT!So far we only tried to blend between two images. What about finding an optimal seam?Moving objects become ghostsDavis, 1998Segment the mosaic• Single source image per segment• Avoid artifacts along boundries– Dijkstra’s algorithmmin. error boundaryMinimal error boundaryoverlapping blocks vertical boundary__==22overlap errorGraphcutsWhat if we want similar “cut-where-things-agree” idea, but for closed regions?• Dynamic programming can’t handle loopsGraph cuts (simple example à la Boykov&Jolly, ICCV’01)n-linkssta cuthard constrainthard constraintMinimum cost cut can be computed in polynomial time(max-flow/min-cut algorithms)Kwatra et al, 2003Actually, for this example, DP will work just as well…Lazy SnappingInteractive segmentation using graphcutsPutting it all togetherCompositing images/mosaics• Have a clever blending function– Feathering– Center-weighted– blend different frequencies differently– Gradient based blending• Choose the right pixels from each image– Dynamic programming – optimal seams– Graph-cutsNow, let’s put it all together:• Interactive Digital Photomontage, 2004
View Full Document