Estoy tratando de convertir una imagen en una señal de audio en MATLAB tratándolo como un espectrograma as in Aphex Twin's song on Windowlicker. Desafortunadamente, estoy teniendo problemas para obtener un resultado.inversa espectrograma A La Aphex Twin en MATLAB
Aquí es lo que tengo en este momento:
function signal = imagetosignal(path, format)
% Read in the image and make it symmetric.
image = imread(path, format);
image = [image; flipud(image)];
[row, column] = size(image);
signal = [];
% Take the ifft of each column of pixels and piece together the real-valued results.
for i = 1 : column
spectrogramWindow = image(:, i);
R = abs(ifft(spectrogramWindow));
% Take only the results for the positive frequencies.
signalWindow = R(1 : row/2.0);
signal = [signal; signalWindow];
end
end
lo tanto, estoy tomando inversas Transformadas de Fourier en columnas de mi imagen y luego ponerlos juntos para formar una señal. Además, esta función utiliza el procesamiento de imágenes Toolbox para MATLAB para leer en las imágenes. El objetivo es tener alguna variación de
spectrogram(imagetosignal('image', 'bmp'));
resultado en algo que se parece a la imagen original. ¡Agradecería mucho ayuda! Estoy aprendiendo de procesamiento de la señal, por lo que no se sorprenda si hay un error obvio. ¡Gracias!
Editar: Gracias a Dave! ¡Lo tengo trabajando! Terminé con esto:
function signal = imagetosignal(path, format)
% Read in the image and make it symmetric.
image = imread(path, format);
image = [image; flipud(image)];
[row, column] = size(image);
signal = [];
% Take the ifft of each column of pixels and piece together the results.
for i = 1 : column
spectrogramWindow = image(:, i);
signalWindow = real(ifft(spectrogramWindow));
signal = [signal; signalWindow];
end
end
Entonces, ¿cuál es exactamente el problema que está teniendo? – gnovice
En el camino de regreso, la mitad superior de la imagen no se encuentra, y lo que queda se mancha horriblemente. –
Me alegra que esté funcionando. Siéntase libre de elegir mi respuesta;) –