Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programa de teora
1. Adquisicin y representacin de imgenes. 2. Procesamiento global de imgenes. 3. Filtros y transformaciones locales. 4. Transformaciones geomtricas. 5. Espacios de color y el dominio frecuencial. 6. Anlisis de imgenes. 7. Vdeo y sonido digital.
Procesamiento Audiovisual (c) Gins Garca Mateos, http://dis.um.es/profesores/ginesgm Tema 2.Informtica Procesamiento global de Universidad imgenes. de Murcia Dept. de y Sistemas,
67
87 102 83 69
68
73 89 109 92
75
78 76 80 115
78
82 98 130 154
Podemos aplicar las mismas operaciones que sobre cualquier nmero: sumar, restar, multiplicar, dividir, aplicar and, or, mximo, mnimo, integrales, derivadas...
Procesamiento Audiovisual Tema 2. Procesamiento global de imgenes. 3
2.1. Tipos de operaciones. Histogramas. Supongamos una imagen de entrada A y una imagen resultado R. Una operacin global (pxel a pxel) se puede expresar como una funcin:
R(x,y):= f(A(x,y))
El valor del pxel resultante es funcin de (y slo de) el pxel correspondiente de entrada.
127
255 8
Nivel de gris
2.1. Tipos de operaciones. Histogramas. Algoritmo. Clculo de un histograma. Entrada. A: imagen de ancho x alto Salida. Histograma: array [0,...,255] de entero Algoritmo: Histograma[]:= 0 para y:= 0, ..., alto-1 hacer para x:= 0, ..., ancho-1 hacer Histograma[A(x,y)]:= Histograma[A(x,y)]+1
En principio, una buena imagen debe producir un histograma ms o menos uniforme y repartido en todo el rango de valores.
Frecuencia
0
127
255 10
Nivel de gris
Procesamiento Audiovisual Tema 2. Procesamiento global de imgenes.
127
255
127
255 11
127
255
127
255 12
Canal Rojo
Canal Verde
Canal Azul
127
255
127
255
127 13
255
Estos histogramas aportan informacin sobre los rangos de colores ms frecuentes en la imagen. En teora, el histograma es de 256x256 celdas (bins). Pero, para obtener buenos resultados, mejor usar un nmero reducido de celdas. Por ejemplo 64x64 32x32.
Procesamiento Audiovisual Tema 2. Procesamiento global de imgenes. 14
15
2.2. Operaciones elementales con pxeles. A: imagen de entrada. R: imagen resultante (del mismo tamao que A).
Operaciones unarias:
Sumar una constante: R(x, y):= A(x, y) + a Restar una constante: R(x, y):= A(x, y) - a Multiplicar por una constante: R(x, y):= bA(x, y) Dividir por una constante: R(x, y):= A(x, y)/b Transformacin lineal genrica: R(x, y):= bA(x, y)+a Transformacin de gama: R(x, y):= A(x, y)c Cualquier funcin NN: R(x, y):= f(A(x,y))
Procesamiento Audiovisual Tema 2. Procesamiento global de imgenes. 16
2.2. Operaciones elementales con pxeles. Sumar una constante: R(x, y):= A(x, y) + a
Significado: incrementar el brillo de la imagen en la cantidad indicada en a. El histograma se desplaza a la derecha en a pxeles.
a +
Procesamiento Audiovisual Tema 2. Procesamiento global de imgenes. 17
2.2. Operaciones elementales con pxeles. Restar una constante: R(x, y):= A(x, y) - a
Significado: decrementar el brillo de la imagen en la cantidad indicada en a. El histograma se desplaza a la izquierda en a pxeles.
20
2.2. Operaciones elementales con pxeles. Multiplicar por una constante: R(x, y):= bA(x, y)
Significado: aumentar la intensidad de la imagen en b. El histograma se estira hacia la derecha.
21
0+a
Procesamiento Audiovisual Tema 2. Procesamiento global de imgenes.
0*b
22
2.2. Operaciones elementales con pxeles. Dividir por una constante: R(x, y):= A(x, y) / b = Multiplicar por 1/b ... obviamente!
El histograma se encoge.
23
f: curva tonal
0 0
64
128
64
128
192
255
Valor de entrada
255
255
Identidad: f(v):= v
Suma: f(v):= v + a
Resta: f(v):= v - a
a
192
192
128
128
64
64
a
0 64 128 192 255
64
128
192
255
0 0
64
128
192
64
128
192
255
255
255
192
192
128
128
64
64
64
128
192
255
Multiplicar 2: f(v):=2v
Por 3: f(v):= 3v
64
128
192
255
64
128
192
255
64
128
192
255
25
64
128
192
255
Pero la transformacin tambin puede ser no lineal: cuadrtica, polinomial, exponencial, logartmica, escalonada, etc. Cmo decidir cul es la transformacin ms adecuada? Usar el histograma.
Procesamiento Audiovisual Tema 2. Procesamiento global de imgenes. 26
M
27
A
Para imgenes en color, se aplica la misma funcin a los tres canales (R,G,B)
255
Histograma de R
0 0
64
128
192
64
128
192
255
28
5%
5%
29
30
Raz: c1v0.5 + c2
128
64
64
128
192
64
128
192
255
64
128
192
255
64
128
192
255
2.3. Transformaciones del histograma. Elevar a 2, elevar a 1/2, ... Se define la transformacin de gama como: f(v):= 255(v/255)1/GAMA
192 0 0 64 128 255
64
128
192
255
Gama 0,5
Gama 0,75
Gama 1
Gama 2
Gama 4
32
Dnde est el 50% de gris? Es la escala lineal? Dnde estara si tomramos una foto?
Procesamiento Audiovisual Tema 2. Procesamiento global de imgenes. 33
?
0 64 128 192 255
127
255
127
255
20%
0
4
127
64
128
192
255
35
Histograma de A
Funcin f
Histograma de R
37
Umbral
128
128
64
64
64
128
Umbral inferior
Umbral superior
192
192
192
64
128
192
255
64
128
192
255
64
128
192
255
Valor de entrada
Valor de entrada
Valor de entrada
Seleccionar un rango
39
Umbral = 160
Umbral = 215
40
Imagen de entrada
Umbralizar, u = 42
Umbralizar, u = 180
La separacin del objeto del fondo se llama segmentacin. La umbralizacin se puede usar para segmentar... ... aunque por s sola no suele funcionar muy bien. Cortar rango (192, 255)
Procesamiento Audiovisual Tema 2. Procesamiento global de imgenes. 41
La caracterstica fundamental es que cada pxel se trata independientemente de los dems. Los histogramas son tiles para encontrar la transformacin adecuada. En imgenes RGB, aplicamos la misma operacin a los 3 canales para que se mantenga el color.
Procesamiento Audiovisual Tema 2. Procesamiento global de imgenes. 42
A AND B
A OR B
A XOR B
45
Las operaciones binarias aparecen en anlisis de imgenes, y tambin para trabajar con mscaras y recortes de objetos.
47
2. T2:= A AND C A C
T2
3. R:= T1 OR T2
R T2
T1
48
!?
Cuestiones:
Cmo crear la mscara de forma automtica? La zona del pelo no se mezcla bien con el fondo. Cmo evitar este problema?
Procesamiento Audiovisual Tema 2. Procesamiento global de imgenes. 49
Se usan en generacin y anlisis de imgenes. Cuidado con los problemas de saturacin. En imgenes binarias son equivalentes (en su mayora) a los operadores booleanos.
Procesamiento Audiovisual Tema 2. Procesamiento global de imgenes. 50
2.4. Combinacin de imgenes. Sumar dos imgenes: R(x, y):= A(x, y) + B(x, y)
Significado: mezclar las dos imgenes.
A
La media ponderada se puede usar para crear una transicin suave entre imgenes (o vdeos).
53
Imgenes capturadas de TV
Procesamiento Audiovisual Tema 2. Procesamiento global de imgenes.
Imagen acumulada
54
Idea: si adems de la media en cada pxel calculamos tambin la varianza, podramos tener un modelo gaussiano del fondo (N(,)).
Procesamiento Audiovisual Tema 2. Procesamiento global de imgenes. 55
2.4. Combinacin de imgenes. Restar dos imgenes: R(x, y):= A(x, y) - B(x, y)
Significado: obtener diferencia entre imgenes.
A A-B
B-A
56
2.4. Combinacin de imgenes. Restar dos imgenes, manteniendo el rango de salida: R(x, y):= (A(x, y) - B(x, y))/2 + 128
A (A-B)*
(B-A)*
57
Pxel negro: las dos imgenes son iguales en ese pxel. Cuando ms clara es una zona, ms se diferencian las imgenes.
58
Dif. x16
Procesamiento Audiovisual Tema 2. Procesamiento global de imgenes. 59
Frame 2
x2
60
x2
2.4. Combinacin de imgenes. Producto imgenes: R(x, y):= A(x, y)B(x, y)/255
A
AB
B Necesario escalar el resultado (dividir por 255). Efecto de mezcla, similar a la suma, pero conceptualmente ms prximo a un AND...
Procesamiento Audiovisual Tema 2. Procesamiento global de imgenes. 63
A/B
Tambin es necesario escalar el resultado (multiplicar por 255). Cul es interpretacin del resultado?
64
B2
A*B1
A*B2
65
El producto es tambin la base en la idea de mscara o seleccin difusa. Idea: una imagen se compone de distintos elementos o capas, que tienen definido cierto nivel de transparencia.
Procesamiento Audiovisual Tema 2. Procesamiento global de imgenes. 66
Resultado:
R:= (A AND NOT M) OR (B AND M)
R
No me convence... mejor un reborde suave (difuminado)
67
70
Dada una imagen nueva, para cada pxel, comprobar si su valor est entre el mximo y el mnimo. Si lo est: fondo; si no lo est: objeto.
Procesamiento Audiovisual Tema 2. Procesamiento global de imgenes. 71
72
Imagen de entrada
Grises (media)
Grises (precisa)
75
R
(0,0,0) (vr,vg,vb) (255,255,255)
Imagen de entrada Cmo conseguir que el punto intermedio sea un valor cualquiera (distinto de 128)?
Escala de grises
Escala de sepias
R= G= B=
255 0
255 0
0 255
0 255
0 255
255 0
78
Imagen de entrada
81
Imagen de entrada
Ajuste conjunto
Ajuste separado
84
Conclusiones:
Las transformaciones globales se pueden realizar igual en todos los canales o con valores distintos. En el primer caso, habr un cambio en la intensidad. En el segundo, puede haber tambin un cambio de color. Balance de blancos: compensar los canales para obtener los colores ms realistas posibles. Veremos ms cuestiones relacionadas con el color cuando estudiemos espacios de color.
85
86
Anexo A.2.
87
void cvUnaria (const CvArr* A, ..., CvArr* B, ...) void cvBinaria (const CvArr* A, const CvArr* B,.., CvArr* C, ...)
Las funciones reciben una (unarias) o dos (binarias) imgenes de entrada, y producen una de salida. Todas ellas deben estar creadas, tambin la imagen de salida. La mayora de las funciones admite modo inplace: una imagen de entrada se puede usar tambin para guardar el resultado. Muchas de las operaciones trabajan con ROI, COI y mask No operan sobre toda la imagen sino slo sobre una parte concreta (rectngulo, canal o mscara de inters).
Procesamiento Audiovisual Tema 2. Procesamiento global de imgenes. 88
Operaciones binarias:
cvAdd, cvAddWeighted, cvSub, cvAbsDiff, cvMul, cvDiv, cvAnd, cvOr, cvXor, cvCmp, cvMax, cvMin
90
Se puede hacer cualquier transformacin lineal. La funcin permite hacer conversiones entre imgenes con distintos valores de profundidad (de 8 bits a 16, o a reales de 32 bits, etc). Tiene sinnimos, como cvConvertScale. Ver tambin cvConvertScaleAbs. Ejemplo. Ajuste del contraste: cvConvertScale(img, img2, 1.6, -50);
Procesamiento Audiovisual Tema 2. Procesamiento global de imgenes. 93
98
99
100
101
Implementacin 1.
cvMul(B, N, B, 1./255); cvNot(N, N); cvMul(A, N, A, 1./255); cvAdd(A, B, R); Esto es ms sencillo y eficiente, porque las operaciones estn optimizadas
Implementacin 2.
#define CM(a,b,n) (a*(255-n)+b*n)/255.0 CvScalar pA, pB, pN, pR; for (int y=0; y<A->height; y++) for (int x= 0; x<A->width; x++) { pA= cvGet2D(A, y, x); pB= cvGet2D(B, y, x); pN= cvGet2D(N, y, x); pR.val[0]= CM(pA.val[0],pB.val[0],pN.val[0]); pR.val[1]= CM(pA.val[1],pB.val[1],pN.val[1]); pR.val[2]= CM(pA.val[2],pB.val[2],pN.val[2]); cvSet2D(R, y, x, pR); }
Aunque no del todo correcto, Esto es menos eficiente (~5 veces modifica sus parmetros de ms lento) y menos recomendable entrada A, B y N... Procesamiento Audiovisual 102
Tema 2. Procesamiento global de imgenes.
103
Ejemplos.
Histograma de 1 dimensin y 4 celdas
Bin 0
(0-63)
Histograma de 2 dimensiones
Bin 0
(0-127)
Bin 1
(128-255)
Bin 1
(64-127)
Bin 2
(128-191)
Bin 3
(192-255)
104
112