|

Procesado
digital de imágenes.
Software
Por Arturo Olivares
La
palabra software es un vocablo ingles de dos palabras "soft"
suave, blando y "ware" componente, producto. Obviamente
esta palabra se refiere a todo lo relacionado con programas de computación
en todos los lenguajes que existen, y de toda las consecuencias
que se han derivado de estos lenguajes. En pocas palabras el "mundo
virtual".
El
sofrware es la parte importante entre la comunicación hombre
y máquina "computadoras. Hoy en día lo que conocemos
como software, ha evolucionado y ha formado estructuras de lenguajes
muy complejos, las cuales requieren de mucha memoria, todo ello
con el fin de hacer más amigable los ambientes de comunicación
entre el usuario y la computadora. El área de procesado digital
de imágenes en los países avanzados a progresado enormemente,
el cual existe compañías especializadas que trabajan
en la investigación "Nasa ", para filtraje y restauración
de imágenes de satélites en misiones espaciales o
locales. En la industria militar en el estudio de análisis
de imágenes para detectar movimientos y macros amplificación
de imágenes con características muy particulares cambios
de esta etc., la Industria del entretenimiento "cine",
y por último en la industria de las comunicaciones con el
advenimiento de la "Internet".
En
referencia a este último es uno de las áreas con mas
desarrollo y donde más dinero se emplea en la investigación
de nuevos programas "software" para efectos especiales
de transporte de información, tanto de vídeo como
de audio.
El futuro de las comunicaciones se ve perfilándose por la
super carretera de la información, tanto las computadoras
como los teléfonos como los televisores se fusionaran en
un solo producto de gran potencial.
El software con todos estos adelantos evoluciona hacia lenguajes
mas poderosos de gran capacidad de manipulación de datos
y de gran velocidad, esto es que el software no sea un cuello de
botella que limite los tiempos de proceso, se buscan y se diseñan
nuevas arquitecturas tanto de hardware como software para optimizar
procesos y hacer más eficiente el desempeño de las
nuevas tecnologías
En
la disciplina de procesado digital de imágenes en México
se desarrolla software con lenguaje tradicionales como C++, Borlan
C, Visual C, Pascal, Fortran etc. Estos lenguajes permiten a los
investigadores desarrollar técnicas de procesado y filtrado
pero con fines académicos y no fines comerciales. Debido
a que estamos lejos de competir comercialmente con las grandes compañías
de software del mundo, tal vez sea posible participar en un paquete
de desplegado y tratamiento de imágenes para una compañía
de alta competitividad.
En
el presente artículo hacemos un ejemplo de software, en este
caso para manipular imágenes para el efecto de estereovisión
.
ANÁLISIS
Y MANIPULACIÓN DE IMÁGENES PARA ESTEREOVISIÓN
Las imágenes son capturadas a colores mediante una cámara
digital o cámara de vídeo, las cuales son digitalizadas
y procesadas en la computadora en un formato BMP
( Bit Maps Pictures ), con 256 paletas de color en los mapas de
bits. Usando el software MathcadÒ 7, y empleando las rutinas para
exportar y traer imágenes o gráficas como las siguientes:
La
función READBMP(file) Crea un archivo en una representación
matricial en niveles de gris, con con 256 paletas de color en
los mapas de bits , a partir de una imagen a color con formato
BMP. El valor del elemento de matriz corresponde el sombreado
del nivel de gris asociado al pixel correspondiente. Cada elemento
es un número entero entre 0 (oscuro) y 255 (blanco).
La
función READRGB(file) Crea un archivo en una representación
matricial, el cual contiene información de los colores, representados
en valores apropiados de rojo, verde y azul. Esta matriz consiste
de tres submatrices, cada una con el mismo número de renglones
y columnas. Tres elementos de matriz, corresponden a un solo elemento
por cada pixel de la imagen. Cada elemento es un número entreo
entre 0 y 255. Los tres elementos correspondientes, siempre se toman
juntos para establecer el color del pixel.
Si tenemos un archivo con una imagen a color en formato BMP , ejemplo
cara.bmp la función antes descritas se emplean de la manera
siguiente:
Se
asigna la dirección y ubicación del archivo, mediante
una variable, ejemplo :
A
=c/imágenes/flor.bmp
Y
se asigna a la función de interés a una variable o
palabra, ejemplo:
Gris=READBMP(A)
Color=READRGB(A)
A
continuación se determinan los reglones por "r"
y columnas "c" de la matriz Color:
r=rows(Color)-1
Después
se separan las tres submatrices, que contienen la información
de los colores rojo, verde y azul para poder manipularlos a nuestro
interés.
rojo=submatrix(Color,0,r,0,c-1)
verde=submatrix(Color,0,r,c,2*c-1)
azul=submatrix(Color,0,r,2*c,3*c-1)
Estos
tres archivos por separado se representan en niveles de gris de
0 a 255 valores, ver Fig.1a, con estos 3 archivos es posible construir
una imagen a colores Fig.1b, de la forma:
arba
Fig.(1a)
separación en niveles de gris de una escena en color
|

(rojo,
verde y azul)
Fig.(1b)
imagen con sus respectivas paletas de color
|
ESTEREOVISIÓN
Y EL PUNTO DE ACOMODACIÓN
Para lograr el fenómeno de estereovisión es necesario
tener dos imágenes planas a colores o en niveles de gris
con una diferencia angular entre cada toma, esto solo se logra para
escenas de objetos en 3D. Como se puede observar la primera toma
de la escena corresponderá a la imagen plana que observará
el ojo derecho Fig.(2a), y la segunda toma corresponde a la imagen
plana para el ojo izquierdo Fig.(2b). Un punto importante a considerar
es que las tomas de ambas imágenes tengan un punto de acomodación
( cuando los dos ojos coinciden en el mismo punto de observación)
de referencia. En nuestro caso corresponde a la flor central.

br,bg,bb
cr, cg, cb
fig(2a)imagen
para el ojo derecho
fig (2b)imagen para el ojo izquierdo
|
El
punto de acomodación de referencia es importante por que
de ello depende el efecto de profundidad a observar. Se presentan
tres casos: Si las escenas se toman con el punto de acomodación
sobre el objeto mas cercano a la cámara fotográfica.
Se observará un efecto de profundidad a partir del plano
donde se ubican las escenas.Cuando el punto de acomodación
se ubica en un plano intermedio entre el objeto mas cercano a la
cámara fotográfica y el objeto más alejado
de la cámara fotográfica. En este caso se ven imágenes
que sobresalen del plano donde se ubican las escenas e imágenes
atrás de este plano. En el caso cuando el punto de acomodación
se ubica al objeto más alejado de la cámara fotográfica.
La observación corresponde a imágenes que sobresalen
del plano donde se ubican las escenas.
INTERPOLACIÓN
E INTERCALACIÓN DE LAS IMÁGENES:
La escénica de este trabajo, corresponde a la técnica
de intercalación de imágenes, las cuales se mapea
una escena en una representación de columnas pares (para
el ojo derecho) y la otra escena a las columnas impares (para el
ojo izquierdo). La separación de cada imagen para cada ojo,
se logra mediante el efecto de rejillas de polarizadores o elementos
polarizantes los cuales generan por cada elemento de la rejilla
estados perpendiculares de polarización. En esta técnica
las escenas al ser representadas en una serie de columnas pares
o imapres se deforman, debido a que el área física
de la escena se expande en un factor de dos en una dirección.
Por este motivo es necesario una interpolación de los renglones,
para incrementar el número de elementos de las columnas.
Esta interpolación puede ser simplemente por: replica de
valores, promedio, splines cúbicos etc. . Estas interpolaciones
se aplican a cada archivo de niveles de gris que representan los
colores para cada escena.
Después
de obtener las submatrices, rojo, verde y azul, es necesario aplicar
la interpolación a cada submatriz . En el presente trabajo
se aplicó el criterio de replicasión de pixeles dado
su simplicidad.
En principio para obtener los índices de la submatriz aplicando
la función Gris obtenemos los subíndices de la submatriz
roja, el cual tiene el mismo número de elementos que las
submatrices verde y azul. Por tanto,
i
=0...rows(rojo)-1 j=0...cols(rojo)-1
Creando tres matrices subindizadas de la forma:
rrj
= rojoij, vij = verdeij,
aij = azulij
En
la interpolación de renglones, para incrementar el número
de elementos de las columnas, esto es; subíndice "i"
tenemos que manejar un subíndice comodín, que corresponde
al doble de elementos que el subindices "i", esto es "ii"Ó:
ii=2*i
ii=0...2*row(rojo)-1
Se
crea entonces seis matrices con subíndices pares e impares,
a partir de las submatrices rojo, verde y azul respectivamente.
ir1
2*i,j = r i,j - - - - - - ir2 2*i+1,j
= r i,j
iv12*i,j
= v i,j - - - - - - iv2 2*i+1,j = v i,j
ia1
2*i,j = a i,j -- - - - ia2 2*i+1,j =
a i,j
Después
se reagrupan cada matriz con los subindices pares e impares, para
formar una matriz con el doble de elementos en sus columnas, para
cada color, obteniéndose tres matrices de la forma:
jr
ii,j = if [( ii -
- floor ( ii
)} - = 0, ir1 ii,j , ir2 ii,j ]
_______-_________ -
- - - - -___
- 2- - - ----- - -2- - - --- - - - - - -
iv
ii,j = if [( ii -
- floor ( ii
)} - = 0, iv1 ii,j , iv2 ii,j ]
_____________________________- -
- - - - -
_____________?2__________2__________________-- -
- - - - -
ja
ii,j = if [( ii-
- floor ( ii
)} - = 0, ia1 ii,j , ia2 ii,j ]
________________________
----2------------2-------------------
La
función floor le quita las partes fraccionarias de la expresión
(ii/2). Las matrices ir, iv, ia, son ahora una triada de matrices
de niveles de gris que al juntarse forman una matriz a color pero
con la imagen incrementada en sus valores a lo largo de las columnas.
como se observa en la Fig.(3a,b).
fig.
(ur,ub,ub) fig. (vr, vg vb)
ESPACIAMIENTO
ENTRE COLUMNAS E INTERCALACIÓN
Las submatrices ir, iv,ia, por separado se expanderan con el criterio,
de mapear cada matriz a una matriz con el doble de terminos en el
subíndice ÒjÓ , creando un subíndice comodin ÒjjÓ
para espaciar las columnas de cada submatriz.
jj
= 2* j - - - - - - - - - jj = 0....2* cols(rojo) -1
Se
crea entonces seis matrices con subíndices pares e impares,
donde estos últimos son iguales a cero, para tener en las
columnas pares representada la imagen a color a partir de las submatrices
interpoladas rojo ÒirÓ, verde ÒivÓy azul ÒiaÓ respectivamente:
jr1
ii,2* j = ir ii,j - - - - - - -
- - jr2 2*i+1,j = 0
jv1
ii,2* j = iv ii,j - - - - - - -
- - jv2 2*i+1,j = 0
ja1
ii,2* j = ia ii,j - - - - - - -
- ja2 2*i+1,j = 0
Después
se reagrupan cada matriz con los subíndices pares e impares,
para formar una matriz con el doble de elementos en sus renglones
, teniendo como consecuencia un espaciamiento entre las columnas,
para cada color, obteniéndose tres matrices de la forma:
jr
ii,jj = if [( jj -
- floor ( jj
)} - = 0, ir1 ii,j , ir2 ii,j ]
_____________ - - - - - -___
- - - - - - - ----2 - - - - - - - -2
jv
ii,jj = if [( jj -
- floor ( jj
)} - = 0, iv1 ii,j , iv2 ii,j ]
_____________ - - - - - -___
- - - - - - - ----2 - - - - - - - -2
jf
ii,jj = if [( jj -
- floor ( jj
)} - = 0, ia1 ii,j , ia2 ii,j ]
_____________ - - - - - -___
- - - - - - - ----2 - - - - - - - -2
Las matrices jr, jv, ja, son ahora una triada de matrices de niveles
de gris que al juntarse forman una matriz a color pero con la imagen
incrementada en sus valores a lo largo de los renglones, provocando
que exista un intercalación entre las columnas pares y las
impares . como se observa en la Fig.(4).

.

|