Object Oriented Framework for CUDA based Image Processing

chemistoddΤεχνίτη Νοημοσύνη και Ρομποτική

6 Νοε 2013 (πριν από 3 χρόνια και 11 μήνες)

71 εμφανίσεις


Object Oriented Framework for
CUDA based Image Processing

組員名單
:

P76004588


徐華煊

P76004423

曾郁凱

P76014216

吳品頡





Keywords
:
Object
oriented
framework, CUDA,

design patterns,
image processing

Pritam

Prakash

Shete
,
Venkat

P. P.
K.,
Dinesh M.
Sarode
,
Mohini

Laghate
,
S. K.
Bose
& R. S.
Mundada
,

Bhabha

Atomic Research Centre, Mumbai, India

International
Conference on Communication, Information & Computing Technology (ICCICT
)
Oct.
19
-
20,2012,
Mumbai, India

1

1. Introduction


Compute Unified Device Architecture (CUDA)


CUDA is a novel and promising GPU programming frame work from NVIDIA.


The CUDA has been speedup many computationally intensive graphics as well
as nongraphic


Essential
for a seamless panoramic
mosaic


A
pyramidal image blending
algorithm


Our goal


T
o show
that use of design patterns facilitate extending existing functionality
by adding new classes, rather than modifying an existing classes or
functionality


2

1. Introduction

-

Panoramic Mosaic

3

1.
Introduction

-

Finding Key Point

4

2.
Analysis and Design

-

Gaussian
Blur
Operation

5

2
2
2
2
)
(
2
exp
2
1
)
,
,
(



y
x
y
x
G



)
,
(
*
))
,
,
(
)
,
,
(
(
)
1
(
y
x
I
k
y
x
G
k
y
x
G
n
n





)
,
,
(
)
,
,
(
)
1
(





n
n
k
y
x
L
k
y
x
L
)
,
(
*
)
,
,
(
)
,
,
(
y
x
I
y
x
G
y
x
L





doubles for

the next octave

)
,
,
(
)
1
(


n
k
y
x
D
L
(
σ
)

s
n
,
,
2
,
1


D(
σ
)

High frequency

k
= 2
(1/
s
)

s
: Image per octave

s
= 3 in this case

σ=
1.
6

σ=k
3
*1.
6

DoG filter

Gaussian filter

σ=k
4
*1.
6

σ=k
-
1
*1.
6

σ=k*
1.
6

σ=
k
2
*1.
6

σ=
1.
6

σ
=
2
*
1.
6

2. Analysis and Design

-

Laplacian

Pyramid

6

2. Analysis and Design

-

Remove
E
dges

Response

7

3. Implementation


-

Modules


Image Blending Library (IBL):
They developed framework for
CUDA based image processing.



This frame work offers
3 modules
for an image processing:

1)
CPU Module

2)
Simple
-
CUDA Module

3)
IO
-
CUDA Module






8

3. Implementation


-

Modules

1)
CPU Module


Using single thread



Implementation function:

1.
Gaussian blur

2.
Laplacian

pyramid

3.
REDUCE operation

4.
EXPAND operation





9

3. Implementation


-

Modules

2)
Simple
-
CUDA Module






CPU

GPU

Global
M
emory

CPU
Memory

Send

image

Process

Image

Return

image

10

3. Implementation


-

Modules

3)
IO
-
CUDA Module





GPU

Global
M
emory

Image already get

Shared
Memory

Process

Image

Send

image

Return

image

11

3. Implementation


-

Automatic Image Conversion


Visitor Design pattern


Image type
:
CPUBuffer

image and
CUDABuffer

image








Visitor

Concrete Visitor

Concrete Visitor

Element

Concrete Element

Concrete Element

Output:
CUDABuffer

Output:
CPUBuffer

12

3. Implementation


-

Image Source Integration


General Hierarchy Pattern




13

3. Implementation


-

Extensible Architecture


Construction of Gaussian &
Laplacian

Pyramid

14

3. Implementation


-

Extensible Architecture


Building the Gaussian
pyramid


Non
modifiable code along with placeholders for extending
it


Using
Factory
Method pattern

placeholders


C
reating
the image
buffer


Gaussian blur


REDUCE operation


Realized
by the respective
subclasses


Ex.
CPUBlendingFactory


Ex.
IOCUDABlendingFactory

15

3. Implementation


-

Extensible Architecture


Combine Pyramid Operation

16

3. Implementation


-

Extensible Architecture


Combine
P
yramid
O
peration


Validating
an input
pyramids


Allocating
memory for an output
pyramid


Combining
high pass and low pass
images


The
Template
Method pattern

is used to define the
skeleton


Combining
high pass images and low pass image
are
placeholder
or

extension
points


Subclasses
redefine

combining high pass and low pass
images without changing basic algorithm
structure


Ex.
CPUCombinePyramidOperation


Ex.
IOCUDACombinePyramidOperation


17

4. Result


Specification


Intel Core 2 Duo with E8400 3.00 GHz
processor


2GB
RAM


NVIDIA’s
Quadro

FX
4600


Input images covers
low resolution (128x128)
as well as a
high resolution (2048x2048)


18

4. Result


Panoramic
image
stitching

19

4. Result


CUDA based modules perform much better than the CPU
module


Simple
-
CUDA


Device global
memory


IO
-
CUDA module


Fast
on
-
chip shared memory


20

5. Conclusion


I
mplemented
an object oriented framework for a
GPU based image
processing


Using
software engineering principles and design
patterns


E
xtending
t
he
framework for computation using the
GPU
memory

21



THANK YOU

22