Берете картинку, проще всего какой-нибудь формат без сжатия, вроде BMP.
Разворачиваете картинку в одномерный массив пикселей. Для BMP будет Array of Point(R,G,B,A). C этим массивом работаете по описанной вами схеме.
Если тема интересна, гуглить: "алгоритмы сжатия с потерями" "использование вейвлетов для сжатия изображений" "разбор алгоритма Jpeg-кодирования"
Если сразу готовый алгоритм, вот на хабре статья (не моя) была по вейвлетам Хаара когда-то:
habrahabr.ru/post/168517 (это теория, в конце данной статьи ссылка на практику с готовыми исходниками)
Заменить в исходниках ядро преобразования с Хаара на Фурье труда не составит.
p.s. Картинки получаются очень интересными. В свое время, когда для себя написал такую программу, потом часа четыре игрался с базой изображений. Особенно интересно смотреть в реальном времени, как постепенно высокие частоты вносят объем и цвет в базовое изображение. Или как разные ядра по-разному декомпозируют исходный файл.
p.p.s. Очень наглядная визуализация. Такие наблюдения потом помогут быстро разбираться чему же все-таки научилась ваша нейронная сеть (за что отвечают отдельные веса и т.п.)
p.p.p.s. Если совсем лень, можете взять Wolfram Mathematica, у них все эти алгоритмы реализованны.