Обратная спектрограмма A La Aphex Twin в MATLAB
Я пытаюсь преобразовать изображение в аудиосигнал в MATLAB, рассматривая его как спектрограммукак в песне Aphex Twin наWindowlicker, К сожалению, у меня проблемы с получением результата.
Вот что я имею на данный момент:
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
Итак, я использую обратные преобразования Фурье для столбцов моего изображения, а затем соединяю их для формирования сигнала. Кроме того, эта функция использует набор инструментов обработки изображений для MATLAB для чтения изображений. Цель состоит в том, чтобы иметь некоторое изменение
spectrogram(imagetosignal('image', 'bmp'));
В результате получается нечто, похожее на исходное изображение. Я был бы очень признателен за любую помощь! Я только учусь обработке сигналов, так что не удивляйтесь, если есть очевидное заблуждение. Спасибо!
EditСпасибо, Дейв! Я получил это работает! Я закончил с этим:
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