Parallel Edge Detection Daniel Dobkin Asaf Nitzan.

Post on 26-Dec-2015

214 views 0 download

Tags:

transcript

Parallel Edge Detection

Daniel DobkinAsaf Nitzan

Introduction to Image Processing What are edges? Why do we need to find

them? How do we find them? Motivation to parallelize this process OpenMP implementation

We’ll talk about…

2-D / 3-D array of pixels Color channels

RGB – 3 channels Grayscale – 1 channel

1 byte per channel values of 0-255

What is an image?

A closer look at pixels

R = 225G = 157B = 168

R = 201G = 120B = 137

Edges

A sharp change in values of adjacent pixels

Motivation to find edges A very basic feature in image

processing

First, convert image from RGB to Grayscale

Convolve the image with a special 2-D operator

A greater change in intensity indicates a more prominent edge

Sobel operator:

Finding Edges

217

221

44

213

13 2

24 3 2

Finding Edges - Example

For Sobel x filter: -617 For Sobel y filter: -669

So now we have 2 numbers, now what? We calculate the magnitude and the orientation of the

gradient:

Large amount of computations 800 x 600 pixels = 480,000 pixels 5.5 million

additions, 2 million multiplications Especially when it comes to real-time

video… 24 fps = 11.5 million pixels 132 million

additions, 48 million multiplications…

Motivation to Parallelize

Processors access same shared memory Each processor performs the region of image

assigned to him Reduced communication - There is no need to

broadcast the pixels of the image to all other processors

openMP

A

B

C

D

openMP Implementation

A

B

C

D

Master thread

Master thread

Parallel task – Sobel filtering

fork join

Multithreading Master thread forks a number of threads which

execute code in parallel

Original Image

Load Image from Main memoryAllocate memory to new imageSet number of threads#pragma omp parallel for \

shared(inputImage, outputImage, width, height)\private(StartPixel, NumOfThreads, Rank , xPixel, yPixel)for each Pixel in region

Convert RGB value to greyscaleCompute gradient using Sobel filter Store result in filtered image

Join all threadsStore new image to disk

Pseudocode

openMP Implementation

A

B

C

D

Original ImageProcessor 1

Processor 2

Processor 3

Processor 4

Sobel

Sobel

Sobel

Sobel

A

B

C

D

Filtered Image

Main Memory

Speedup Graph

Linear Speedup due to low communication cost

http://www.cs.rit.edu/~ptt/courses/4003-531/