Está en la página 1de 9

Tratamiento de Señales

Departamento Electrónica
Prof. José Ramón Iglesias

EJERCICIOS
Trabajo en Grupo sobre Restauración de Imágenes

Objetivos:
 Comprender nociones básicas de restauración de imágenes
 Restaurar imágenes degradadas por movimiento horizontal uniforme

Para restaurar una imagen G de N columnas que haya tenido un proceso de


degradación fila por fila, como por ejemplo, el movimiento horizontal uniforme de
n pixeles, se puede plantear la siguiente ecuación. Esta ecuación modela el proceso
de degradación de una fila f de la imagen original F de M columnas. La fila
degradada g (de la imagen G) es la convolución de f con la máscara h de n
elementos:

[ RELLENAR TODOS LOS ESPACIOS VACIOS ]

F tiene 10000 pixeles es decir 100x100


H=[1/4 1/4 1/4 1/4 1/4 1/4 1/4 1/4 1/4 1/4 1/4 1/4 1/4 1/4 1/4 1/4 1/4 1/4 1/4 1/4 1/4 1/4
1/4 1/4 1/4 1/4 1/4 1/4 1/4 1/4 ]

N=100-30+1=71
[]
f1
f2
f3
f4

[]
f5
f6
f7 g1
f8 g2
f9 g3
f 10 g4

[ ]
h 1 h 2 h 3 … . h 30 0 0 f 11 g5
g=f ∗h= 0 h1 h 3 … . h 9 … . h 30 0 f 12 = g 6
0 0 h 1 … . h 8 h 9 … . h30 f 13 g7
f 14 g8
f 15 .
f 16 .
f 17 g 71
f 18
f 19
f 20
.
.
f 100 00

[]
71*71
Asumir f6… f10000 son valores conocidos como x1…..x9929.

f1
f2
f3
f4
f5
f6

[ ]
f7
f8
g1
f9
g2
f 10

[ ]
g3
h 1 h2 h 3 … . h 3 0 0 0 f 11
g=f ∗h= 0 h1 h 3 … . h 9 … h 3 0 0 g4
f 12 =
g5
0 0 h1 …. h8 h9… h30 f 13
.
f 14
.
f 15
g 72−0.1 x 1−0.1 x 2 … .−0.1 x 9 9 29
f 16
f 17
f 18
f 19
f 20
.
.
f 100 00

Tamaño de modelo h se reduce 71x71=5041 pixeles

Esta ecuación puede escribirse matricialmente


como: H∗f =g (1)

Conociendo g y la máscara h, vemos que el sistema de ecuaciones tiene 10000


ecuaciones y 71 incógnitas. Como M es mayor/menor (tachar) que N, entonces
existen 71 soluciones. Estos sistemas se llaman
completos/subdeterminados/superdeterminados (tachar).

Para resolver (1), es necesario imponer una restricción para f. Esta restricción puede
ser planteada como:

(2)

Donde Wf es una señal por ejemplo que deja pasar las frecuencias altas de f. De
esta manera la solución que andamos buscando es una función f que cumpla (1) y
que tenga un rizado mínimo. La solución será llamada .

La solución para f debe ser tal que se cumplan (1) y (2) simultáneamente. La ecuación
(1) puede replantearse de la siguiente forma:

|Hf −g|=0 (3)


Las ecuaciones (2) y (3) tienen la estructura de un problema de optimización que puede
resolverse usando el multiplicador de Lagrange (en este caso un número múy grande
como 106). Usando el multiplciador de Lagrange, la función objetivo V(f) a minimzar
puede plantearse como:

(4)

¿Por qué al minimizar esta función objetivo se cumplen simultáneamente las


ecuaciones (1) y (2)?

Porque al minimizar la función objetivo V ( f ), se buscan valores de f que hagan que las
ecuaciones (1) y (2) se cumplan simultáneamente, lo que implica que los conjuntos de
datos Hf y Pf se ajusten lo mejor posible al conjunto de datos objetivo g.

Para encontrar f, podemos derivar V(f) con respecto a f e igualar a

cero. Utilizando la siguiente expresión:

∂ 2
‖Xf + z‖ =2 X T (Xf + z ) (5)
∂f

Donde ∥ Hf −g ∥2 +∥ Pf −g ∥2 son términos cuadráticos, por lo que su derivada con


respecto a f se puede calcular utilizando la regla de la cadena.

∂ 2 2 ∂ 2 ∂
(λ ∥ Hf −g ∥ +∥ Pf −g ∥ )= (∥ Hf −g ∥ )+ ¿
∂f ∂f ∂f

Usando la regla de la cadena



( λ ∥ Hf −g ∥ 2 )=2 λ H T (Hf −g)
∂f


( ∥ Pf −g ∥ 2 )=2 PT ( Pf −g )
∂f

Ahora igualo la derivada de V(f) a cero para encontrar el valor de f:

T T
2 λ H ( Hf −g ) +2 P ( Pf −g )=0
donde X es una matriz y z un vector, encuentre:

Usando (6) y (7), encuentre:

∂ V (f )
=2 λ H T ( Hf −g ) +2 W T (Wf )
∂f
(8)

Igualando a cero la ecuación anterior, encuentre f:


T T
2 λ H ( Hf −g ) +2 W ( Wf )=0

T T
2 λ H ( Hf −g )=−2W ( Wf )

Ahora divido ambos lados por 2 para simplificar:

T T
λ H ( Hf −g )=−W ( Wf )

Aisló f dividiendo ambos lados


^f =f = −1 ( H T ( Hf −g )) − 1 (W T ( Wf ) )
λ 2

Buenos resultados en imágenes se obtienen con


Ejercicios:

1) Escriba una ecuación matricial para encontrar la imagen restaurada


conociendo G, H, W y . (aquí H es mayúscula)

^f =¿
Donde:
^f = Es la matriz de la imagen restaurada
G = Es la matriz de proyección (por ejemplo, de reducción de ruido).
H = Es la matriz de la imagen observada o degradada.
W = Es una matriz de penalización o regularización que se utiliza para controlar la
restauración.
λ = Es un parámetro que controla el equilibrio entre la fidelidad a la imagen observada y
la suavidad de la imagen restaurada.

Esta ecuación se basa en métodos de restauración de imágenes que utilizan


regularización para encontrar una imagen restaurada

2) Escriba un programa en Matlab o Python que restaure una imagen G que


tenga como parámetros de entrada G, h y W. (aquí h es mayúscula)

import numpy as np

def restaurar_imagen(G, H, W, Lambda):


# Calcula la matriz G^T
G_transpose = np.transpose(G)

# Calcula la matriz identidad


identity = np.identity(G.shape[1])

# Calcula el término dentro del paréntesis de la inversa


term = np.dot(G_transpose, G) + Lambda * np.dot(np.transpose(W), W)

# Calcula la matriz inversa de (G^T * G + Lambda * W^T * W)


inverse_term = np.linalg.inv(term)

# Calcula el resultado final


restored_image = np.dot(np.dot(inverse_term, G_transpose), H)

return restored_image

# Ejemplo de uso
G = # tu matriz G
H = # tu matriz H
W = # tu matriz W
Lambda = # el valor de Lambda que desees

restored_image = restaurar_imagen(G, H, W, Lambda)

3) Un criterio simple para minimizar el rizado de la fila restaurada es que la


solución encontrada para f tenga mínima norma

a) ¿Por qué?,

Si porque la minimizar la norma de f ayuda a eliminar detalles no deseados que podrían haberse
introducido debido al ruido o daño en la imagen original. Esto conduce a una imagen restaurada
que se asemeja más a la imagen real y es visualmente más agradable.

b) Encuentre cómo sería W en la ecuación (2) para este criterio.

W =I
c) ¿Cómo quedaría (4) en este caso?
2
V ( f )=λ ∥ Hf −g ∥2 +‖f ‖

4) En clase vimos que un criterio que puede ser utilizado para minimizar el
rizado de la solución f, es minimizando la diferencia entre g y un vector
conformado por los primeros N elementos de f, que llamamos fN. En este
caso la restricción
(2) puede ser escrita como

(10)

donde fN puede ser escrito en forma matricial como

(11)

con P una matriz de N x M elementos con una diagonal de “unos”:

Usando las ecuaciones (10), (11) y (1),


a) Encuentre cómo sería W en la ecuación (2) para este criterio.

