Skip to content

Commit 5a12ac4

Browse files
committed
copias seg varios posts
1 parent f7f745a commit 5a12ac4

File tree

8 files changed

+160
-3
lines changed

8 files changed

+160
-3
lines changed

_posts/2025-01-27-dct-denoising.md

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
---
2+
title: DCT denoising
3+
tags: [image processing]
4+
style: fill
5+
color: success
6+
description: Revisiting the Discrete Cosine Transform to denoise images
7+
---
8+
9+
![imagen](../assets/blog_images/2025-XX-XX-dct-denoising/imagen.png)
10+
11+
# Introduction
12+
13+
Loas métodos de filtrado espacial a veces ocluyen eclipsan a otras técnicas más complejas que, para las tareas que ´tipicamente se quieren resolver en la práctica en procesamiento de imagen, son suficientes herramientas sencillas, como filtros de mediana o bilateral. Pero hay una enorme gama de opciones en la literatura en lo reslativo al filtrado frecuecnial y robust statics que muchas veces se pasa por alto y merece la pena detenerse a indagar y experimentar con algunos de estos casos.
14+
15+
En este post discutiremos el Denoising mediante hard-thresholding y soft-thresholding a través de la Discrete Cosine Transform (DTC) de imágenes, pero directamente extrapolable a otros tipos de señales digitales.
16+
17+
# Methodology
18+
19+
La idea es eliminar los coeficientes de la DCT pequeños, pues serán los que alberguen menos información y que se asumen cercanos al ruido que contamina la imagen, pero lo que conlleva tambińe asumir que se perderán detalles agudos enmascarados junto con el ruuido, i.e. se reducirá ruido de alta frecuencia pero inevitablemente también señal. AUnque el uso de técnicas en el dominio espectral como la DCT reduce la influencia de esa última asunción, hasta cierto punto, porque recordemos que la DFT y DCT solo tienen control sobre la frecuecnia y no el espacio (muchos peros y aunques... vayamos al grano).
20+
21+
## DCT
22+
23+
...
24+
25+
![comp](../assets/blog_images/2025-XX-XX-dct-denoising/comp.png)
26+
27+
## Hard-thresholding
28+
29+
El Hard-thresholding: Establece a cero los coeficientes DCT menores que un umbral, eliminando agresivamente el ruido, pero puede perder detalles finos:
30+
31+
soft_thresholding(x) = {x ​si ∣x∣ > T, 0 si ∣x∣ ≤ T}​
32+
33+
34+
Es decir, Si el valor absoluto de un coeficiente es mayor que un umbral, lo mantienes; si es menor, lo pones a cero.
35+
36+
## Soft-thresholding
37+
38+
El sfot-thresholding Reduce los coeficientes pequeños sin eliminarlos completamente a no ser que sean muy pequeños, ofreciendo una transición más suave y preservando más detalles.
39+
40+
hard_thresholding(x) = sign(x) ⋅ max(0, ∣x∣ − T)
41+
42+
Es decir, Reducir el valor de los coeficientes sin eliminarlos completamente, restando el valor del umbral.
43+
44+
Podemos usar Desmos para ver la diferencia entre ambas técnicas de thresholding, modificando el valor umbral $$a$$ de 0 a 1, en bucle:
45+
46+
![desmos](../assets/blog_images/2025-XX-XX-dct-denoising/desmos.gif)
47+
48+
# Experiments
49+
50+
Now we will try various images, synthetic and real noise and compare both methods objectively and subjectively.
51+
52+
...
53+
54+
# Conclusion
55+
56+
Da la sensación de que el soft-thresholding potencia los detalles más pequeños que no logra potenciar el hard-thresholding, así como evita el sobre-enhancment de los detalles de gran amplitud que tiende a exagerar el hard-thresholding. Véase en la siguiente imagen:
57+
58+
![comp](./comp.png)

