C/Visual C - Algoritmo comparación de imagenes en C

 
Vista:

Algoritmo comparación de imagenes en C

Publicado por Roberto (1 intervención) el 02/10/2001 22:53:02
Necesito localizar o encontrar códigos fuentes en C de comparación de imágenes. <<FTT 2D>>
Si teneis alguno de estos códigos por favor enviarmelos a mi cuenta.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Algoritmo de comparación de imágenes utilizando FFT 2D en C

Publicado por Alejandro (913 intervenciones) el 16/10/2024 17:25:14
Roberto, para comparar imágenes utilizando la Transformada Rápida de Fourier (FFT) en C, puedes seguir un enfoque que involucre la implementación de la FFT 2D. Aquí hay un resumen de cómo puedes hacerlo, junto con algunos recursos útiles:

1. Implementación de FFT 2D: Puedes construir la FFT 2D utilizando la propiedad separable de la transformada. Esto implica realizar primero la FFT 1D en cada fila y luego en cada columna (o viceversa). Puedes encontrar ejemplos de implementación en C en los siguientes enlaces:
- Implementación de FFT 2D en Stack Overflow (https://stackoverflow.com/questions/29796075/implementation-of-fft-2d-array): Este recurso proporciona una guía sobre cómo implementar la FFT 2D a partir de la FFT 1D.

2. Uso de bibliotecas: Considera utilizar bibliotecas como FFTW o OpenCV, que ya tienen implementaciones optimizadas de FFT. Por ejemplo:
- En un ejemplo de uso de OpenCV, se menciona que la gestión de datos y la FFT pueden tomar alrededor de 21 ms para una imagen de 512x512 píxeles. Puedes ver más detalles en este enlace de Stack Overflow (https://stackoverflow.com/questions/13702679/efficient-2d-fft-of-fixed-length-real-input-data-in-c-c).

3. Comparación en el dominio de la frecuencia: Una vez que tengas las transformadas de Fourier de las imágenes, puedes comparar sus espectros de amplitud o fase. Esto se puede hacer calculando la diferencia entre los espectros o utilizando métricas como la distancia euclidiana.

4. Código de ejemplo: Aquí tienes un esquema básico de cómo podría lucir el código para la FFT 2D:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
// Funciones para FFT 1D y 2D
void fft1d(double *data, int n);
void fft2d(double **data, int width, int height);
 
int main() {
    // Cargar imágenes y convertirlas a un formato adecuado
    // Llamar a fft2d para cada imagen
    // Comparar resultados
    return 0;
}
 
// Implementación de FFT 1D y 2D aquí

5. Recursos adicionales: Para más información sobre la teoría detrás de la FFT y su aplicación en la comparación de imágenes, puedes consultar el documento de la Universidad de Toronto sobre transformadas de Fourier aquí: https://www.cs.toronto.edu/~jepson/csc320/notes/linearFilters2.pdf.

Si necesitas más detalles específicos o ejemplos de código, te recomiendo explorar los enlaces proporcionados y adaptar el código a tus necesidades.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar