GPU Implementation of Satellite
 Image Filtering using OpenCL
             Institute for Geoinformatics
 Advanced processing of geospatial data- GPU, Grid and
                   Cloud computing
                Ermias Beyene Tesfamariam
                       15 July 2010
Objective
• Efficient edge detection method for remote
  sensing imageries.

• implementation of image filtering on
  programmable GPU using the openCL language

• Comparison of different algorithms (Sobel vs.
  Laplacian) for their efficiency and quality
Application
• The HOST executes the code written as usual,
  using C++.

• The DEVICES execute OpenCL code.

• Use specific OpenCL compiler for the CPU & for
  the GPU (ATI Stream).

• The OpenCL API has functions to identify devices,
  compile programs, send and receive information
  and run OpenCL program on the chosen device.
Application
OpenCL Code:
 1 - Create the OpenCL code using OpenCL
 language;

Host Code:
 2 - Create program using C++;
 3 - Import the data to be processed;
 4 - Use the OpenCL API to transfer data to the
 devices;
 5 - Use the OpenCL API to call executions;
 6 - Retrieve processed data.
Main OpenCL API Commands
• Memory allocation via API
   – clCreateBuffer



• Accessing device memory via API
   – clEnqueueWriteBuffer

   – clEnqueueReadBuffer
Method
• Landsat imageries
  – Bands with high contrast, e.g. Band 4
• Image Convolution
  – 3X3 Filtering Mask convolves over the image




• Sobel Algorithm

• Laplacian Algorithm
Sobel Filter
• 2-D anisotropic measure of the 1st spatial
  derivative of an image.
Sobel filter
• consists of two kernels (Masks) which detect
  horizontal and vertical changes in an image
• The 3x3 Sobel kernels are:
  – Horizontal



  – Vertical
Sobel filter
Laplacian filter
  2-D isotropic measure of the 2nd spatial
  derivative of an image.
Sobel Filter Output Image
Sobel Filter Output Image
GPU vs CPU performance
Sobel Filter




Laplacian Filter
Open Issue
• Applying Image smoothing and contrast
  enhancement before/during filtering
Gpu implementation of satellite image filtering

Gpu implementation of satellite image filtering

  • 1.
    GPU Implementation ofSatellite Image Filtering using OpenCL Institute for Geoinformatics Advanced processing of geospatial data- GPU, Grid and Cloud computing Ermias Beyene Tesfamariam 15 July 2010
  • 2.
    Objective • Efficient edgedetection method for remote sensing imageries. • implementation of image filtering on programmable GPU using the openCL language • Comparison of different algorithms (Sobel vs. Laplacian) for their efficiency and quality
  • 3.
    Application • The HOSTexecutes the code written as usual, using C++. • The DEVICES execute OpenCL code. • Use specific OpenCL compiler for the CPU & for the GPU (ATI Stream). • The OpenCL API has functions to identify devices, compile programs, send and receive information and run OpenCL program on the chosen device.
  • 4.
    Application OpenCL Code: 1- Create the OpenCL code using OpenCL language; Host Code: 2 - Create program using C++; 3 - Import the data to be processed; 4 - Use the OpenCL API to transfer data to the devices; 5 - Use the OpenCL API to call executions; 6 - Retrieve processed data.
  • 5.
    Main OpenCL APICommands • Memory allocation via API – clCreateBuffer • Accessing device memory via API – clEnqueueWriteBuffer – clEnqueueReadBuffer
  • 6.
    Method • Landsat imageries – Bands with high contrast, e.g. Band 4 • Image Convolution – 3X3 Filtering Mask convolves over the image • Sobel Algorithm • Laplacian Algorithm
  • 7.
    Sobel Filter • 2-Danisotropic measure of the 1st spatial derivative of an image.
  • 8.
    Sobel filter • consistsof two kernels (Masks) which detect horizontal and vertical changes in an image • The 3x3 Sobel kernels are: – Horizontal – Vertical
  • 9.
  • 10.
    Laplacian filter 2-D isotropic measure of the 2nd spatial derivative of an image.
  • 12.
  • 13.
  • 14.
    GPU vs CPUperformance Sobel Filter Laplacian Filter
  • 15.
    Open Issue • ApplyingImage smoothing and contrast enhancement before/during filtering