Static Image Filtering on Commodity Graphics Processors

Slides:



Advertisements
Similar presentations
Lecture 12 Reduce Miss Penalty and Hit Time
Advertisements

CS Spring 2009 CS 414 – Multimedia Systems Design Lecture 4 – Digital Image Representation Klara Nahrstedt Spring 2009.
RealityEngine Graphics Kurt Akeley Silicon Graphics Computer Systems.
Week 11 - Wednesday.  Image based effects  Skyboxes  Lightfields  Sprites  Billboards  Particle systems.
Real-Time Rendering TEXTURING Lecture 02 Marina Gavrilova.
Rasterization and Ray Tracing in Real-Time Applications (Games) Andrew Graff.
(conventional Cartesian reference system)
GPU-Based Frequency Domain Volume Rendering Ivan Viola, Armin Kanitsar, and Meister Eduard Gröller Institute of Computer Graphics and Algorithms Vienna.
SIFT on GPU ( the slides are not updated for newer versions of SiftGPU ) Changchang Wu 5/8/2007.
3D Graphics Processor Architecture Victor Moya. PhD Project Research on architecture improvements for future Graphic Processor Units (GPUs). Research.
IN4151 Introduction 3D graphics 1 Introduction to 3D computer graphics part 2 Viewing pipeline Multi-processor implementation GPU architecture GPU algorithms.
Lecture 1: Images and image filtering
Page 1 CS Department Parallel Design of JPEG2000 Image Compression Xiuzhen Huang CS Department UC Santa Barbara April 30th, 2003.
The FFT on a GPU Graphics Hardware 2003 July 27, 2003 Kenneth MorelandEdward Angel Sandia National LabsU. of New Mexico Sandia is a multiprogram laboratory.
CS443: Digital Imaging and Multimedia Filters Spring 2008 Ahmed Elgammal Dept. of Computer Science Rutgers University Spring 2008 Ahmed Elgammal Dept.
Hardware-Based Nonlinear Filtering and Segmentation using High-Level Shading Languages I. Viola, A. Kanitsar, M. E. Gröller Institute of Computer Graphics.
Image Analysis Preprocessing Arithmetic and Logic Operations Spatial Filters Image Quantization.
GPU Graphics Processing Unit. Graphics Pipeline Scene Transformations Lighting & Shading ViewingTransformations Rasterization GPUs evolved as hardware.
Post-rendering Cel Shading & Bloom Effect
Harris Corner Detector on FPGA Rohit Banerjee Jared Choi : Parallel Computer Architecture and Programming.
Image Processing1 Image Filtering Filtering can be use to enhance some features and de- enhance others. Usually used as a pre-processing step.
Image Processing.  a typical image is simply a 2D array of color or gray values  i.e., a texture  image processing takes as input an image and outputs.
Neighborhood Operations
Ray Tracing and Photon Mapping on GPUs Tim PurcellStanford / NVIDIA.
1 Introduction to Computer Graphics with WebGL Ed Angel Professor Emeritus of Computer Science Founding Director, Arts, Research, Technology and Science.
Spatial Filtering: Basics
Chris Kerkhoff Matthew Sullivan 10/16/2009.  Shaders are simple programs that describe the traits of either a vertex or a pixel.  Shaders replace a.
COMP 261 Lecture 16 3D Rendering. input: set of polygons viewing direction direction of light source(s) size of window. output: an image Actions rotate.
Interactive Time-Dependent Tone Mapping Using Programmable Graphics Hardware Nolan GoodnightGreg HumphreysCliff WoolleyRui Wang University of Virginia.
CS 450: COMPUTER GRAPHICS REVIEW: INTRODUCTION TO COMPUTER GRAPHICS – PART 2 SPRING 2015 DR. MICHAEL J. REALE.
Seeram Chapter #3: Digital Imaging
Tone Mapping on GPUs Cliff Woolley University of Virginia Slides courtesy Nolan Goodnight.
CSC508 Convolution Operators. CSC508 Convolution Arguably the most fundamental operation of computer vision It’s a neighborhood operator –Similar to the.
Autonomous Robots Vision © Manfred Huber 2014.
CSCI 440.  So far we have learned how to  build shapes  create movement  change views  add simple lights  But, our objects still look very cartoonish.
CSE 6367 Computer Vision Image Operations and Filtering “You cannot teach a man anything, you can only help him find it within himself.” ― Galileo GalileiGalileo.
Ray Tracing using Programmable Graphics Hardware
Image Processing A Study in Pixel Averaging Building a Resolution Pyramid With Parallel Computing Denise Runnels and Farnaz Zand.
The Graphics Pipeline Revisited Real Time Rendering Instructor: David Luebke.
Ray Tracing by GPU Ming Ouhyoung. Outline Introduction Graphics Hardware Streaming Ray Tracing Discussion.
Canny Edge Detection Using an NVIDIA GPU and CUDA Alex Wade CAP6938 Final Project.
Machine Vision Edge Detection Techniques ENT 273 Lecture 6 Hema C.R.
: Chapter 5: Image Filtering 1 Montri Karnjanadecha ac.th/~montri Image Processing.
CSE 185 Introduction to Computer Vision Image Filtering: Spatial Domain.
Fast and parallel implementation of Image Processing Algorithm using CUDA Technology On GPU Hardware Neha Patil Badrinath Roysam Department of Electrical.
How to use a Pixel Shader CMT3317. Pixel shaders There is NO requirement to use a pixel shader for the coursework though you can if you want to You should.
A novel approach to visualizing dark matter simulations
Spatial Image Enhancement
Basic Principles Photogrammetry V: Image Convolution & Moving Window:
COMPUTER GRAPHICS CHAPTER 38 CS 482 – Fall 2017 GRAPHICS HARDWARE
- Introduction - Graphics Pipeline
Hiba Tariq School of Engineering
Week 11 - Wednesday CS361.
Image Deblurring and noise reduction in python
Combining Edges and Points for Interactive High-Quality Rendering
SIFT on GPU Changchang Wu 5/8/2007.
Graphics Processing Unit
Convolution (FFT) Bloom
The Graphics Rendering Pipeline
CS451Real-time Rendering Pipeline
Introduction to Computer Graphics with WebGL
9th Lecture - Image Filters
Sorting and Searching Tim Purcell NVIDIA.
Motion illusion, rotating snakes
Kenneth Moreland Edward Angel Sandia National Labs U. of New Mexico
Ray Tracing on Programmable Graphics Hardware
RADEON™ 9700 Architecture and 3D Performance
CS703 - Advanced Operating Systems
Image Processing 고려대학교 컴퓨터 그래픽스 연구실 kucg.korea.ac.kr.
Image Filtering with GLSL
Presentation transcript:

