Registro de imágenes utilizando hardware gráfico

100 

Loading....

Loading....

Loading....

Loading....

Loading....

Texto completo

(1)

Curso 2006-2007.

Registro de Imágenes

utilizando Hardware Gráfio

Componentes del grupo:

Luis Rafael Canet Salazar

Rodrigo González Alberquilla

Salvador de la Puente González

Diretor del proyeto:

Christian Tenllado van der Reijden

(2)
(3)

Hardware Gráo

Memoria de proyeto n de arrera

presen-tada por Luis Rafael Canet Salazar, Rodrigo

González AlberquillaySalvador delaPuente

González en la Universidad Complutense de

Madrid, realizado bajo la direión de

Chris-tian Tenllado van der Reijden.

(4)
(5)

En este proyeto, estudiamos el registro de imágenessobre hardware

grá-o. Con esta ténia nos referimos aenontrar una transformaión quehaga

posible elsolapamientoentredos imágenes.

En el Capítulo 1 realizaremos una breve introduión aera del registro

de imágenes, expliando en qué onsiste y uáles son sus apliaiones, y

dis-utiremos diferentes estrategias para llevarlo aabo.

A ontinuaión,desribiremos el algoritmo del que partimos para realizar

el registro, basándonos en el trabajo de I. De Falo et al. [FMS

+

07℄ y

apor-tando nuestras propias mejoras y optimizaiones. Hablaremos también de su

implementaión y analizaremosel rendimientoenCPU.

A lavistade losresultado, propondremos una nueva plataformade

ejeu-ión, la GPU, y detallaremossu estrutura interna.

Seguidamente, estableeremos las bases del Modelo de Proesamiento de

Flujos y trasladaremosel algoritmode registroa este modelo.

Para nalizar,omprobaremosgráamentelosresultadosobtenidostanto

en CPUomo enGPU, observando una mejora importanteen elrendimiento

(6)

In this projet, we study the image registration on graphial hardware.

This taskonsists innding a suitabletransformation tomathtwoimages.

InChapter1weintrodueimageregistration,explaining howitworksand

its appliations,and showing dierent approahes to the solution.

After, we desribe the algorithm based on the work of I. De Falo et

al. [FMS

+

07℄, adding our own improvements and optimizations. We write

about itsimplementation and itsCPU performane.

With these results in mind, we introdue a new framework and its

beha-vior, the GPU. Then, we make another approah to the image registration

algorithm, following the guidelines of the Stream-ProessingModel.

In the end, we examine the results between both models, showing how

(7)

versidad Complutense de Madrid a difundir y utilizar on nes aadémios,

no omeriales y menionandoexpresamente a susautores, la memoria

desa-rrollada eneste proyeto.

Madrid, a 3 de Julio de 2007.

(8)
(9)

GPGPU, registro de imágenes, imagen hiperespetral, GPU, informaión

mutua,evoluióndiferenial,sattering, gathering,enaje deimágenes,

(10)
(11)

Luis.

A mamá, papá, mi hermana Paula, Bea y a mis amigos de aquí yde allí.

Salva.

A mis padres,Estela y todo ASCII.

(12)
(13)

Damoslas graias a Christian Tenllado, nuestro diretorde proyeto, por

ayudarnosallevarloatérminoyalagentedel DACYApordarnosun espaio

donde trabajar, y failitarnos un framework base. En espeial a Enrique de

la Torre, por mantener los equipos preparados para realizar las pruebas y a

Manuel Prieto por serelreferente enimágeneshiperespetrales.

Luis quiere dar las graiasa Edgardo Mejía, porsu ayuday onsejos; y a

WeneslaoCanet, por sersu mejorreferente.

ASalvador legustaríaagradeerelapoyodetodos susamigos,enespeial

el de Beatriz y su familia; y a sus ompañeros de proyeto por aguantar su

aráter.

Rodrigo quiere agradeer a Christian de nuevo y a Javier Setoain por ser

oídosyrespuestaasusdudas.AEstelaporelapoyoprestadoenlosmomentos

más duros. A Alberto Ferreiro por desubrirnossus seretos ala hora de que

(14)
(15)

1. Introduión 1

1.1. El Registro deImágenes . . . 1

1.2. Imágenes Hiperespetrales . . . 3

1.3. Algoritmos deRegistro deImágenes . . . 4

1.4. GPGPU . . . 7

1.4.1. Orígenes y evoluión . . . 7

1.4.2. Perspetiva futura . . . 8

1.5. Motivaión. . . 9

1.6. Objetivos . . . 9

1.7. Organizaión del resto deeste doumento. . . 10

2. Algoritmo para el registro de Imágenes Hiperespetrales 11 2.1. Algoritmo deEvoluiónDiferenial . . . 11

2.2. Cálulo dela informaión mutua. . . 15

2.3. Optimizaiones a losalgoritmos . . . 17

2.4. Desripión de ImplementaiónCPU . . . 18

2.4.1. Algoritmo deEvoluiónDiferenial . . . 19

(16)

2.5. Resultados obtenidos . . . 24

2.5.1. Plataformas deejeuión . . . 24

2.5.2. Imágenes de prueba. . . 25

2.5.3. Resultados on imágenessintétias . . . 25

2.5.4. Número de generaiones . . . 26

2.5.5. Tamañode lapoblaión . . . 28

2.5.6. Mejoras ala onvergenia . . . 29

2.5.7. Resultados on imágenesreales . . . 30

2.5.8. Tiemposobtenidos . . . 31

3. Arquitetura de la GPU 35 3.1. El pipeline gráo . . . 37

3.2. Evoluióntenológia de losproesadoresgráos . . . 41

3.2.1. Primera generaión . . . 42

3.2.2. Segunda generaión . . . 42

3.2.3. Tererageneraión . . . 43

3.2.4. Cuarta generaión . . . 43

3.2.5. Haia laquinta generaión . . . 44

3.3. Conlusiones. . . 47

4. Registro de imágenes en GPU 49 4.1. El modelo deproesamientode ujos . . . 49

4.1.1. Gathering y sattering . . . 52

4.1.2. El modelo deujos enla GPU . . . 52

4.1.3. Lenguaje de programaión . . . 53

(17)

4.1.5. El rasterizador . . . 54

4.1.6. Retroalimentaión . . . 55

4.1.7. Memoria devídeo . . . 56

4.2. Implementaión del modelo de proesamiento de ujos: el fra-mework . . . 56

4.3. Implementaióndel registro deimágenes . . . 57

4.3.1. Cálulo dehistograma . . . 58

4.3.2. Cálulo dela InformaiónMutua . . . 60

4.4. Resultados obtenidos . . . 61

4.4.1. Plataformas deejeuión eimágenes deentrada . . . . 62

4.4.2. Tiemposobtenidos . . . 62

5. Comparaión de rendimiento 67 5.1. Speedup . . . 67

5.2. Tiempodealulo del histograma . . . 69

5.3. Tiempodeálulo del MI . . . 71

5.4. Diferenia entre laversión on mejoras o sinmejoras . . . 72

5.5. Reparto del tiempo deómputo . . . 72

5.6. Conlusiones. . . 73

6. Conlusiones y trabajo futuro 75

Bibliografía i

Índie de guras iii

(18)
(19)

Introduión

1.1. El Registro de Imágenes

Enel ampo delavisión poromputadora,uando setoman imágenesde

una mismaesenauobjeto,endiferentesinstantesdetiempo,odesde

diferen-tes posiiones, obtenemos informaión que se enuentra en diferentes ejes de

referenia. Sabemos que es informaión de un mismo sujeto o lugar, pero no

podemoshaeruna omparaiónableentrelosdiferentesdatosobtenidos, al

estartomadosendiferentesondiiones.Además,esadifereniadeondiiones

puedeserunaaraterístiadenuestroestudio,omoseriaelasodeimágenes

de un terreno tomadas on un año de diferenia,para omparar la evoluión

de lavegetaión, o estudiarfenómenos meteorológios.

El registro de imágenes onsiste en el estudio e integraión de esa

infor-maión en un únio eje de referenia omo se observa en la gura 1.1, esto

es, una vez tomadaslas imágenes, se analizan lassimilitudes existentes entre

(20)

Figura 1.1:El registro de imágenes intenta enontrar latransformaión que traslade al

mismomaroderefereniaambasimágenes.

una imagen a la otra, teniendo la erteza de que la informaión de un punto

superpuestoon otroenlaimagennal,orrespondeon elmismolugarenla

realidad.

Obteniendo esta nueva imagen, fruto de la superposiión de ambas,

po-demos observar los ambios produidos entre unas ondiiones y otras, por

ejemplo on respeto al tiempo.También podemos oger una serie de

imáge-nes deunmismolugar,yrearunanuevaimagenqueinluyaatodas,uniendo

esasimágenesporsuslugares omunes.Estonos permiteobteneruna imagen

mas grandede un lugar, sinapreiarorte alguna entrelas diferentes partes.

(21)

Figura 1.2:Representaióndeunaimagenhiperespetral

tamaño que una imagen omún, y que albergan muha mas informaión que

la peribida porel ojo humano,las imágeneshiperespetrales.

1.2. Imágenes Hiperespetrales

Las imágenes hiperespetrales, son imágenes de gran tamaño, on mayor

informaión que una imagenomún. Altomar una deestas imágenes, nosolo

sealmaenalainformaiónbidimensionaltípiadeunaimagenmultiespetral,

sinoqueademásseañadeunonjuntodeanalesalolargodelespetrovisible,

infrarrojo,y ultravioleta.

Esta informaión es tomada por un espetrómetro, que reoge ientos de

bandasespetrales,resultadodelareexióndelaluzenlasdiferentesregiones

uobjetosdelaimagen.Estonos permiteestudiosmuhomasrelevantes,omo

(22)

un objeto, omo puedeomprobarse enla gura 1.2.

En el aso que nos oupa, trabajamos on imágenes de poriones de

te-rreno tomadas desde un satélite. Con esta informaión, podemos identiar

las diferentesregionesqueomponenel paisaje,y estudiar laevoluión delas

mismas. Porejemplo, la erosión que produe el agua en el aue de un río, o

el estado deuna formaión roosa.

1.3. Algoritmos de Registro de Imágenes

Paraenfrentarnosalregistrodeimágenes,tenemosdiferentesformasde

en-ontrar latransformaiónqueunialosejesderefereniadelasdosimágenes

[Bro92℄.

El mapeo de puntos, propone la reaión de una serie de puntos de

ontrol, llamados landmarks, en ambas imágenes, que representan una

misma araterístia.Partiendo de esas referenias, seintentaentones

emparejarlos. Una vez emparejados, se utiliza esa transformaión para

todos lospíxeles de laimagen.

El ajuste de superies, valora las superies en vez de los puntos de

ontrol. Utilizando varios algoritmos de segmentaión, puede loalizar

satisfatoriamentesuperiesdealtoontraste.Sidossuperiespueden

ser identiadas por este método en diferentes imágenes, entones se

produe el ajuste de ambas. Este se utiliza espeialmente en imágenes

(23)

Medidas desimilitud de Voxels 1

: Estos métodos deregistro utilizan la

imagen entera sinreduirla o segmentarla a lolargo detodoelproeso,

porloqueresultan másablesquelos basadosenpuntos. Sin embargo,

dadoquemanejanunaantidadenormededatos,tienenelinonveniente

del gran oste omputaional queello supone.La idea deestosmétodos

esdenirlosparámetrosdelregistroomounafunióndealgunamedida

de similitud entre las dos imágenes, e intentar maximizar esta medida

de similitud [yJMV07℄.

El métodobasadoenlaintensidad, utilizalasintensidades delaimagen

omo métododeregistro,demodoquenoserequiere unasegmentaión

explíitadeadaimagen.Sinembargo,paralatransformaiónglobalde

laimagenelnúmerodeparámetrosquehandeseroptimizadossueleser

enorme y llevarlo a laprátiapuede resultar imposible [yJMV07℄.

MétodobasadoenlaInformaiónMutua(MutualInformation,MI):Este

métodoestabasadoenmaximizarlaantidaddeinformaiónompartida

porlasdos imágenes.Noseayudadeningúnagenteexterno,opuntode

ontrol enla imagen,y tampoopreisa deuna manipulaiónprevia de

la misma.

Viendo todas estas posibilidades, nos deantamos en nuestro estudio por

la MI, puesto que es la que presenta el menor numero de restriiones. Esto

supone un espaio de búsqueda muy grande, ideal para búsquedas aleatorias

omo lo son los algoritmos evolutivos.[FMS

+

07℄

1

(24)

Figura1.3:Losalgoritmosevolutivosserigen por lasmismasleyesquelabiología

Los algoritmos evolutivos son métodos de búsqueda en un espaio de

so-luiones. El nombre se debe, a que al igual que en las reglas de la evoluión

biológia, lassoluiones masaptastienenmasposibilidadesdesobrevivir.

Da-dauna poblaión iniialdesoluiones potenialesaun problema,elalgoritmo

evolutivo seleiona un onjunto de individuos padre, on los que se generan

nuevas soluiones hijo que extienden la poblaión, si superan una funión de

aptitud. Lossupervivientesson soluiones masadeuadasomo seobservaen

(25)

Enonreto,vamosautilizarelalgoritmodeEvoluiónDiferenial

(Die-rentialEvolution,DE),omoreomiendaeltrabajodeI.DeFaloetal.[FMS

+

07℄,

en el ual, preisamente, seofreeun métododeregistro deimágenes basado

en MI.

1.4. GPGPU

Cómputo dePropósito GeneralenUnidades deProeso Gráo

(General-Purpose Computing on Graphis Proessing Units,GPGPU) se puede denir

omo el paradigma que promueve la utilizaión de la Unidad de Proeso de

Gráos omo unaunidad deproeso depropósito general.Estenuevopunto

de vista, nae a raíz de la inlusión en la tarjeta gráa de módulos

progra-mables.

1.4.1. Orígenes y evoluión

Las primeras tarjetas gráas surgieron para aliviar la arga del proeso

gráo a la CPU. Esto permitía una mejora en el rendimiento general del

sistema,aunquelafunionalidaddelastarjetasgráaserabastantelimitada.

Pasado un tiempo, seinluyola posibilidad deprogramariertas partes dela

tarjeta gráa, en onreto, los proesadores de fragmentos y vérties. Esto

supuso una mejora importante, ya que entones los desarrolladores podían

explotar esta araterístia,reandonuevos efetosgráos y nuevosmodelos

de iluminaión.

Muhos deestos efetos explotaban elparalelismo delasunidades

(26)

las CPUs. Todo ello, sumado al abaratamiento de las tarjetas gráas en el

merado, permitió que los desarrolladores mas innovadores tuvieran aeso a

equipos on múltiples unidades de proesamiento enparalelo.

Además, on el paso del tiempo apareieron iertos problemas de

rendi-miento al operar sobre vetores y matries. Las CPUs proporionaron una

soluión mediante un onjuntode instruionesnuevo. Aunasí, lasCPUs

se-guíansiendodemasiadogeneralistas,yelonjuntodeinstruionesdemasiado

limitado. Seneesitaba mayorrendimiento,y mayorespeializaión.

Las GPUs pareían la soluión indiada, sin embargo, aun era neesario

una serie de ténias que permitiesen traduir los algoritmos diseñados para

CPU, enalgoritmos equivalentes que explotasen las araterístias únias de

las tarjetas gráas. Estos nuevos algoritmos enajan en el modelo de

proe-samiento deujos, uyos detalles ampliaremos enel Capítulo 4.Basta deir

que el modelo de ujospermite apliar un programa a un onjunto dedatos,

operando sobre losmismos enparalelo.

1.4.2. Perspetiva futura

LaGPUNVIDIA8800eslaprimeratarjetagráaenintroduirunmodelo

uniado de hardware totalmente programable, donde se elimina la visión

lásiadeunonjuntodemódulosprogramablesindependientes,yofreeomo

araterístia únia un lenguaje de programaión orientado al desarrollo de

software general sobre GPU,CUDA.

Teniendoestasposibilidades,noseriadeextrañarquelasompañías

(27)

1.5. Motivaión

Múltiplesapliaiones enel mundo dela mediina [MV98℄, omo el

estu-dio del desarrollo de un tumor [SMH

+

07℄, el deterioro oseo de una persona

[HBHH01℄, o el análisisdetallado de laretina del ojo [ret02℄.

También es utilizado para el estudio del efeto del paso del tiempo en

diversos ampos,omo lasonstruionesantiguas oexavaiones

arqueológi-as [JEE77℄, olas formaionesmontañosasde un paisaje [rid00℄.

Elprinipalproblemadeestaténia,eseltiempodeomputo.Alproesar

las imágenes, se estudian píxel a píxel. Para una imagen de tamaño medio

(800x600),tenemosqueproesar480000píxeles.Esunaantidadmuyelevada,

y elproesamientose hae seuenialmente,por loque es muy lento.

Porotro lado,eneste algoritmo existeunaaraterístiaque podemos

ex-plotar, y es que el estudio de ada píxel es independiente de los demás, por

lo que podríamos proesar varios píxeles en paralelo sin llegar a una

solu-ión errónea. De esta forma, disminuiría muho el tiempo de registro de las

imágenes, proporionalmenteal numerode píxeles enparaleloquepodríamos

omputar.

1.6. Objetivos

Partiendo de la idea del registro de imágenes hiperespetrales expuesto

anteriormente, y los avanes en las GPUs atuales, se propone el desarrollo

deuna apliaión paraelregistroautomátiodeimágenes, prestandoespeial

(28)

ompu-taional. Para ello,seabordaraelproblemadel registrosiguiendo elalgoritmo

expuesto enelCapítulo 2,basadoenlaEvoluiónDiferenial, yseplantea la

utilizaión de unidades de proesamiento gráo (GPUs) programables para

aelerar aquellas fases más ostosas de la apliaión suseptibles de explotar

las apaidades deeste tipo deplataformas.

1.7. Organizaión del resto de este doumento

EnelCapítulo 2desribimos elalgoritmo delquepartimospararealizar

el registro de imágenes, y su implementaión y análisis de rendimiento

en laCPU.

En el Capítulo 3, entramos en el ámbito de las GPUs, analizando la

evoluión de esta arquitetura, y desribiendo el pipeline gráo de la

misma.

EnelCapítulo4,desribimoselmodelodeproesamientodeujossobre

GPU, e implementamosel registro deimagen haiendo uso de este

mo-delo. quepartes delalgoritmoson abordablesporlosdiferentesmódulos

de laarquitetura.

En elCapítulo 5,omparamos losresultados de CPUy GPU.

EnelCapítulo 6,desarrollamoslasonlusionesalasquehemosllegado

(29)

Algoritmo para el registro de

Imágenes Hiperespetrales

Enel Capítulo 1hemos hablado sobre elregistro deimágenesy elegido la

estrategia aseguir, basada enlaMI, desritaenla seión 1.3.

A lo largo de este apítulo desarrollaremos esta estrategia y los

algorit-mos que la integran tomando omo referenia el trabajo de I. De Falo et

al. [FMS

+

07℄.

Comenzaremosanalizando elalgoritmo de búsqueda DE 1

, y la prueba de

aptitud basada en MI 2

.A ontinuaión propondremos algunas mejoras y

ter-minaremos on losresultados dela implementaiónsobre CPU.

1

DierentialEvolution

2

(30)

2.1. Algoritmo de Evoluión Diferenial

Los algoritmos evolutivosson sistemas de resoluión de problemas de

op-timizaión o búsqueda que se rigen por las leyes de la evoluión. Trabajan

variando una poblaión de soluiones, y evaluando la aptitud de los

indivi-duos, omo expresa el siguiente esquema:

Algorithm 1 AlgoritmoEvolutivo

Inicializar

_

P oblacion

(

P

)

for

i

= 1

to

generaciones

do

for eah

Individuo i

in

P

do

i

_

mutado

=

M utar

(

i

)

if

es

_

M ejor

(

i

_

mutado, i

)

then

i

=

i

_

mutado

end if

endfor

end for

solucion

=

M ejor

(

P

)

Las diferentes formasde Algoritmo Evolutivo dependen de omo se

om-porten las funiones

M utar

(

Individuo

)

y

es

_

M ejor

(

Individuo, Individuo

)

. La funión

M utar

(

Individuo

)

atúa sobre un onjunto de individuos padre seleionados aleatoriamente, y el individuo hijo es generado en funión de

sus padres. Por otro lado

es

_

M ejor

(

Individuo, Individuo

)

devolverá

true

si lamedidadesimilitud(Measure OfMath,MOM)de

a

essuperioralaMOM de

b

según el riterioque estemosestudiando.

Por ejemplo, en un problema de maximizaión,

es

_

M ejor

(

n1, n2

)

sería equivalente a

n1

> n2

.

En DE, dado un problema de maximizaión on

m

parámetros reales, y eligiendountamañodepoblaiónde

n

individuos,adaindividuorepresentará

(31)

Figura2.1: Cómosegenera unnuevo individuoenunageneraión

una soluión potenial omo un vetor de

m

valores reales. Como se observa enlagura2.1, lafunión

M utar

(

Individuo

)

afetaaunsólo parámetro

j

de un individuo ualquiera

i

. Para ello, primero seleiona tres individuos padre porlaposiióndelosmismosenlapoblaión(

r1

,

r2

y

r3

),todasdistintasentre sí. A ontinuaión,genera el nuevo parámetro mediantela expresión:

(32)

F

esunparámetrodelalgoritmoen

[0

,

0

. . .

1

,

0]

queexpresalamagnitudon laqueladiferenia

(

P

r

1

,j

P

r

2

,j

)

seapliaa

P

r

3

,j

.LaDEdebesuaraterístia

diferenial preisamente al heho de apliar una diferenia entre dos de los

padres on una magnitud

F

.

Sin embargo, lafunión

M utar

(

Individuo

)

sólo suedesi se daalguna de las siguientes ondiiones:

Siunnúmerorealaleatorio

p

en

[0

,

0

. . .

1

,

0]

esmenorquelatasade am-bio (Changue Rate,CR) introduidaenel algoritmo omo parámetro.

Si un número aleatorio

k

en

[1

, m

]

es exatamente

j

, es deir, oinide on elnúmero deparámetro seleionado para mutar.

Siningunodeestosrequisitosseveriaentoneselparámetrosemantiene

intato.

Este individuo mutado que designaremos andidato es omparado ontra

el individuo original. Si resulta mejor soluión según el riterio de la funión

es

_

M ejor

(

Individuo, Individuo

)

reemplaza al mismo en la próxima pobla-ión.Deotraforma,eseloriginalelquesobreviveypasaalanuevapoblaión.

El mismo patrónse repite un máximo de

g

generaiones. Ennuestroaso, los individuos son vetores de6 elementos

(

rot1

, rot2, rot3, rot4, dx, dy

)

que representan las transformaiones anes que puedensersoluióndelproblemaderegistrodeimágenesomoseexplióenla

seión 1.1.Los uatroprimeroselementos,

(

rot1, rot2, rot3, rot4

)

,forman una rotaión bidimensional y los dos últimos,

(

dx, dy

)

, un vetor desplazamiento en el plano

XY

. Nuestro riterio de aptitud, es deir, la base de la funión

(33)

2.2. Cálulo de la informaión mutua

Enteoría delaprobabilidad, y enteoríadelainformaión, lainformaión

mutua de dos variables aleatorias es una antidad que mide la dependenia

mutua delasvariables.

Estaserá nuestraMOM y se alulaen funión dela expresión2.1:

I

(

Y, Z

) =

X

y,z

P

Y,Z

(

y, z

)

·

log

P

Y,Z

(

y, z

)

P

Y

(

y

)

·

P

Z

(

z

)

(2.1)

donde

P

Y

(

y

)

y

P

Y

(

z

)

son las funiones demasa de probabilidad marginal y

P

Y,Z

(

y, z

)

es lafunión de masa deprobabilidad ondiionada.

La MI esta relaionada on lasentropías omo sigue:

I

(

Y, Z

) =

H

(

Y

) +

H

(

Z

)

H

(

Y, Z

)

(2.2)

siendo

H

(

Y, Z

)

la entropía onjunta y

H

(

Y

)

y

H

(

Z

)

lasentropías de

Y

y

Z

respetivamente.La deniión deestas entropías es:

H

(

Y

) =

X

y

P

Y

(

y

)

·

log

P

Y

(

y

)

,

H

(

Z

) =

X

z

P

Z

(

z

)

·

log

P

Z

(

z

)

(2.3)

H

(

Y, Z

) =

X

y,z

P

Y,Z

(

y, z

)

·

log

P

Y,Z

(

y, z

)

(2.4)

Para alularlas probabilidades, debemos utilizar el histograma onjunto

del pardeimágenes

h

.Estesedeneomounafunióndedosvariables

Y

y

Z

on laintensidad degrises delasdos imágenesomopodemosverenlagura

(34)

Figura2.2:Elaboraióndelhistograma

2.2. Su valor en la oordenada

(

Y, Z

)

esel numero de pares orrespondientes teniendo nivel degrises

Y

en la primera imagen y nivel de grises

Z

en la se-gunda. Lafuniónonjuntademasadeprobabilidad seobtienenormalizando

el histograma onjuntodel par deimágenes:

P

Y,Z

(

y, z

) =

h

(

y, z

)

P

y,z

h

(

y, z

)

(2.5)

P

Y

(

y

) =

X

z

P

Y,Z

(

y, z

)

,

P

Z

(

z

) =

X

y

P

Y,Z

(

y, z

)

(2.6)

(35)

ElregistrodeimágenesutilizandolaMI establee queun par deimágenes

estánalineadassegúnunatransformaióngeométria

T

uando

I

(

Y

(

x

)

, Z

(

T

(

x

)))

es máxima. Por lo tanto debemos busar la transformaión

T

que maximie

I

.

2.3. Optimizaiones a los algoritmos

Dos estrategias empleadas para favoreer la onvergenia propuestas por

Alberto FerreríaBlano en [Bla07℄ son:

1. Para alular la funión de masa onjunta

P

Y,Z

(

y, z

)

lo que haemos es dividir ada valor

h

(

y, z

)

entre el sumatorio del histograma, omo se muestraenlaeuaión 2.5yaontinuaiónseredueparaalular

P

Y

y

P

Z

.

P

y,z

h

(

y, z

)

eseltamañodel área solapada.Lamejora propuesta es envezdeusarestevalor,usareltamañodelasimágenesparanormalizar

de maneraque laseuaión quedaría:

P

Y,Z

(

y, z

) =

h

(

y, z

)

ancho

(

Y

)

·

alto

(

Y

)

(2.7)

Deestamanerauantomenorseaeláreasolapadamenoresseránlas

pro-babilidades en omparaiónon el resultado de no apliar esta mejora.

Con este ambio estamos penalizando a aquellas soluiones que tienen

un área de solapamiento pequeño on el objetivo de evitar asos

dege-nerados en los que la apariión de nubes en los bordes puede resultar

problemátia, ya que la poblaión tendería en ese aso a enajar zonas

(36)

y obtendría un valor de MI elevado.

2. El uso ada un ierto número degeneraiones deuna estrategia de

má-xima pendiente, esto es, intentar adivinar que direión debería tomar

el mejorindividuopara inrementarsuMI. El proedimiento es,ada 5

generaionestomamosalmejorindividuo. Calulamoselgradientedela

funión

I

(

Y

T

, Z

)

,donde

Y

T

representa la imagen Y transformada según los valores del individuo, siendo ada omponente del gradiente la

deri-vadaparialenada uno delosparámetros delatransformaión,loque

nos daladireión (teória)demayorreimientodela MI:

I

(

Y

T

, Z

)

. Generamos un nuevo individuo sumándole esa antidad al mejor

indi-viduo y lo evaluamos. Si es mejor, entones sustituye al que era mejor

individuo de nuestra poblaión. Si no, es desehado. De esta manera

onseguimosguiarlabúsquedahaiazonasdondedeberíaenontrarseel

máximo.

Para laimplementaióndeestas mejorasreamostres versionesdela

apli-aión, una primeraque noinluye ninguna mejora, una segundaque inluye

la mejora 1, y una últimaque inluye lasmejoras 1 y 2.

2.4. Desripión de Implementaión CPU

Enestaseiónvamosamostrardiagramas deujoy elpseudoódigo que

(37)

2.4.1. Algoritmo de Evoluión Diferenial

A ontinuaión mostramosel ujo de ejeuiónde la DE en la gura 2.3,

juntoon su pseudoódigo, algoritmo 2,según esta desrito enla seión2.1.

(38)

Algorithm 2 Algoritmode Evoluión Diferenial

for

i

= 0

to

tamP oblacion

do

Crear

_

Individuo

()

Calcular

_

M I

_

Individuo

()

end for

for

i

= 0

to

numGeneraciones

do

Calcular

_

Siguiente

_

Generacion

()

{Detalladomasadelante} end for

En detalle, ada nueva generaión se alula omo se india gráamente

en lagura 2.4, aompañada desu pseudoódigo (algoritmo 3).

(39)

Algorithm 3 Nuevageneraión

for

i

= 0

to

tamP oblacion

do

{Para ada individuo dela Poblaion}

Generar

_

Individuos

_

Aleatorios

()

X

=

poblacin

[

i

]

candidato

=

poblacin

[

i

]

mutar

(

candidato, individuos

_

aleatorios

)

Calcular

_

M I

(

candidato

)

if

candidato.M I > X.M I

then

X

=

candidato

endif{Nosquedamos on elque tenga mejorMI}

(40)

2.4.2. Cálulo de la MI

Figura2.5:ImplementaióndelálulodelaMIenCPU

ImplementarlainformaiónmutuasobreCPUonsisteúniamenteen

apli-ar las fórmulas desritas en 2.2 omo puede omprobarse en la gura 2.5,

aompañado del algoritmo 4. Como optimizaión hemos deidido

preompu-tarendistintasmatrieslosvaloresde

P

Y

,

P

Z

y

P

Y,Z

asíomo

H

Y

,

H

Z

y

H

Y,Z

on eln dereutilizar ómputos.

(41)

Algorithm 4 Calulode laMI

Creacion

_

Histograma

_

Conjunto

()

{Detallado masadelante}

N ormalizacion

_

Histograma

_

Conjunto

()

{Calulo de

P

Y

,

P

Z

y

P

Y,Z

}

Calculo

_

Entropias

()

{Calulo de

H

Y

,

H

Z

y

H

Y,Z

}

M I

=

Entropia

_

de

_

Y

+

Entropia

_

de

_

Z

Entropia

_

Conjunta

_

Y

_

Z

{Obtenemos asíla MI deun individuo}

El funionamiento del alulodel Histogramase muestra enla gura 2.6,

y elpseudoódigo puedeverse en 5

(42)

Algorithm 5 Cálulodel Histograma

for

i

= 0

to

tamao

_

imagen

do

i

_

transf ormada

=

T

·

i

ImA

=

V alor

_

De

_

Gris

(

ImagenA, i

)

ImB

=

V alor

_

De

_

Gris

(

ImagenB, i

_

transf ormada

)

Histograma

[

ImA, ImB

] + +

end for

2.5. Resultados obtenidos

EnestaseiónvamosaanalizarlosresultadosobtenidosenCPU.Primero

haremos una somera desripión de la plataforma experimental usada y los

datos de entrada. Después presentaremos tablas que muestran los resultados

de la ejeuión del programa. A ontinuaión analizaremos qué número de

generaiones y deindividuos neesita la evoluión diferenial para garantizar

que enontrará buenassoluiones.Y para terminarmostraremoslastablas de

tiemposobtenidasparavariasejeuionesdelalgoritmoondiferentesdatosde

entradaytamañosdehistograma.Másadelante,enlaseión4.4mostraremos

los tiempos obtenidos en laejeuión enGPU, y en elapítulo 5se hae una

omparativay un análisis delostiemposen ambas plataformas.

2.5.1. Plataformas de ejeuión

LasejeuionessehanllevadoaabosobreproesadoresIntel,latabla 2.1

desribelosaspetosprinipalesdelaplataformaexperimental.Las

implemen-taioneshansidoompiladasutilizandoGNU-C/C++ompiler(version4.1.2,

on los ags de optimizaión -O3 -msse). Además, la implementaión en ha

(43)

un mayorrendimiento.

Tabla 2.1:DesripiónténiadelaCPU

Caraterístias Core 2Duo

Año 2006 FSB 1066MHz ICaheL1 32KB DCaheL1 32KB L2Cahe 4Mompartida Memoria 2GB Reloj 2.4GHz 2.5.2. Imágenes de prueba

Paralaspruebashansidoutilidadasimágenessintétiasdetamaños128x128,

256x256,512x512,1024x1024y2048x2048extraídasdeunafotografíatomada

on unsatélitealtelesopioIkonosdePuertoRioeimágeneshiperespetrales

de lossensores Ali eHyperion.

2.5.3. Resultados on imágenes sintétias

Las tablas 2.2 y 2.3 reogen los resultados obtenidos de promediar 5

ejeuiones del algoritmo para distintos tamaños de poblaión y número de

generaiones deevoluión dedihas poblaiones.

Hayquetenerenuentaqueelhehodeapliarlanormalizaiónmejorada

hae que elvalor dela informaión mutua sereduza, enfunión del tamaño

del área solapada. En este aso la informaión mutua máxima es, alulada

on la normalizaión 'tradiional' 2.3619, y para la normalizaión mejorada

1.8177. Vemos omo el valor máximo se onsigue para 300 generaiones on

(44)

200 generaiones

Mejora 100individuos 150 individuos 200 individuos

Sinmejoras 2.3564 2.3603 1.9063

Normalizaion 1.8172 1.8171 1.7988

Normalizaion+Gradiente 1.6322 1.2383 1.7957

250 generaiones

Mejora 100individuos 150 individuos 200 individuos

Sinmejoras 1.4189 1.4866 2.361

Normalizaion 1.8175 1.8176 1.8174

Normalizaion+Gradiente 1.8176 1.8176 1.8176

300 generaiones

Mejora 100individuos 150 individuos 200 individuos

Sinmejoras 2.3619 2.3619 2.3619

Normalizaion 1.8176 1.8177 1.8177

Normalizaion+Gradiente 1.8177 1.8176 1.8177

Tabla2.2:Informaiónmutuamáximaobtenidatras200,250 y300 generaiones

0

0.5

1

1.5

2

2.5

0

20 40 60 80 100 120 140 160 180 200

Informacion mutua

Generaciones

valor medio

valor maximo

0.4

0.6

0.8

1

1.2

1.4

1.6

1.8

2

0

20 40 60 80 100 120 140 160 180 200

Informacion mutua

Generaciones

valor medio

valor maximo

Figura 2.7:MI media y máxima para lasversiones: sin mejoras y on la normalizaión

mejoradaon imágenessintétias.

Lasguras 2.7y 2.8muestranlasgráasdelainformaiónmutuamedia

y máximapara la onvergeniamásrápida deada una de lasversiones.

2.5.4. Número de generaiones

Elnúmerodegeneraionesdurantelasquevaaevoluionaruna poblaión

nosindiauantovamosaanarlasoluión,estoes,onunnumerodemasiado

(45)

200 generaiones

Mejora 100individuos 150 individuos 200 individuos

Sinmejoras 200 192 200

Normalizaion 180 184 200

Normalizaion+Gradiente 200 200 200

250 generaiones

Mejora 100individuos 150 individuos 200 individuos

Sinmejoras 250 250 233

Normalizaion 218 207 221

Normalizaion+Gradiente 189 207 195

300 generaiones

Mejora 100individuos 150 individuos 200 individuos

Sinmejoras 227 212 202

Normalizaion 250 191 208

Normalizaion+Gradiente 194 235 204

Tabla2.3:Generaiondeonvergeniaontope200,250 y300generaiones

aerarán losuiente.A medidaqueaumentamoselnúmero degeneraiones

losindividuossevanrenando,hastaquellegaunpuntoenelquesinimportar

uanto másaumentemos el numero degeneraiones los individuos no pueden

mejorar, y es esepunto elque debemos estimar.

Viendo los datos de la tabla 2.2, ese punto lo podemos estimar en 250

generaiones, ya que para este valor, se onsiguen resultados máximos para

lasversionesmejoradas.Enel asodelaversion sinmejoras habríaquellegar

a las 300 generaiones.

Sibajamosel numero degeneraiones de250 nos arriesgamosa no

onse-guir una soluión omo vemos que pasa en la tabla 2.2, para el aso de 200

generaiones on las dos mejoras, que on 100 y 150 individuos obtiene

re-sultados demasiado bajos o el el resultado de 250 generaiones en la versión

sin mejoras que tiene dos malos resultados. Elevarlo por enima de 350 va a

(46)

0.4

0.6

0.8

1

1.2

1.4

1.6

1.8

2

0

20 40 60 80 100 120 140 160 180 200

Informacion mutua

Generaciones

valor medio

valor maximo

Figura 2.8:MI mediay máximapara laversión on lanormalizaiónmejorada yel uso

delgradienteon imágenessintétias.

2.5.5. Tamaño de la poblaión

El tamañodepoblaión nos determina la variabilidad on la quevamos a

ontar, uantosmásindividuos tenganuestrapoblaiónmásexhaustivamente

busaremos ennuestroespaio. Sitenemosun numeropequeño deindividuos

busaremos en entornos reduidos, o repartidos de manera dispersa por el

espaio de búsqueda, si, en ambio, tenemos un numero demasiado grande,

laszonas debúsquedasesolaparán,loquequiere deirque busaremosvarias

veesenelmismositio,quedenuevoesdesperdiiarreursos.Poresodebemos

estudiar ual es elrango detamaño ideal para una poblaión.

Observandolageneraiónenlaquehaonvergidoelalgoritmo,entendiendo

omo momentodeonvergeniaaquelenelqueladistania entreelindividuo

másaptodelapoblaiónylamediaesmenordel1%,mostradaenlatabla2.3,

(47)

ya que para sólo 100 individuos se suele alanzar elmáximo de generaiones,

loqueindiaqueelindividuonohaonvergido,ohaonvergidoaunmáximo

loal.

Si usásemos menos de 150 individuos, puede que ninguno ontuviese una

buena soluión en su entorno, y por tanto se estanarían en máximos

loa-les omo podemos apreiar en la tabla 2.2-250 generaiones, en el aso de la

versión sin mejoras para 100 y 150 individuos, que apesar devivir 250

gene-raioneslosresultadosson bastantepobres. Sitenemosmásindividuosde350

las zonas se solaparán y nuestra soluión no mejorará, ya que vemos que en

los asos en los que tenemos al menos 250 generaiones, on este número de

individuos es suiente.

En el aso de elegir que una poblaión tenga una vida de 200

generaio-nes, habríaque aumentarelnúmerode individuos, pues tienen muho menos

tiempo para mezlarse, y por lo tanto hay que dotar a la poblaión de una

mayor variabilidad.

2.5.6. Mejoras a la onvergenia

Para estudiarlasventajasdelas mejorasnos jaremos enlasguras2.7y

2.8. Podemosverómolaversiónsinmejorastieneun asensomássuavizado,

esto esdebidoaquehay individuosquesebeneiandequelazonadesolape

es demasiado pequeña ysi son similareselresultado deMI es alto pero todos

sus hijostenderán atener una mala MI porlo queel progresoes máslento.

Enambio enelaso delanormalizaiónmejoradavemosomo se

(48)

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

0

100

200

300

400

500

600

Informacion mutua

Generaciones

valor medio

valor maximo

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

0

100

200

300

400

500

600

Informacion mutua

Generaciones

valor medio

valor maximo

Figura 2.9:MI mediaymáximaparalasversioneson lanormalizaiónmejorada yon

lanormalizaiónmejoradayelusodelgradiente,onimágenesreales.

quedadounindividuo,uandosegeneresuhijo,siestetieneun menorsolape,

deberá sermuhomás pareido para ser aeptado, esto hae que sedesehen

varias mutaiones antes deaeptaruna, por esose tienenvarias generaiones

sin apenas mejora, y repentinamentehay un salto.

Enelasodel usodel gradientesepuedeverómoenlasgeneraiones125,

140 y 155 podemos apreiar un salto signiativo, produido probablemente

porel uso del gradiente.

A ontinuaión mostramosun estudio simpliado realizado on las

imá-genes realesdeAlieHyperion parauna poblaiónon 400 individuosdurante

600 generaiones.

2.5.7. Resultados on imágenes reales

Habiendorealizadotres ejeuioneson adaniveldemejorallegamosala

onlusión de que no tiene sentido la ejeuión sin mejoras, pues en ninguno

de los asos dio soluión, ni siquiera aproximada, por lo que la disusión se

(49)

del gradiente(nivel2).

Lamedia delasMI obtenidaspara el aso del nivel 1es 0,921094333,y el

máximo es 0.921146. En el aso del nivel 2 de mejora, la media obtenida es,

0,921089333 y el máximoestá en0.921198.

Para estudiarlageneraión de onvergenia tomaremosdos riterios

1. Elalgoritmoonvergeuandoelvalormáximosupera almedioenmenos

de un 1%.En este asolas generaionesdeonvergeniason, enmedia,

para el nivel 1:509, nivel2: 516.667.

2. Elalgoritmoonvergeuandoelvalormáximodistadel máximonalen

menos deun 1%.Eneste aso lasgeneraiones deonvergeniason, en

media, para el nivel1: 447.333,nivel2: 442.

Adoptarestos dos riterioses neesario porque eluso del gradiente puede

verse en ierta maneraomo 'antionvergenia' porque seinrementael valor

deMIúniamentedelindividuoonMImáxima,loualareentaladistania

que va en ontra del primer riterio, en ambio vemos omo on el segundo

riteriosísenotaiertamejoría,yyaqueentodaslasejeuionesseenuentra

un valor nal aeptable el riterioes apliable.

2.5.8. Tiempos obtenidos

Las ejeuiones test han sido llevadas a abo durante 200 generaiones

para 100 individuos que son suientes para que seobtenga una soluiónon

imágenessintétias.Lostiemposdeejeuiónparaejeuionesonun tamaño

dehistogramajo,256 olores,paraimágenessintétiasde128x128,256x256,

(50)

Tamaño de imagen 128x128 256x256 512x512 1024x1024 2048x2048

Tiempo de ejeuión 27.1183 75.1726 295.887 1136.72 4617.41

Tabla2.4:Tiempos medios de 5 ejeuiones para un tamaño de histograma 256 sobre

CPU paraunapoblaiónde100 individuosdurante200generaiones

0

500

1000

1500

2000

2500

3000

3500

4000

4500

5000

2048

2

1024

2

512

2

256

2

Tiempo (s)

dimensiones de la imagen (pixels x pixels)

tiempos de CPU/GPU para dimensiones de histograma fija (256x256)

Tiempo CPU

Figura2.10:Tiemposdeejeuiónparatamañodehistograma jo

En esta tabla podemos ver omo el tiempo ree de manera

aproximada-mente uadrátia on el anho de la imagen, es deir, es lineal en el número

de píxeles de ada imagen, omo abría esperar. Esto se apreia mejor en la

gura 2.10.

Tamaño de histograma 128 256 512 1024 2048

Tiempode ejeuión 61.648 75.1726 108.872 266.878 943.524

Tabla2.5:Tiempos medios de 5 ejeuiones para un tamaño de histograma 256 sobre

CPU paraunapoblaiónde100 individuosdurante200generaiones

En la tabla 2.5 podemos ver los tiempos que han tardado las

(51)

0

100

200

300

400

500

600

700

800

900

1000

2048

2

1024

2

512

2

256

2

Tiempo (s)

dimensiones del histograma (# colores

2

)

Tiempo CPU

Figura2.11:Tiemposdeejeuiónparatamañodeimagenjo

0

500

1000

1500

2000

2500

3000

3500

4000

4500

5000

2048

2

1024

2

512

2

256

2

Tiempo (s)

dimensiones del histograma|imagen (# colores

2

/pixels

2

)

Dims imagen fijas CPU

Dims histograma fijas CPU

(52)

puedeverqueelreimientodeltiempoesmuhomáslentoqueenelaso

an-terior,esdeirqueaunqueaumentemoseltamañodelhistogramaenlamisma

proporión que el tamaño de imagen, el inremento del tiempo de ómputo

neesario es menor. Es más fail de apreiar en las guras 2.11 y 2.12 donde

podemos verlas dos urvas y ómo la que se reerea la variaión enfunión

(53)

Arquitetura de la GPU

GPUsonlassiglasdeGraphiProessingUnit oUnidad deProesamiento

Gráo [PF05℄. El término fue introduido por la ompañía NVIDIA para

designar el nuevo tipo de hardware que venía sustituyendo las tradiionales

ontroladoras demonitores VGA. Como vimos en la seión 1.4.1, estos

pro-esadores fueron diseñados para aliviar la arga detrabajo delas CPUs.

Unaprimeraaproximaiónentrelasarquiteturas GPUyCPUresultadel

estudiodelasinstruionesqueoperansobremúltiplesdatosalmismotiempo

(single instrution on multiple data, SIMD). Para poder operar

simultánea-mente neesitan ejeutarsesobre una ALU espeial que permita tratar datos

en paralelo. LasinstruionesSIMD sesoportan porelhardware

diretamen-te. Enun prinipio, naieronpara aeleraralgunosalgoritmos quepreisaban

ejeuiones sobre paquetes de datos tales omo vetores o matries y es por

ello quenoes deextrañar quelos primerosproesadoresenimplementareste

onjunto deinstruiones fuesen llamadosproesadoresvetoriales.

(54)

Figura 3.1:Comparaióndepotenia(enGIGAFLOPS)entreCPUsyGPUs

laseión3.2,losmódulosmásimportantesdeunaGPUnosonmásqueALUs

espeializadas enun onjuntodeterminadodeoperaiones que tienenque ver

on la transformaión de gráos tridimensionales. Estos módulos poseen un

onjunto de instruiones SIMD orientadas a tales propósitos. Además, para

aelerar todavía más su potenialde álulo, una GPU utiliza estos módulos

en paralelo, ompartiendouna memoria omún.

A lo largo de su evoluión, las GPUs se han aprovehado de las mejoras

téniasenfabriaióndeomponentesparaabaratarsuosteyhansido

fuer-temente inueniadas por la evoluión de dos APIs importantes, OpenGL y

Mirosoft DiretX.Comomuestralagura3.1,lapoteniabrutadelasGPUs

supera on rees la de los proesadores más modernos y ada generaión

(55)

Figura 3.2:Distintasetapasdelrenderizado

3.1. El pipeline gráo

LosingenierosdeSilion Graphis,on suAPIOpenGL,fueron los

prime-rosenestableerelonjuntodeetapasneesariasparainterpretarunonjunto

de vérties tridimensionales omo una imagen bidimensional. Como se

obser-va en la gura 3.2, el proeso general puede resumirse en: transformaión de

vérties, ensamblado de los mismos en primitivas, disretizaión en píxeles,

oloreado de adauno de ellos y mezlaarealizar on elontenidode

memo-ria,normalmentealgunaoperaióndereemplazo [PF05℄.Alaimplementaión

deestasetapasselaonoeporelnombredegraphipipelineotuberíagráa

puesto que losresultados de una etapa alimentan lasiguienteomo si deuna

serie detuberías enadena setratara.

Partiendo dela gura3.2expliaremos las distintas etapas del pipeline.

La primera informaión que reibe una GPU desde el software es la lista

de vérties que onformanlos distintos objetos tridimensionales. Estos

vérti-es son proesados enelproesadordevérties(vertex proessor).Aquí,ada

uno de ellos es transformado desde su posiión iniial hasta el espaio de

vi-sualizaión y oloreado teniendo en uenta una serie defatores omo son las

posiionesrelativas deobjeto, ámaray lues. Comoada vértiees

(56)

Figura3.3: Esquemadetrabajodeunproesadordevérties

al mismo tiempo pordistintosproesadoresenparalelo. LasAPIs OpenGL y

DiretX ofreían distintos efetos omo el onoido ojo de pez y otros. Cada

unodeellospodíaonseguirseongurandoapropiadamentelaAPIparaluego

transformar onseuentementelos vérties haiéndolos atravesar una ruta de

ejeuión distinta a la lásia. Así pues, los nitos efetos soportados por las

APIs suponíanlos nitos modos deejeuión delos proesadoresdevérties.

La gura 3.3 muestra el ujo de trabajo de los proesadores de vérties

(57)

Detalladamente, primero, el proesador opia los atributos del vértie en

una memoriade sólo letura. A ontinuaión deodia lainstruión, lee de

los registrostemporales,proyeta losregistrossobre lasentradas oportunasy

ejeuta lainstruión. Los resultados intermedios pueden esribirse enlos

re-gistrostemporalesytambiénesposibleesribirenlosregistros(sóloesritura)

de salida. Una vez nalizado el proeso, este se repite hasta onsumir todas

las instruiones.Elproesose repiteuna vezporvértiey generaun ujode

datos de salida que alimentarán laentrada de la siguiente fase. Por tanto, la

salida ontendrá losvérties transformados ademásdeotros atributos.

El proesador de vérties tiene apaidad para manipular operandos en

formadevetoresymatries,normalmenteonelementosenomaotanteon

preisión simple.Debidoaquegranpartedesulaborestransformarelespaio

deoordenadas,lasinstruionestípiasontempladassonprodutosesalares

y vetoriales; suma y multipliaión de matries y operaiones ombinadas

omo multipliaióny adiión.

Los vérties transformados de la etapa anterior pasan al ensamblador de

geometría yalrasterizador.Elprimerodeterminalasprimitivasformadaspor

los vérties dela etapa anterior onforme lo indiquenlas reglas de

ensambla-do que aompañan a los mismos. Además desarta aquellos vérties que no

podremosver debidoa quese sitúanfuera del espaiode visualizaión atual

(lipping).Porotraparte,elrasterizadordeterminaquépíxeles(susposiiones

nales en el framebuer) van a ser ubiertos por ada una de las primitivas

generadas en el ensamblador de geometría, qué aras de los mismos deben

dibujarse y uales no, para ello hade transformarlas oordenadas del maro

(58)

denomina ulling 1

.El rasterizadoremite entones una listaon lospíxeles de

pantalla que van a ser ubiertos aompañándolos de informaión extra sobre

ese punto.A la sumapíxel másinformaión se ladenomina fragmento.

Figura3.4:Esquemadetrabajodeunproesador defragmentos

Entones, ada fragmento alanza el proesador de fragmentos (fragment

proessor)queesotraunidaddeproesamientoparalelolaualtansólo

deter-minaráelolornaldeadafragmentoproyetandosobreellosalgunatextura,

lo que determinaráel olor nal del pixel.

1

(59)

Comoenelasodelosproesadoresdevérties,adaAPI ofreíaaquí

dis-tintosefetosquepodíanonseguirsemedianterutasdeejeuiónalternativas.

Elproesodeejeuiónnoesmuydiferentealdelproesadordevérties.El

onjuntodefunionesesesenialmenteelmismoonlasextensionesneesarias

para utilizar texturas. La gura 3.4 presenta el esquema de trabajo de estos

proesadores.

Paree lógio pensar que en una tarjeta haya más proesadores de

frag-mentos que de vérties, pues las primitivas omo los triángulos tienen sólo 3

vérties pero pueden llegar a generar gran antidad de fragmentos, de 100 a

1000 vees más. De heho, así ha venido ourriendo a lo largo de estos años

para ambiar radialmente ahora, on las llegada de la nueva generaión de

tarjetas.

Paraterminar,lospíxelespasaránunaseriedetestpropiosdeadaAPIque

permitirándeidirsihandedibujarseonopudiendoatualizardeestamanera

el espaio de dibujo o framebuer. Por último se apliará una operaión de

fundido(blending)quedeidiráomohademezlarseelfragmentoonelpixel

ya existente.

3.2. Evoluión tenológia de los proesadores

gráos

A lo largo de los años, pueden distinguirse ino generaiones de GPUs

desde lasprimerasontroladorasCRThastanuestrosdías.Enloquea

(60)

mantuvo esenialmente invariable hasta la quinta. Sin embargo, es la uarta

generaión la más amplia y versátil y la que sentaría las bases de una nueva

forma deentender elrenderizado degráos 3D.

3.2.1. Primera generaión

LasprimerasGPUomolaTNT2deNVIDIA,laATIRageola3dfxV

oo-doo3permitíanrealizartodaslasetapasenlaGPUexeptolatransformaión

devértiesysuensamblado.Lastransformaionessemodelanmediante

matri-es 4x4y modian losvértiesmediante suesivasmultipliaiones porestas

matries,porellogranpartedelaargamatemátiaseguíaejeutándosesobre

la CPU. Además implementaban el onjunto de araterístias de la API de

Mirosoft DiretX 6 por lo que soportaban efetos de niebla, ompresión de

texturas, estados demezla, et.

3.2.2. Segunda generaión

La segunda generaión omprende los modelos NVIDIA GeFore 256 y

GeFore2, ATI 7500 y S3Savage3. Implementaban alompleto el proeso de

renderizaiónontandoonalgunasoperaiones detransformaióndevérties

rápidas. Posteriormente, on las nuevas versiones de OpenGL y DiretX 7,

se añadieron algunos efetos omo los mapas úbios de textura (ube map

textures) olas operaiones matemátiason signo.

Como abía esperar, el hardware implementa elmente ada una de las

etapas del pipeline distinguiéndose asi losmismos bloques.

(61)

Figura3.5:Pipelineestándardesegundageneraión

son los primeros pasos haia su programaión. Sin embargo, tendremos que

esperar ala tererageneraión deGPU para advertireste ambio.

3.2.3. Terera generaión

Camino de la programaión total, la terera generaión de GPU

(mo-delos GeFore3/4, Xbox y Radeon 8500) es onsiderada transitoria puesto

que permitía úniamente la programaión de los proesadores de vérties

pero no la de los proesadores de fragmentos. DiretX 8 y las extensiones

ARB_vertex_program de OpenGL permitan ditar una serie de órdenes al

proesador de vérties pero las extensiones para píxeles de ambas APIs no

eran másqueopiones de onguraiónalgo avanzadas.

3.2.4. Cuarta generaión

Por n, la uarta generaión de CPU formada por la series GeFore FX

(62)

Figura 3.6:Pipelineprogramabledeuartageneraión

y fragmentosprogramables.Este heho favoreió laapariión delenguajes de

programaión espeíos omo GLSL, HLSL, Cg, et. En el ontexto de la

industria del videojuego, a los programas esritos bajo estos lenguajes se los

onoe omo sombreadores (shaders);al vertexproessor omo vertex shader

unit y al fragment proessor omo pixel shader unit. De la misma manera, a

los lenguajes de programaión se los llama lenguajes de sombreado (shading

languages).

3.2.5. Haia la quinta generaión

Laevoluiónmásreienteseprodujoonlallegada,enNoviembrede2006,

del hip G80 y la serie GeFore 8800 de NVIDIA. Atualmente ATI uenta

también on sus propiasGPU de nuevageneraión, la serie 2900 XT.

Probablemente,estageneraióndetarjetassuponganlasegundatransiión

evolutivaporintroduir un nuevomodelo deejeuión.Laquinta generaión,

(63)

supo-Figura 3.7:Rendimientodeunaesenasobreunaarquitetura deshadersnouniada

ne la reinvenión del pipeline gráo. Aunque oneptualmente el proeso se

mantiene invariable,lanuevatenología unialosoneptosdeproesadores

programables integrando en las mismas unidades las funionalidades de los

antiguos vertex y fragment proessors. Ahora, la salida de una etapa

reali-mentadenuevolosmismosproesadoresqueejeutaránlasiguienteetapadel

pipeline.

La gura 3.7 reeja dos modelos de distribuión de arga sobre las GPU

(64)

Figura3.8:Rendimientodeunaesenasobreunaarquiteturadeshadersuniada

poligonaióndelobjetoyenlaotra,laargasobreelproesadordefragmentos

debidoalosefetossobrelasuperieoeánia.Enamboselrendimientototal

de lasunidades deáluloes del 50% mientras que sinembargo,ada una de

ellas saturarespetivamente losproesadoresde vérties y fragmentos.

Haiendouso de latenología esposible aprovehar hasta elúltimo delos

(65)

3.3. Conlusiones

GraiasalasGPUsyasusmódulosprogramablesontamosonuna

plata-formaversátilapazdeexplotardiversasformasdeparalelismo.Elparalelismo

de tares, nos servirá en el Capítulo 4 para ejeutar programas distintos que

implementenetapasdelproblemadistintasalmismotiempo.Además,algunos

problemas omo los que estudiaremos a ontinuaión proesan grandes

an-tidades de datos independientes unos de otros y esta naturaleza enaja a la

perfeiónonelmodelodeproesamientodelosfragmentyvertexproessors.

Porúltimo,omoseindióalomienzodeesteapítulo,latenologíaSIMD

onereaestasunidadesunapoteniamuyelevadaalahoradetratarvetores

omatries.Yomoveremos,estasonstruionessepresentanmuyamenudo

en elámbitodel registrode imágenes.

Por tanto,en elpróximoapítulo trataremos deaprovehar las

araterís-tias delasGPUsparaelálulodepropósito generalintroduiendoun nuevo

(66)
(67)

Registro de imágenes en GPU

Hablamosenelapítulo1delaGPGPUomounparadigma.Sinembargo,

para lograr GPGPU son neesarias una serie de ténias que permitan

apro-vehar las araterístias de las GPUs omo proesadores de ujo. Una vez

onoidas estas ténias,el desarrolladorenapsulará lautilidad de latarjeta

gráa en un framework 1

on el que trabajar más ómodamente,

ofreien-do una visión más general del hardware, más orientada haia el modelo de

proesamiento deujos quedesribiremos enla seión4.1.

4.1. El modelo de proesamiento de ujos

En programaión de algoritmos podemos enontrar en muhas oasiones

onstruiones del tipo indiado en el algoritmo 6 que pueden reesribirse

utilizando otra onstruión más abstrata omo la del listado 7. Si además

1

En programaión,unframeworkesunaestruturabásiadóndepuedenresolverse

pro-blemasomplejos.Normalmenteaportanlaseso libreríasparaenapsularfunionalidades

(68)

sabemosqueelómputodeadaindividuoenelonjuntodedatosnodepende

deotrosindividuos delmismoonjunto,odihodeotramanera,sielordenen

el que reorramos la oleión no importa en absoluto, podríamossimpliar

más aun el algoritmo esribiendo algo omo lo mostrado en el pseudoódigo

8.

Algorithm 6 Proesamientode losdatos deuna oleión

for

i

= 1

to

n

do for

j

= 1

to

m

do

valor

[

i

][

j

] :=

F uncionDeInteres

(

i, j

)

endfor

end for

Algorithm 7 Proesamiento de todos los datos de una oleión mediante

bule genério

for all

d

in

datos

do

F uncionDeInteres

(

d

)

end for

Algorithm 8 Proesamientoen paralelodelos datos deuna oleión

AplicarF uncionADatos

(

datos, F uncionDeInteres

)

La funión

AplicarF uncionADatos

(

conjuntoDatos, f

)

aplia

f

a ada uno deloselementosde

conjuntoDatos

enparalelo. Presentamosdeesta ma-nera un nuevo modelo de proesamiento de datos basado en la apliaión de

un programa,llamado(kernel)enla terminologíadeproesamientodeujos,

a todos loselementos dentro deuna oleión o ujo,llamado (stream).

La salida será pues otro ujo de datos que podría alimentar etapas

pos-teriores omo reeja la gura 4.1. A todo ello se lo onoe omo modelo de

ujosy launidadapaz deejeutar un programadeestas araterístiassela

(69)
(70)

4.1.1. Gathering y sattering

Por su omportamiento, los algoritmos pueden lasiarse en algoritmos

de dispersión (sattering)y aumulaión(gathering) [PF05℄.

Al sattering se le onoe también omo esritura indireta omo puede

apreiarse en laeuaión 4.1y onsisteenalular laposiión deesrituraen

funión de aquello que vamos aesribir.

i

=

f

(

x

)

a

[

i

] =

x

(4.1)

El gathering, por ontra, onoido también omo letura indireta (tal y

omo vemos enlaexpresión 4.2) supone onoerlos valores origenenfunión

de laposiiónde esritura.

a

[

x

] =

f

(

v1, ..., v

n

)

dondev

i

=

f

i

(

x

)

(4.2)

4.1.2. El modelo de ujos en la GPU

Reordamos del apítulo 3 que una GPU opera sobre un onjunto de

vér-ties de entrada apliando varios programas a lo largo del pipeline gráo.

Este modelodeejeuión seorresponde on modelodeujosreién desrito.

Así, tenemos dos onjuntos de stream proessors, los vertex proessors y los

fragmentproessors;un ujodedatos independientesentresiatravesandolos

mismos, los streams de vérties; y unos shaders que apliar sobre los datos,

los kernels.

Como los vertex proessors pueden variar la posiión de esritura dentro

(71)

modernaspermitenaesoalastexturasdesdelosvertexproessors,portanto

también puedenrealizaroperaiones degathering. Porotrolado,losfragment

proessors no pueden alterar la posiión de esritura, porque la posiión ya

ha sido alulada por el rasterizador, sin embargo, al poder leer de textura

también soportan operaiones de gathering.

Para elsattering pormedio del vertex proessor onsideramos

a

omo el framebuer,

x

omo un valor prealulado enfunión dela entrada e

i

omo una posiión dentro del framebuer,que depende dela entrada.

Paraelgatheringatravésdelfragmentproessortomaremos

a

omoel fra-mebuer,

i

omounaposiiónpara esatexturay

x

laposiióndel framebuer alulada porel rasterizador,y

v

i

serán valores leídos deuna textura.

Por último,para elgathering a travésdel vertexproessor tomaremos las

mismas onsideraionesquepara elgathering porpíxelproessoron laúnia

diferenia de que

x

puede no estar determinada de antemano, y

a

es el ujo de salida. El proesador de vérties nos permite pues operaiones omo la

expresión 4.3.

x

=

a

[

i

];

o

[

j

] =

x

;

j

=

f

(

i

)

(4.3)

4.1.3. Lenguaje de programaión

Hemos elegidoCg (Cfor graphis) dela ompañía NVIDIA omo

lengua-je de sombreado para programar los kernel. Este lenguaje al estilo C puede

ompilarse bajo distintosperles para luego serargado enlas unidades

(72)

Losperlesson una medidadela potenia del lenguaje y portanto,de la

potenianeesaria delaGPU [FK03℄.En nuestro asofue neesario emplear

el perl VP40 para proesadores de vérties y el perl más moderno que

soporte elhardwareparalosproesadoresdefragmentos.LaeleióndeVP40

es neesaria porque es el primer perl que permite haer letura de texturas

a los vertex proessor,que es algo neesario para realizarel histograma.

4.1.4. Streams y Texturas

Losujosdedatosquelleganhastalosproesadoresdevértiesy

fragmen-tossonoleionesdevetoresde4elementosqueodianlaspropiedadesde

los vérties: posiión, olor, normal... Las texturas 2

son análogosa los arrays

de hasta3 dimensionesdelaprogramaiónlásia. Enellos podemos

almae-nar losdatos deentraday los resultados intermedios de nuestro algoritmo.

Ademásdel ujoiniial deentrada,los proesadoresde vérties y de

frag-mentos emitenotros dos ujos que alimentan las etapas posterioresdel

pipe-line.

4.1.5. El rasterizador

Sepuede pensar enel rasterizadoromo elgenerador de losthreads

para-lelos, yaqueemite muhos másfragmentosqueontendrán atributos

interpo-lados a partir de los que poseían los vérties, generando los índies para una

textura-array.

Elrasterizadorpuedeemitirunaseriedeposiionesnointerpoladassisele

2

Unatexturanoesmásqueunaregióndememoriaalaquepodemosaederpormedio

(73)

enviaron puntos omo primitivas. O también puede interpolar los límites del

rango de una matriz para obtener los índies internos de la misma mediante

el envío de una primitiva quad 3

que tenga omo oordenadas las equinas de

la matriz.Puede verse en detalleen lagura 4.2

Figura4.2:Elrasterizador omoungeneradordeíndies

4.1.6. Retroalimentaión

Los uando un fragment proessor emite su salida, el framebuer omo

se indió en el apítulo anterior, este puede ser mostrado en pantalla o bien

esribirse a una textura (render to texture) enla memoriade la tarjeta. Este

meanismo resulta muy útil pues permite la realimentaión de los datos de

3

(74)

salida haiaelomienzodelpipeline derenderizadopara unaetapadeálulo

on esosdatos.

4.1.7. Memoria de vídeo

Cadaelementodelamemoriadevídeootéxel, tantoenlastexturas,omo

enelframebuer,esunauaternadeelementos,yaqueenunprinipiohasido

diseñada para odiar la informaión delos tres anales RGB y la

transpa-renia.Hemosdeididousarestaaraterístiaparaqueadatexelempaquete

uatroelementosdeunamismala,porloqueunamatrizdedimensiones

mxn

oupará

mx

n

4

texels,ylaolumnai-ésimadetexelsempaquetarálasolumnas

4

i

,

4

i

+ 1

,

4

i

+ 2

y

4

i

+ 3

.

4.2. Implementaión del modelo de

proesamien-to de ujos: el framework

Para eldesarrolladordeGPGPUlatarjeta gráahadepresentarseomo

un proesadordeujosy noomo unsistemaderenderizadodegráos

tridi-mensionales.Paraeste propósitopuededesarrollarseun frameworkqueoulte

la visión de aeleradora 3D y resalte los aspetos más importantes del

pro-esamientode ujos. Así, neesitamos alguna manerade argar los kernel en

los proesadores de ujo, de enviar un stream al omienzo del pipeline, de

reuperar el stream de salida y de omuniar parámetros a los kernel. Estos

han sido losobjetivosdenuestraimplementaión.

(75)

herramientas Cg Toolkit de NVIDIA. Cg Toolkit ofreeuna primera

abstra-ión del las extensiones de OpenGL que permiten la omuniaión on los

módulos programables. Sus araterístias más importantes inluyen el

ofre-er los tipos neesarios para enlazar variables del lenguaje on parámetros o

entradas de los kernels y ontar on su propio ompilador Cg en tiempo de

ejeuión. Elompilador entiempodeejeuión libera aldesarrollador de

te-ner que ompilar explíitamentepara el último perl de fragmentos, referido

en laseión 4.1puesto quees apaz dedeidirqué araterístiasde Cgson

soportadas por la GPU usada,y elegir elperl másavanzadoen el momento

de laompilaión.

4.3. Implementaión del registro de imágenes

El problema de registro de imágenes está onstituido prinipalmente por

labúsquedadelatransformaiónyporelálulodesuaptitudomovimosen

elapítulo2.Enelasodel algoritmodeevoluióndiferenial, laexisteniade

variablesaleatoriasyladependeniadeunosindividuosonotrosnopresentan

un buen esenario para suimplementaión sobre elmodelo de ujos.

Sin embargo,lavaloraión delaaptitud, esdeir, elálulodela

informa-ión mutua resultaun problema muhomáspropiio. Veamos por qué.

Dividiremos elproblema enel álulodel histogramay laobtenión de la

Figure

Actualización...

Referencias

Actualización...

Related subjects :