_posts/XXXX-XX-XX-cpp-1d-visualization.md

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,42 @@ void filterSignal(std::vector<double>& u, const std::vector<double>& f, int iter
164164
}
165165
```
166166
167-
The resolution is very high, and the widget's response is dynamic. There's no risk of the application freezing, as per my experiments with it.
167+
The resolution is very good, and the widget's response is dynamic. There's no risk of the application freezing, as per my experiments with it.
168168
169169
<img src="../assets/blog_images/2025-01-30-cpp-1d-visualization/comp2.png" alt="Comparison of signals after filtering" width="800" height="600" style="display: block; margin-left: auto; margin-right: auto;">
170170
171+
And you can also add labels:
172+
'''cpp
173+
plt::plot(xValues, yOriginal, {{"label", "Original"}, {"color", "g"}});
174+
plt::plot(xValues, yNoisy, {{"label", "Noisy"}, {"color", "k"}});
175+
plt::plot(xValues, yFiltered, {{"label", "Hard-Threshold"}, {"color", "r"}});
176+
'''
177+
178+
<img src="../assets/blog_images/2025-01-30-cpp-1d-visualization/labels.png" alt="Labels" width="800" height="600" style="display: block; margin-left: auto; margin-right: auto;">
179+
180+
# Troubleshooting
181+
182+
Nevertheless, if you encounter some problems in your system, you should try playing around with changing the Matplotlib backend, for example, using ```setenv()```.
183+
```cpp
184+
#include <cstdlib>
185+
setenv("MPLBACKEND", "TkAgg", 1); // Or Agg, At5Agg, GTK3Ag...
186+
```
187+
188+
To save the graph in a file, you must set the backend to 'Agg' to save it without an interface, which will, in turn, prevent it from being viewed interactively:
189+
```cpp
190+
plt::save("/path/to/save/path/output.png");
191+
```
192+
193+
# Other options
194+
195+
Se han estudiado otras opciones también recomendables para según qué aplicación. Por ejemplo, comentaremos brevemente QWT y Gnuplot.
196+
197+
## QWT
198+
199+
...
200+
201+
# Gnuplot
202+
```bash
203+
sudo apt-get install gnuplot
204+
```
205+
...

_posts/XXXX-XX-XX-dct-denoising.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,53 @@ color: success
66
description: Revisiting the Discrete Cosine Transform to denoise images
77
---
88

9+
![imagen](../assets/blog_images/2025-XX-XX-dct-denoising/imagen.png)
910

11+
# Introduction
12+
13+
Loas métodos de filtrado espacial a veces ocluyen eclipsan a otras técnicas más complejas que, para las tareas que ´tipicamente se quieren resolver en la práctica en procesamiento de imagen, son suficientes herramientas sencillas, como filtros de mediana o bilateral. Pero hay una enorme gama de opciones en la literatura en lo reslativo al filtrado frecuecnial y robust statics que muchas veces se pasa por alto y merece la pena detenerse a indagar y experimentar con algunos de estos casos.
14+
15+
En este post discutiremos el Denoising mediante hard-thresholding y soft-thresholding a través de la Discrete Cosine Transform (DTC) de imágenes, pero directamente extrapolable a otros tipos de señales digitales.
16+
17+
# Methodology
18+
19+
La idea es eliminar los coeficientes de la DCT pequeños, pues serán los que alberguen menos información y que se asumen cercanos al ruido que contamina la imagen, pero lo que conlleva tambińe asumir que se perderán detalles agudos enmascarados junto con el ruuido, i.e. se reducirá ruido de alta frecuencia pero inevitablemente también señal. AUnque el uso de técnicas en el dominio espectral como la DCT reduce la influencia de esa última asunción, hasta cierto punto, porque recordemos que la DFT y DCT solo tienen control sobre la frecuecnia y no el espacio (muchos peros y aunques... vayamos al grano).
20+
21+
## DCT
22+
23+
...
24+
25+
![comp](../assets/blog_images/2025-XX-XX-dct-denoising/comp.png)
26+
27+
## Hard-thresholding
28+
29+
El Hard-thresholding: Establece a cero los coeficientes DCT menores que un umbral, eliminando agresivamente el ruido, pero puede perder detalles finos:
30+
31+
soft_thresholding(x) = {x ​si ∣x∣ > T, 0 si ∣x∣ ≤ T}​
32+
33+
34+
Es decir, Si el valor absoluto de un coeficiente es mayor que un umbral, lo mantienes; si es menor, lo pones a cero.
35+
36+
## Soft-thresholding
37+
38+
El sfot-thresholding Reduce los coeficientes pequeños sin eliminarlos completamente a no ser que sean muy pequeños, ofreciendo una transición más suave y preservando más detalles.
39+
40+
hard_thresholding(x) = sign(x) ⋅ max(0, ∣x∣ − T)
41+
42+
Es decir, Reducir el valor de los coeficientes sin eliminarlos completamente, restando el valor del umbral.
43+
44+
Podemos usar Desmos para ver la diferencia entre ambas técnicas de thresholding, modificando el valor umbral $$a$$ de 0 a 1, en bucle:
45+
46+
![desmos](../assets/blog_images/2025-XX-XX-dct-denoising/desmos.gif)
47+
48+
# Experiments
49+
50+
Now we will try various images, synthetic and real noise and compare both methods objectively and subjectively.
51+
52+
...
53+
54+
# Conclusion
55+
56+
Da la sensación de que el soft-thresholding potencia los detalles más pequeños que no logra potenciar el hard-thresholding, así como evita el sobre-enhancment de los detalles de gran amplitud que tiende a exagerar el hard-thresholding. Véase en la siguiente imagen:
57+
58+
![comp](./comp.png)
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
---
2+
title: Equation Parametrization
3+
tags: [math]
4+
style: fill
5+
color: warning
6+
description: ...
7+
---
8+
9+
![image](./image.png)
10+
11+
# Introduction
12+
13+
Hablar de la parametrización de curvas, superficies... para llevarlas a un formulación explícita matemática manejable, con ejemplos de Cálculo. Al final mostrar la parametrización con dibujo animado en Desmos.
14+
15+

_posts/XXXX-XX-XX-split-bregman.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: Split Bregman
3-
tags: [iamge processing, math]
3+
tags: [image processing, math]
44
style: fill
55
color: danger
66
description: The marvelous Split Bregman tool
@@ -33,7 +33,7 @@ donde <p, u - v> es el producto interno entre p (que pertenece al subdiferncial
3333

3434
![bd](./bd.jpg)
3535

36-
D^p_J (u, v) compara el valor J(u) con el plano tangente (que en 1D es una línea) J(v) + <p, u-v>. Escogiendo una H diferenciable, el subdiferencial se convierte en el gradiente nabla_H. Esta no es estrictamente una distancia, pues no es necesariamente simétrica, pero mantiene muchas propiedades de distancia (ver [8]). En vez de medir distancia directa entre dos puntos, la mide como diferencias entr elos valores d ela función, comparando el valor J(u) con una aproximación lineal de J basada en supunto tangente J(v). En otras paralbras, mide la diferencia entre el valor de la función en u, que es J(u), u la mejor aproximación lineal de J(u) desde v.
36+
D^p_J (u, v) compara el valor J(u) con el plano tangente (que en 1D es una línea) J(v) + <p, u-v>. Escogiendo una H diferenciable, el subdiferencial se convierte en el gradiente nabla_H. Esta no es estrictamente una distancia in the usual sense cause it satisfies neither the symmetry nor the triangle inequality, pero mantiene muchas propiedades de distancia (ver [8]). En vez de medir distancia directa entre dos puntos, la mide como diferencias entr elos valores d ela función, comparando el valor J(u) con una aproximación lineal de J basada en supunto tangente J(v). En otras paralbras, mide la diferencia entre el valor de la función en u, que es J(u), u la mejor aproximación lineal de J(u) desde v.
3737

3838
De la figura se nota que se requiere convexidad para una aproximación lineal efectiva. La distancia tiene a cero cuando v tiende al óptimo \hat{u}. Así que, dado un puntoinicial u⁰ y un parámetro gamma>0, el algoritmo de iteración de Bregman es formalmente:
3939

226 KB
Loading
59.3 KB
Loading
2.19 MB
Loading

0 commit comments

Comments
 (0)