Você está na página 1de 47

!"#$%&'"($)# + %,-(./"0$.

#1-
2. $034.#./ (-# 5,-(.//$#4
Cb[euvos
LnLender la forma en que se represenLan las
lmgenes en el mblLo dlglLal.
Conocer y uullzar Lecnlcas de procesamlenLo de
lmagen dlglLal denLro de un lengua[e de
programacln.
Aprender como desarrollar algorlLmos de
procesamlenLo de la lmagen a parur de funclones
slmples.
lmagen ulglLal
uesde un punLo de vlsLa meramenLe Lecnlco,
la dlferencla enLre las lmgenes analglcas y
las lmgenes dlglLales, es que esLas ulumas
son nada ms nl nada menos que un con[unLo
de plxeles ordenados por las y columnas, en
denluva una maLrlz de plxeles.
lmagen ulglLal
Sl blen exlsLen dlferenLes upos de denlcln de maLrlz, en esLe
LexLo lnLeresa la que se reere al mblLo de la programacln.
uesde esLe punLo de vlsLa, una maLrlz puede verse como un
con[unLo de elemenLos ordenados en las y columnas.
Se consldera a las maLrlces como zonas de almacenamlenLo
conunuas de elemenLos, en donde esos elemenLos pueden ser
Lamblen plxeles.
una lmagen puede ser represenLada medlanLe esLas maLrlces de
plxeles [usLamenLe por que se LraLan de arreglos dlmenslonales
(exlsLen LanLo de 2 como de 3 dlmenslones).
lmagen ulglLal
Cada lmagen posee una canudad de plxeles
deLermlnada por su ancho y alLo.
Asl, por e[emplo, una lmagen de 1280 plxeles
de largo por 1024 de alLo Lendrla en LoLal
1.310.720 plxeles, o sea 1.3 Megaplxeles de
resolucln.
lmagen ulglLal
Slempre hay que recordar que un plxel es la
unldad ms pequena con la que se puede
Lraba[ar en una lmagen dlglLal.
Ls lnLeresanLe enLender que un plxel no solo
conuene la lnformacln espaclal (poslcln x e
? en el caso de una lmagen bldlmenslonal)
slno Lamblen lnformacln de color y en
muchos casos Lransparencla.
lmagen ulglLal
Adems, en algunos formaLos de lmagen, cada
plxel uene lo que se denomlna una profundldad
de color, LraLndose esLo del numero de blLs que
se uullzan para codlcar el color de un plxel.
Sl se uene 4 blLs de profundldad de color, se
pueden Lener 16 colores, con 8 blLs se pueden
Lener 236 colores dlferenLes (la escala de grlses
por e[emplo).
lmagen ulglLal
Los formaLos de lmagen camblan sus
caracLerlsucas de profundldad de Lal manera
que pueden ser ms o menos preclsos con la
represenLacln y el color.
A conunuacln, se observan algunas de las
caracLerlsucas que uenen clerLos formaLos
soporLados por rocesslng:
lmagen ulglLal
Formato Extensin Profundidad de color Transparencia
GIF .gif 1 bit a 8 bits 1 bit
JPEG .jpg 24 bits No tiene
PNG .png 1 bit a 24 bits 8 bits
lmagen ulglLal
LxlsLen muchos formaLos de lmagen dlglLal
con los que se pueden Lraba[ar, para ampllar
esLa lnformacln puede consulLarse el
slgulenLe LexLo:
C8uCRLZ SAn1lACC CA (2003), "lormaLos de lmagen ulglLal" en: !"#$%&' )$*$&'+
,-$#".%$&'.$'/ 0123/ ,456, Mexlco.
lmagen ulglLal
Como se observa en la Labla anLerlor, algunos
formaLos uenen Lransparencla, y Lamblen
dlferenLes profundldades.
ue esLa slmple expllcacln se puede derlvar, por
e[emplo, la ldea de compresln de la lmagen,
debldo a que una lmagen en formaLo de menor
profundldad de color, ser represenLada de
forma dlferenLe que con un formaLo de mayor
profundldad.
lmagen ulglLal
uebldo a que se LraLa de un con[unLo de plxeles,
la lmagen dlglLal puede ser descompuesLa para
manlpular cada uno o un con[unLo de esLos, y asl
camblar sus caracLerlsucas fundamenLales de
esLrucLura o composlcln, o procesarlas de Lal
manera que se convlerLan en lmgenes
LoLalmenLe nuevas.
LsLo es poslble de reallzar medlanLe Lecnlcas y
algorlLmos que sern revlsados en esLa clase.
lmagen ulglLal
uesde un punLo de vlsLa ms plcLrlco, una lmagen es una
reproduccln de la forma y conLenldo de un ob[eLo.
Como una reproduccln, se puede asoclar a la lmagen a las
noclones de represenLacln, lnLerpreLacln, dupllcacln y
Loma de muesLras.
uebldo a su naLuraleza represenLaclonal, las lmgenes son
asocladas con los ob[eLos que represenLan (en el me[or de
los casos), y por lo LanLo una alLeracln de sus elemenLos
puede afecLar las emoclones del especLador o Lransmlur
mensa[es lndlrecLos.
lmagen ulglLal
or lo LanLo, la yuxLaposlcln de lmgenes, el
col l age, superposl cl n, l Lrado y oLras
operaclones relaclonadas con la lmagen pueden
ser usadas para mover l os l l ml Les de
lnLerpreLacln de una lmagen.
8evlsar la manlpulacln de esLas caracLerlsucas y
aprender algunos algorlLmos bslcos de
procesamlenLo uullzando el lengua[e de
programacln rocesslng es el ob[euvo de esLa
clase.
vlsuallzacln y poslclonamlenLo de
lmgenes
La manlpulacln de archlvos de lmgenes en
dlferenLes formaLos y su exlLoso poslclonamlenLo
son las meLas lnlclales del Lraba[o con lmgenes
dlglLales.
Lo lnLeresanLe es que rocesslng no solo uene la
capacldad de reallzar esLar acclones, slno que en
realldad se pueden manlpular Lodos los plxeles
de una lmagen de forma colecuva o lndlvldual.
lunclones bslcas para lmgenes
Ln rocesslng las lmgenes son manlpuladas como arrays.
Ln prlmera lnsLancla ya se cuenLa con un upo excluslvo de daLos
para las lmgenes denomlnado lmage.
LsLe upo de daLos guardar la lnformacln que se cargue desde un
archlvo de lmagen con exLensln glf, [pg, png y Lga.
ara guardar una lmagen denLro del upo de daLos lmage se uullza
la funcln loadlmage, la cual reclbe la ruLa de la lmagen que se
qulere cargar:
lmage lmagen = loadlmage(lmagen.[pg"),
lunclones bslcas para lmgenes
Ln esLe e[emplo se crea una varlable con el upo
de daLos lmage, llamada lmagen, a la cual se le
carga un archlvo de lmagen llamado lmagen [pg.
ue esLa manera, ya se uene dlsponlble la
lnformacln de la lmagen requerlda denLro de
una varlable, de manera Lal que a parur de ese
momenLo se puede manlpular los daLos de forma
dlrecLa.
lunclones bslcas para lmgenes
Algo lmporLanLe denLro de rocesslng es que
sl se colocan las lmgenes que se uullzan en el
programa denLro de la carpeLa uaLa, solo con
lndlcar el nombre de la lmagen a cargar es
suclenLe, de lo conLrarlo hay que lndlcar la
ruLa compleLa de la mlsma.
lunclones bslcas para lmgenes
una vez que se uene cargada la lmagen en la varlable,
se debe uullzar oLra funcln para lograr poslclonarla y
vlsuallzarla.
LsLa funcln es la denomlnada lmage(), la cual reclbe
como parmeLros la varlable donde esL guardada la
lmagen y la poslcln x e y que se requlere.

lmage(lmage lmagen, x, y),
lunclones bslcas para lmgenes
Muchas veces es necesarlo que la venLana Lenga el mlsmo Lamano
que la lmagen.
ara esLo es uul saber que denLro de la varlable del upo lmage se
uene Lamblen los daLos del Lamano de la lmagen cargada.
lmagen.wldLh, nos dar el ancho de la lmagen cargada.
lmagen.helghL nos dar el alLo de la lmagen cargada.

L!LMLC 1
Manlpulacln plxel por plxel
Cualquler plxel de una lmagen dlglLal puede ser
manlpulado denLro de rocesslng.
Se puede querer obLener lnformacln de un plxel
deLermlnado o se puede querer congurar un
plxel de alguna manera en parucular.
ara ello se uullzan las funclones geL() y seL()
respecuvamenLe.
Manlpulacln plxel por plxel
geL()puede reclblr hasLa cuaLro argumenLos(x, y, w, h).
Los dos prlmeros, xy, son los que lndlcan que o desde que
plxel queremos obLener lnformacln, los dos slgulenLes, w
y h son para deLermlnar una zona de la lmagen de la cual se
qulere obLener lnformacln, serlan el ancho y el alLo de un
recLngulo cuyo veruce superlor lzqulerdo esLa en las
coordenadas x y.
or supuesLo, sl no se lndlca ancho y alLo, se uene la
lnformacln de un solo plxel.

geL(x, y, w, h),
Manlpulacln plxel por plxel
seL() reclbe Lres argumenLos, las coordenadas xy de un
plxel y el color que Lendr esLe plxel, y congura el
color de ese plxel con la varlable de color que se paso a
la funcln.

seL(x, y, color),

1amblen puede reclblr como Lercer argumenLo una
lmagen deLermlnada.
seL(x, y, lmg),

Manlpulacln plxel por plxel
CLras caracLerlsucas lnLeresanLes que se pueden exLraer de
un plxel son su valor alfa, y las componenLes ro[o, verde y
azul.
ara esLo exlsLen cuaLro funclones alpha(), red(), green() y
blue(), cada una de las cuales obuene la lnformacln
especlca de cada plxel.
LsLas son las llamadas componenLes de una lmagen dlglLal.
L!LMLC 2

lllLros pre congurados
rocesslng ofrece una serle de lLros pre
congurados que pueden ser apllcados a una
lmagen.
ara esLo se uullza la funcln lLer(), el cual apllca
un lLro a una lmagen uullzando la slgulenLe
slnLaxls:

lLer(MCuL),
lLer(MCuL, level),
lllLros pre congurados

1P8LSPCLu: ConvlerLe los valores de color de los plxeles de la lmagen en negro o
blanco dependlendo del valor denldo por el argumenLo level. Sl el valor del
argumenLo es 0.0, la lmagen ser LoLalmenLe negra, sl es 1.0 la lmagen ser
LoLalmenLe blanca, en valores lnLermedlos hay un balance enLre esLos dos colores.
Sl no se lndlca el argumenLo level se a[usLa 0.3 por defaulL.
C8A?: ConvlerLe cualquler color de la lmagen en su equlvalenLe en escala de
grlses.
lnvL81: Congura cada plxel de la lmagen con su valor lnverso.
CS1L8lZL: LlmlLa cada canal de la lmagen a el numero especlcado (un nlvel de
color) por el argumenLo level.
8Lu8: L[ecuLa un desenfoque del upo gauslano que depende del parmeLro level.
Sl esLe parmeLro no es lndlcado, el desenfoque equlvale a un desenfoque
gauslano de radlo 1.
CACuL: Congura el canal de alfa de la lmagen en LoLalmenLe opaco.
lllLros pre congurados

Ll desenfoque gausslano se reere a un desenfoque de la lmagen a
parur de una dlsLrlbucln probablllsuca de los elemenLos de la
lmagen del upo gausslano.
Su nombre provlene de la llamada funcln gausslana (en honor a
Carl lrledrlch Causs, el gran mLemuco alemn).
LsLa dlsLrlbucln gausslana es una de las que con ms frecuencla
aparece aproxlmada en los fenmenos reales, por lo que su uso en
esLe upo de desenfoques es sumamenLe alLo.
LxlsLen muchos upos de dlsLrlbucln probablllsuca, pero la
gausslana es qulzs una de las preferldas en el procesamlenLo de
lmagen dlglLal. un e[emplo de funcln gausslana en la slgulenLe
lmagen:
lllLros pre congurados
L!LMLC 3
lllLros pre congurados

uenLro de esLa caLegorla de lLros se puede anadlr el uso de la
funcln unL().
LsLa funcln es el equlvalenLe de la funcln ll() que se esLudlo en
caplLulos anLerlores, pero para el uso en lmgenes.
Craclas a unL() se puede congurar el color y la Lransparencla alfa
de cualquler lmagen que se encuenLre vlsuallzada en el skeLch.
uebldo a que una lmagen no uene un solo color, unL() reclbe como
argumenLo la canudad de color y Lransparencla que se congura a
cada plxel.
or lo LanLo esLa funcln puede reclblr enLre uno y cuaLro
argumenLos:
lllLros pre congurados

Color en escala de grlses
6#17489
Color en escala de grlses ms Lransparencla
6#174: 189
Color en 8C8
6#17,: 4: ;89
Color en 8C8 ms Lransparencla
6#17,: 4: ;: 18 9

<=<!5>? @
Manlpulacln avanzada de plxeles
Ls lnLeresanLe pensar que mlenLras los lLros que se
proveen en rocesslng de forma pre congurada son
adecuados para procesamlenLos bslcos de la lmagen,
esLos no permlLen experlmenLar ms all de un nlvel
slmpllcado.
Ln conLrasLe con esLos lLros, uullzando las funclones
geL() y seL() pueden ser creados lLros a medlda.
Los e[emplos que se revlsaron anLerlormenLe donde se
uullzaban las funclones geL() y seL() en general Lraba[an
con Lodos los plxeles de una lmagen de forma
secuenclal, y no es necesarlo saber exacLamenLe en
que lugar del array se encuenLra cada plxel.
Manlpulacln avanzada de plxeles

ero en muchas de las apllcaclones de
procesamlenLo de lmagen esLa lnformacln
espaclal es cruclal.
una caracLerlsuca que uene rocesslng es que
una lmagen al ser cargada es guardada en un
array de una sola dlmensln, conLenlendo la
lnformacln de las coordenadas x? de cada
plxel.
Manlpulacln avanzada de plxeles

11

23

81

34

24

51

16

72

81



11

23

81

34

24

51

16

72

81
Lo lmporLanLe es enLender como un array llneal unldlmenslonal como esLe:






uede ser lnLerpreLado como un maLrlz (la propla lmagen) como esLa

Manlpulacln avanzada de plxeles

Sl se asume que se sabe que Lamano uene la lmagen (lo hacemos
medlanLe las caracLerlsucas wldLh helghL de cada lmagen), se calcula la
canudad de plxeles como el largo por el ancho de la lmagen, y para saber
la ublcacln en esLe array de cualquler plxel solo se debe respeLar la
slgulenLe ecuacln:

ublcacln = x + (? * Wlu1P)

una vez que ya se sabe como acceder a cada uno de los plxeles de la
lmagen cargada, se debe saber Lamblen que, para acceder al array de la
lmagen de forma dlrecLa, se uullza el array especlal plxels[].
plxels[] conuene los valores de Lodos los plxeles de la venLana de
rocesslng.
LsLos valores son del upo de daLo color. Ll lndlce del array dene la
poslcln de cada elemenLo.
Manlpulacln avanzada de plxeles

or e[emplo sl se reallza la slgulenLe operacln,
buscando un plxel por su ublcacln en el array:

color b = plxels[230],

La varlable b Lomar los valores de color de esa
ublcacln especlca.
Lo lnLeresanLe de esLe array especlal es la ldea de que
en realldad uno puede acceder a Lodos los plxeles de
una venLana de vlsuallzacln de rocesslng, donde
puede haber ms de una lmagen.

Manlpulacln avanzada de plxeles

ara poder Lraba[ar con esLe array especlal se debe
uullzar dos funclones, una anLes de uullzarlo y oLra
luego de hacerlo.
LsLas funclones son loadplxels() y updaLeplxels(). La
prlmera, loadplxels(), se uullza anLes de uullzar el array
especlal plxels[], y uene la Larea de avlsarle a
rocesslng que se esL por uullzar esLa lnformacln.
La segunda, updaLeplxels(), se uullza cuando ya se
Lermlno de usar el array y le lndlca a rocesslng que
puede acLuallzar los plxeles en la panLalla.
Manlpulacln avanzada de plxeles
LsLa forma de Lraba[ar con los plxeles de una lmagen
uene la venLa[a de ser ms veloz.
Ln el caso de seL() y geL(), lo que sucede es que se
acLuallza cada plxel en cada momenLo, Lomando un
uempo en cada caso.
ue esLa nueva forma, se procesan Lodos los plxeles y
luego se los muesLra Lodos [unLos, reallzando la
vlsuallzacln una sola vez en Lodo el proceso.
L!LMLC 3
Manlpulacln avanzada de plxeles
ue esLa manera se Lorna senclllo procesar los plxeles
correspondlenLes a una venLana de vlsuallzacln de
rocesslng.
A conunuacln se muesLra como se reallza el
procedlmlenLo anLerlor pero en una lmagen
deLermlnada y uullzando los nuevos elemenLos que se
presenLaron para el mane[o de plxeles.
resLar especlal aLencln en cmo se accede al array
especlal plxels[] de la propla lmagen.
L!LMLC 6
Algunos algorlLmos bslcos para
procesamlenLo de lmgenes
Ln el prlmer caso, a parur del lLro exlsLenLe
C8A?, provlsLo por rocesslng, se puede
generar un efecLo donde se remarca la
dlferencla de los plxeles que presenLan los
bordes de la lmagen.
Algunos algorlLmos bslcos para
procesamlenLo de lmgenes
Ll algorlLmo uullzado es muy senclllo.
Se parLe de la ldea de que el lLro C8A? genera una escala de grlses
Ln general los bordes de una lmagen se caracLerlzan por Lener valores ms
cercanos al negro (asl se observa la marca del borde [usLamenLe).
Se van comparando los plxeles hasLa que alguno presenLa una dlferencla en el
componenLe de color ms grande que oLro (un color ms oscuro Lendr cualqulera
de sus componenLes de color ms alLos, en esLe caso se comparan los
componenLes ro[os de cada plxel) y sl la dlferencla supera un umbral, se plnLa el
plxel con el componenLe de ro[o ms alLo, de negro, marcndolo como un borde.
Ll secreLo de la eclencla de esLe senclllo algorlLmo es esLablecer un umbral
correcLo, el cual seguramenLe se plasmar en lmgenes de sallda dlferenLes.
L!LMLC 7
Algunos algorlLmos bslcos para
procesamlenLo de lmgenes
CLro algorlLmo slmple pero lnLeresanLe y vlsualmenLe efecuvo es el
uullzado para generar un corrlmlenLo en los plxeles de una lmagen
logrando un efecLo slmllar al de una plnLura punulllsLa.
Ll procesamlenLo es sumamenLe senclllo, pero el efecLo es conLundenLe.
Se Loma la poslcln orlglnal de cada plxel y se lo reublca de forma
aleaLorla una clerLa canudad de lugares, luego se dlbu[a un cuadrado del
mlsmo color que el plxel pero que cubre varlos plxeles, en esLe caso 4x4,
lo que hace que la lmagen se alLere.
L!LMLC 8
Algunos algorlLmos bslcos para
procesamlenLo de lmgenes
una forma ms dlrecLa de apllcar algun upo
de procesamlenLo sobre una lmagen es
Lomando una lmagen y reallzar deLermlnadas
operaclones con maLrlces.
S1LLCMAnn ASCuAL C, 8Cu8lCuLZ vLLAZCuLZ !A, L8LZ AA! (2002),
"Algebra de maLrlces" en: 7.89":&8 ";6'&</ ,-$#".%$='= 5>$".&' ="
?'&'+@A', Lspana.
Algunos algorlLmos bslcos para
procesamlenLo de lmgenes
una operacln lnLeresanLe es uullzar las denomlnadas maLrlces de convolucln.
una maLrlz de convolucln no es oLra cosa que una maLrlz cuadrada que uene una
dlmensln deLermlnada, por e[emplo Lres elemenLos por Lres elemenLos (3 las x
3 columnas), los cuales conuenen valores numerlcos.
Apllcar un lLro de convolucln no es oLra cosa que superponer la maLrlz de
convolucln sobre una parLe (o Loda la lmagen, dependlendo del Lamano de la
maLrlz) de una lmagen.
La operacln se reallza mulupllcando el valor de cada cuadrlcula de la maLrlz por el
correspondlenLe a la mlsma ublcacln de la parLe de la lmagen selecclonada, luego
se suman Lodos los valores y se obuene un promedlo del resulLado que luego ser
aslgnado al plxel cenLral.
ue esLa manera se obLendrn nuevos valores de color y LexLura en esa poslcln de
la lmagen.
Algunos algorlLmos bslcos para
procesamlenLo de lmgenes
Algunos algorlLmos bslcos para
procesamlenLo de lmgenes
LsLe upo de procesamlenLo en realldad propone un promedlo ponderado de un
plxel de enLrada y los plxeles veclnos.
Ln oLras palabras, el nuevo plxel que se obuene despues del procesamlenLo es una
funcln de los plxeles veclnos.
ue esLa manera se pueden Lener dlferenLes upos de maLrlces que Lengan un plxel
cenLral como 3x3 o 3x3.
Los valores de los plxeles llmlLrofes sern los que lmpongan el upo de
procesamlenLo.
ue esLa manera medlanLe dlferenLes upos de comblnaclones de plxeles veclnos
resulLan en efecLos dlferenLes.
or e[emplo, sl se desea solamenLe las frecuenclas alLas de una lmagen (colores
ms claros) se debe Lener una maLrlz que lncremenLe el plxel cenLral y ba[e los
plxeles veclnos. una maLrlz como la slgulenLe serla de mucha uulldad:
Algunos algorlLmos bslcos para
procesamlenLo de lmgenes
-1 -1 -1
-1 9 -1
-1 -1 -1

? [usLamenLe, esLe es un e[emplo de una maLrlz para apllcar un
lLro pasa alLo a un con[unLo de daLos.
LsLe upo de procedlmlenLo es Lamblen conocldo como lLrado
espaclal.
ALuALu8 8, SAn1AMA8lA M (2002), "8ealce de lmgenes: lLrado espaclal" en: !"#$%&' ="
B"+"="&"::$C-/ D2/ 5%8:$':$C- E%F'A8+' =" B"+"="&"::$C-, Lspana.

L!LMLC 9
Algunos algorlLmos bslcos para
procesamlenLo de lmgenes
ara Lermlnar, se presenLar un ulumo algorlLmo de procesamlenLo el
cual genera un efecLo de llumlnacln, uullzando solo un clculo slmple de
dlsLancla enLre plxeles.
MedlanLe el movlmlenLo del mouse por la venLana se puede lr llumlnando
las dlferenLes parLes de la mlsma.
ara esLo se calcula la dlsLancla enLre el cursor del mouse y los plxeles
clrcundanLes. A parur de esLa dlsLancla se Loma la declsln de la canudad
de componenLe de color que se le da a los plxeles que conforman el foco
de la llumlnacln.
Ll Lamano de esLe foco, asl como el nlvel de llumlnacln, es varlable y
LoLalmenLe congurable.
MedlanLe un e[emplo, adapLado a parur de un e[emplo de uanlel
Shlman, se observa cmo reallzar los clculos de dlsLancla y apllcar el
lLrado de brlllo.

Você também pode gostar