Fn=Pf
2 2
‖Fn−g‖ =‖ Pf −g‖
2
¿‖Pf − Hf ‖ =‖( P−H ) f ‖
2
2
‖Wf ‖ →min

W =P−H

b) ¿Cómo quedaría (4) en este caso?

2
V ( f )=λ ∥ Hf −g ∥ + λ ∥¿

[TIP] La expresión Wf en (2) deberían ser las frecuencias altas de f


solamente, es decir, si X es la transformada discreta de Fourier de f, donde
X es un vector de M elementos (el mismo número de elementos de f),
podríamos multiplicar por cero los elementos de X correspondientes a las
bajas frecuencias, esto se realiza multiplicando X por una matriz Q de MxM
elementos con algunos “unos” en la diagonal y “ceros” en el resto. De esta
manera Wf puede ser reemplazado por QX. Sabemos que la transformada
discreta de Fourier de f puede ser computada como una multiplicación de f
con una matriz B de MxM elementos con las funciones base de Fourier, es
decir X es Bf. En este ejercicio debe definir las matrices Q y B, y con ellos
encontrar W en la ecuación (2).

Para resolver este problema, necesitamos definir las matrices Q y B. La matriz


Q debe ser una matriz diagonal que tenga unos en los elementos
correspondientes a las frecuencias altas y ceros en los elementos
correspondientes a las bajas frecuencias. La matriz B debe ser una matriz
cuyas columnas sean las funciones base de Fourier.

Vamos a definir estas matrices:


1. Definición de la matriz Q
Sea Q una matriz diagonal de tamaño M x M con unos en los elementos
correspondientes a las altas frecuencias y ceros en los elementos
correspondientes a las bajas frecuencias. Supongamos que M es el número
de elementos en el vector f. Entonces, la matriz Q se define como:

2. Definición de la matriz B:
Sea B una matriz de tamaño M x M cuyas columnas sean las funciones base de Fourier.
Cada columna representa una función base de Fourier en el dominio discreto.
Una vez que tengamos definidas estas matrices, podemos encontrar W en la ecuación (2)
utilizando la relación W = QB.
Es importante tener en cuenta que la definición específica de Q depende de la
información dada sobre f y las frecuencias altas y bajas en el contexto del problema. Del
mismo modo, la matriz B dependerá de la elección de las funciones base de Fourier para
el análisis en cuestión.

5) Encuentre n a partir de G sabiendo que el movimiento fue horizontal y uniforme.

[TIP] Estudie el promedio de las filas de la Transformada de Fourier de G


para distintos valores de n. Pruebe con estos comandos y obtenga
conclusiones.

F = imread('cameraman.tif'); % imagen original


n = 15; h = ones(1,n)/n; % mascara de
degradacion G = conv2(F,h,'valid'); % imagen
degradada
X = fftshift(fft2(G)); % transformada de fourier de G
centrada K = log(abs(X)+1); % transformada en escala
logaritmica plot(mean(K)) % promedio de todas las filas de K

El código proporcionado realiza ciertas operaciones en una imagen y su transformada de


Fourier para estudiar el promedio de las filas de la Transformada de Fourier de una
imagen degradada. A partir de esto, puede intentar determinar la cantidad \(n\) asociada
con el movimiento horizontal y uniforme que causó la degradación.

Aquí hay un paso a paso sobre cómo utilizar el código:

1. El código comienza cargando una imagen llamada 'cameraman.tif' y definiendo un


valor para \(n\), así como una máscara de degradación \(h\) que se utiliza para degradar
la imagen.
2. Luego, realiza la convolución de la imagen original con la máscara de degradación para
obtener la imagen degradada \(G\).
3. Después, calcula la transformada de Fourier de \(G\) y la centra.
4. Lleva a cabo una transformación logarítmica de la magnitud de la transformada de
Fourier.
5. Realiza un gráfico del promedio de todas las filas de la transformada de Fourier en una
escala logarítmica
Para comprender la relación entre \(n\) y el movimiento horizontal y uniforme, debe
estudiar el comportamiento del gráfico resultante. La forma del gráfico y la ubicación de
sus máximos y mínimos podrían proporcionarle pistas sobre el valor de \(n\) que
corresponde al movimiento horizontal y uniforme. Debería probar diferentes valores de \
(n\) y observar cómo cambia el gráfico para determinar el valor más adecuado.

También podría gustarte