Course Evaluations 4 Random Individuals will win an ATI Radeon tm HD2900XT.

Slides:



Advertisements
Similar presentations
Image Processing. Overview ImagesPixel Filters Neighborhood Filters Dithering.
Advertisements

CSCE 643 Computer Vision: Template Matching, Image Pyramids and Denoising Jinxiang Chai.
Accelerating Spatially Varying Gaussian Filters Jongmin Baek and David E. Jacobs Stanford University.
A Fast Approximation of the Bilateral Filter using a Signal Processing Approach Sylvain Paris and Frédo Durand Computer Science and Artificial Intelligence.
Computational Photography Prof. Feng Liu Spring /06/2015.
Gaussian KD-Tree for Fast High-Dimensional Filtering A. Adams, N. Gelfand, J. Dolson, and M. Levoy, Stanford University, SIGGRAPH 2009.
Filtering CSE P 576 Larry Zitnick
6/9/2015Digital Image Processing1. 2 Example Histogram.
Image Filtering CS485/685 Computer Vision Prof. George Bebis.
1 Image filtering Hybrid Images, Oliva et al.,
Computer Vision Introduction to Image formats, reading and writing images, and image environments Image filtering.
1 Image filtering Images by Pawan SinhaPawan Sinha.
Linear filtering.
1 Image filtering Hybrid Images, Oliva et al.,
September 25, 2014Computer Vision Lecture 6: Spatial Filtering 1 Computing Object Orientation We compute the orientation of an object as the orientation.
Geometry-driven Diffusion.
Most slides from Steve Seitz
A Gentle Introduction to Bilateral Filtering and its Applications Limitation? Pierre Kornprobst (INRIA) 0:20.
CSCE 441: Computer Graphics Image Filtering Jinxiang Chai.
Fast Bilateral Filtering
Tone mapping with slides by Fredo Durand, and Alexei Efros Digital Image Synthesis Yung-Yu Chuang 11/08/2005.
A Gentle Introduction to Bilateral Filtering and its Applications 08/10: Applications: Advanced uses of Bilateral Filters Jack Tumblin – EECS, Northwestern.
Recursive Bilateral Filtering F Reference Yang, Qingxiong. "Recursive bilateral filtering." ECCV Deriche, Rachid. "Recursively implementating.
September 10, 2012Introduction to Artificial Intelligence Lecture 2: Perception & Action 1 Boundary-following Robot Rules 1  2  3  4  5.
High dynamic range imaging. Camera pipeline 12 bits8 bits.
Machine Vision ENT 273 Image Filters Hema C.R. Lecture 5.
Kartic Subr Cyril Soler Frédo Durand Edge-preserving Multiscale Image Decomposition based on Local Extrema INRIA, Grenoble Universities MIT CSAIL.
CS448f: Image Processing For Photography and Vision Fast Filtering Continued.
A Gentle Introduction to Bilateral Filtering and its Applications How does bilateral filter relates with other methods? Pierre Kornprobst (INRIA) 0:35.
Lecture 03 Area Based Image Processing Lecture 03 Area Based Image Processing Mata kuliah: T Computer Vision Tahun: 2010.
Image Processing Edge detection Filtering: Noise suppresion.
EECS 274 Computer Vision Segmentation by Clustering II.
Image Enhancement [DVT final project]
Digital Image Processing Lecture 10: Image Restoration March 28, 2005 Prof. Charlene Tsai.
A Gentle Introduction to Bilateral Filtering and its Applications Sylvain Paris – MIT CSAIL Pierre Kornprobst – INRIA Odyssée Jack Tumblin – Northwestern.
Computer Vision Spring ,-685 Instructor: S. Narasimhan Wean 5403 T-R 3:00pm – 4:20pm.
Chapter 5: Neighborhood Processing
Linear filtering. Motivation: Noise reduction Given a camera and a still scene, how can you reduce noise? Take lots of images and average them! What’s.
Digital Image Processing Lecture 10: Image Restoration
A Gentle Introduction to Bilateral Filtering and its Applications 07/10: Novel Variants of the Bilateral Filter Jack Tumblin – EECS, Northwestern University.
A Gentle Introduction to Bilateral Filtering and its Applications 10/10: Conclusions Jack Tumblin – EECS, Northwestern University.
Tone mapping Digital Visual Effects, Spring 2007 Yung-Yu Chuang 2007/3/13 with slides by Fredo Durand, and Alexei Efros.
Linear filtering. Motivation: Image denoising How can we reduce noise in a photograph?
Instructor: Mircea Nicolescu Lecture 5 CS 485 / 685 Computer Vision.
CSE 185 Introduction to Computer Vision Image Filtering: Spatial Domain.
Images and Filters CSEP 576 Ali Farhadi Many slides from Steve Seitz and Larry Zitnick.
Non-linear filtering Example: Median filter Replaces pixel value by median value over neighborhood Generates no new gray levels.
Filters– Chapter 6. Filter Difference between a Filter and a Point Operation is that a Filter utilizes a neighborhood of pixels from the input image to.
Spatial Image Enhancement
CPSC 6040 Computer Graphics Images
Digital Image Processing Lecture 10: Image Restoration
Image Deblurring and noise reduction in python
Image Processing and Reconstructions Tools
A Gentle Introduction to Bilateral Filtering and its Applications
Filtering – Part I Gokberk Cinbis Department of Computer Engineering
A Gentle Introduction to Bilateral Filtering and its Applications
A Computational Darkroom for Black-and-White Photography
Computer Vision Lecture 16: Texture II
Image filtering Images by Pawan Sinha.
Lecture 3 (2.5.07) Image Enhancement in Spatial Domain
9th Lecture - Image Filters
Digital Visual Effects, Spring 2006 Yung-Yu Chuang 2006/3/8
Most slides from Steve Seitz
Non-local Means Filtering
Department of Computer Engineering
Intensity Transformation
HALO-FREE DESIGN FOR RETINEX BASED REAL-TIME VIDEO ENHANCEMENT SYSTEM
Most slides from Steve Seitz
Image Filtering with GLSL
Presentation transcript:

