Я пытаюсь реализовать следующую статью: http://www.ifp.illinois.edu/~jyang29/papers/TIP10-SR.pdf
Я думаю, что до сих пор все работает нормально, кроме реконструкции сигнала. Для изучения словаря и создания патчей изображения SR я использую функции sklearn (MiniBatchDictionaryLearning и SparseCoder соответственно). Процесс изучения словаря выглядит нормально, но шаг восстановления выглядит некорректно ... Вот что я делаю:
# Dictionary learning:
dico = MiniBatchDictionaryLearning(n_components=512, alpha=1, n_iter=1000)
Dh = dico.fit_transform(X)
# X is the signal matrix extracted from high resolution training images
# the same goes for Y, which is extracted from low resolution training images
Dl = dico.fit_transform(Y)
Словари представляют собой матрицы форм 512x81 и 512x9, как и ожидалось. После этого, в итоге, цель состоит в том, чтобы повысить разрешение изображения, и это делается патч за патчем. Алгоритм пытается оценить патч 9x9 из патча 3x3, содержащегося в изображении с низким разрешением. Для этого я делаю следующее:
alpha_Y = SparseCoder(Dl.T).transform(kernel)
x = Dh @ alpha_Y.T
# where kernel is the low resolution image patch and alpha_Y should be its
# sparse representation, according to Dl.
# x should be the high resolution reconstructed patch.
После этого реконструкция завершена. Он генерирует только черные изображения, и я не знаю почему. Возможно, я неправильно использую функции sklearn ... Я ищу помощи от людей, которые знают, как правильно использовать эти функции или имеют какие-то идеи для решения этой проблемы.