Static Image Filtering on Commodity Graphics Processors Peter Djeu May 1, 2003

Filters from Computer Vision Mean (a.k.a. average) filter each element in a neighborhood is given equal weight; a simple image smoother Gaussian a neighborhood is weighted by a 2-D Gaussian, with the peak at the center; a better image smoother Laplacian of Gaussian The Gaussian filter is applied, and then the Laplacian (spatial derivative is applied); good for edge detection

The Convolution Kernel 16 26 41 1 161 We want to transmit pixel information from neighbors to a central pixel Use the convolution kernel as a window to frame the work that needs to be done

Filtering on a CPU vs. a GPU sequential and straightforward GPU not so straightforward if the goal is to exploit parallelism and maintain good locality a pixel’s output value depends on the weighted value of it’s neighbors, so there is dependency across various elements

Pixel Buffers in GPUS GPU’s do not have indirect addressing to memory, so results have to be stored in pixel buffers. The card is really rendering to an off-screen frame (writing). The GPU can then treat the Pixel Buffer as a texture for rendering (reading).

Proposal for the GPU Algorithm 1. Store original into pb1. 2. For each element ki in the convolution kernel { 3. Copy pb1 into pb2, scaling by ki in the process (use Cg shader). 4. Based on the location of ki, render pb2 into pb3 with a certain offset. The blending is a single add. } 5. return pb3

The Ups and Downs This technique may be fast because… parallelism is completely possible during the scaling stage and the blending since most convolution kernels have symmetry, a little bit of preprocess could mean On the other hand… as image size grows, cache misses may become more prominent, since we manipulate the whole image when translating, coords. are interpolated, not mapped Tiling? Can a good size be determined in exp.?

Current Progress P-Buffer’s are frustrating wglReleasePbufferDCARB() returning type PFNWGLRELEASEPBUFFERDCARBPROC Lot’s of low level implementation / debugging, very much on a hardware level (Naïve) CPU implementation is complete and working, and P-Buffers are almost done

Results (in real-time sec’s) CPU, Gaussian Filter, w/ RGB, 24 bit targa’s x y 5 x 5 11 x 11 31 x 31 Quake 256 0.4 1.5 10.5 Fruit 512 480 1.4 5.4 41.7 Ruins03 735 485 2.0 7.8 59.7

Time (s) versus Kernel Size (elts)

Time(s) versus Image Size (x*y) using a (31 x 31) kernel

Applications? Super fast filtering techniques on 2-D images may provide tools or insight for traditionally more complex problems involving 2-D images, like categorization / classification