Course Evaluations 4 Random Individuals will win an ATI Radeon tm HD2900XT

A Gentle Introduction to Bilateral Filtering and its Applications From Gaussian blur to bilateral filter – S. Paris Applications – F. Durand Link with other filtering techniques – P. Kornprobst Implementation – S. Paris Variants – J. Tumblin Advanced applications – J. Tumblin Limitations and solutions – P. Kornprobst BREAK

A Gentle Introduction to Bilateral Filtering and its Applications Recap Sylvain Paris – MIT CSAIL

input smoothed (structure, large scale) residual (texture, small scale) edge-preserving: Bilateral Filter Decomposition into Large-scale and Small-scale Layers

Weighted Average of Pixels spacerange normalization space range p q Depends on spatial distance and intensity difference – Pixels across edges have almost influence

A Gentle Introduction to Bilateral Filtering and its Applications Efficient Implementations of the Bilateral Filter Sylvain Paris – MIT CSAIL

Outline Brute-force Implementation Separable Kernel [Pham and Van Vliet 05] Box Kernel [Weiss 06] 3D Kernel [Paris and Durand 06]

Brute-force Implementation For each pixel p For each pixel q Compute 8 megapixel photo: 64,000,000,000,000 iterations! V E R Y S L O W ! More than 10 minutes per image

Complexity Complexity = how many operations are needed, how this number varies S = space domain = set of pixel positions | S | = cardinality of S = number of pixels – In the order of 1 to 10 millions Brute-force implementation:

Better Brute-force Implementation Idea: Far away pixels are negligible For each pixel p a. For each pixel q such that || p – q || < cte s looking at all pixels looking at neighbors only

Discussion Complexity: Fast for small kernels: s ~ 1 or 2 pixels BUT: slow for larger kernels neighborhood area

Outline Brute-force Implementation Separable Kernel [Pham and Van Vliet 05] Box Kernel [Weiss 06] 3D Kernel [Paris and Durand 06]

Separable Kernel Strategy: filter the rows then the columns Two cheap 1D filters instead of an expensive 2D filter [Pham and Van Vliet 05]

