Чтобы увидеть ваше зашумленное изображение, вам необходимо преобразовать данные, представленные в небольшом размере, с использованием основных компонентов обратно в исходное пространство. Для этого вы можете использовать функцию inverse_transform()
. Как видно из документации здесь , эта функция будет принимать проецируемые данные и возвращать массив, подобный исходному изображению. Таким образом, вы можете сделать что-то вроде
denoised_image = pca.inverse_transform(projected)
# then view denoised_image
Edit:
Вот некоторые из вопросов, на которые стоит обратить внимание:
- У вас есть
53824
патчиот вашего исходного изображения с размерами (25,25)
. Чтобы изменить ваши данные и передать их в PCA, как вы можете видеть из документации здесь , вам нужно передать массив размером (n_samples, n_features)
. Ваше количество образцов составляет 53824. Таким образом, измененные патчи должны быть:
patches_reshaped = patches.reshape(patches.shape[0],-1)
# this should return a (53824, 625) shaped data
Теперь вы используете эти измененные данные и преобразуете их, используя PCA и обратное преобразование, чтобы получить данные в исходном домене. После этого ваш
denoised_image
будет набором восстановленных патчей. Вам нужно будет объединить эти патчи, чтобы получить изображение, используя функцию
image.reconstruct_from_patches_2d
, здесь - документация. Таким образом, вы можете сделать что-то вроде
denoised_image = image.reconstruct_from_patches_2d(denoised_image.reshape(-1,25,25), grayscale_image.shape)
Теперь вы можете просмотреть denoised_image
, который должен выглядеть как grayscale_image
.