Discussion Complexity: – Fast for small kernels (<10 pixels) Approximation: BF kernel not separable – Satisfying at strong edges and uniform areas – Can introduce visible streaks on textured regions

input

brute-force implementation

separable kernel mostly OK, some visible artifacts (streaks)

Outline Brute-force Implementation Separable Kernel [Pham and Van Vliet 05] Box Kernel [Weiss 06] 3D Kernel [Paris and Durand 06]

Box Kernel Bilateral filter with a square box window The bilateral filter can be computed only from the list of pixels in a square neighborhood. [Weiss 06] [Yarovlasky 85] box window restrict the sum independent of position q

Box Kernel Idea: fast histograms of square windows [Weiss 06] input: full histogram is known update: add one line, remove one line Tracking one window

Box Kernel Idea: fast histograms of square windows [Weiss 06] input: full histograms are known update: add one line, remove one line, add two pixels, remove two pixels Tracking two windows at the same time

Discussion Complexity: – always fast Only single-channel images Exploit vector instructions of CPU Visually satisfying results (no artifacts) – 3 passes to remove artifacts due to box windows (Mach bands) 1 iteration 3 iterations

input

brute-force implementation

box kernel visually different, yet no artifacts

Outline Brute-force Implementation Separable Kernel [Pham and Van Vliet 05] Box Kernel [Weiss 06] 3D Kernel [Paris and Durand 06]

3D Kernel Idea: represent image data such that the weights depend only on the distance between points [Paris and Durand 06] pixel intensity pixel position 1D image Plot I = f ( x ) far in range close in space

1 st Step: Re-arranging Symbols Multiply first equation by W p

1 st Step: Summary Similar equations No normalization factor anymore Dont forget to divide at the end

2 nd Step: Higher-dimensional Space p space range Product of two Gaussians = higher dim. Gaussian

2 nd Step: Higher-dimensional Space p space range 0 almost everywhere, I at plot location

2 nd Step: Higher-dimensional Space p 0 almost everywhere, I at plot location Weighted average at each point = Gaussian blur

2 nd Step: Higher-dimensional Space p 0 almost everywhere, I at plot location Weighted average at each point = Gaussian blur Result is at plot location

higher dimensional functions Gaussian blur division slicing Higher dimensional Homogeneous intensity Higher dimensional Homogeneous intensity New num. scheme: simple operations complex space

higher dimensional functions Gaussian convolution division slicing D O W N S A M P L E U P S A M P L E Heavily downsampled Strategy: downsampled convolution Conceptual view, not exactly the actual algorithm

Actual Algorithm Never compute full resolution – On-the-fly downsampling – On-the-fly upsampling 3D sampling rate =

Pseudo-code: Start Input – image I – Gaussian parameters s and r Output: BF [ I ] Data structure: 3D arrays wi and w (init. to 0 )

Pseudo-code: On-the-fly Downsampling For each pixel – Downsample: – Update: D O W N S A M P L E U P S A M P L E [ ] = closest int.

Pseudo-code: Convolving For each axis,, and – For each 3D point Apply a Gaussian mask ( 1, 4, 6, 4, 1 ) to wi and w e.g., for the x axis: wi(x) = wi(x-2) + 4.wi(x-1) + 6.wi(x) + 4.wi(x+1) + wi(x+2) D O W N S A M P L E U P S A M P L E

Pseudo-code: On-the-fly Upsampling For each pixel – Linearly interpolate the values in the 3D arrays D O W N S A M P L E U P S A M P L E

Discussion Complexity: Fast for medium and large kernels – Can be ported on GPU [Chen 07] : always very fast Can be extended to color images but slower Visually similar to brute-force computation number of pixels number of 3D cells | R | : number of gray levels

input

brute-force implementation

3D kernel visually similar

Running Times separable kernel 3D kernel box kernel brute force

How to Choose an Implementation? Depends a lot on the application. A few guidelines: Brute-force: tiny kernels or if accuracy is paramount Box Kernel: for short running times on CPU with any kernel size, e.g. editing package 3D kernel: – if GPU available – if only CPU available: large kernels, color images, cross BF (e.g., good for computational photography)

Questions ?