我有一个灰色的嘈杂图像。我想应用PCA来降低噪音,并在应用后查看输出。
这就是我想要做的:
[输入]:
from sklearn.datasets import load_sample_image
from sklearn.feature_extraction import image
from sklearn.decomposition import PCA
# Create patches of size 25 by 25 and create a matrix from all patches
patches = image.extract_patches_2d(grayscale_image, (25, 25), random_state = 42)
print(patches.shape)
# reshape patches because I got an error when applying fit_transform(ValueError: FoundValueError: Found array with dim 3. Estimator expected <= 2.)
patches_reshaped = patches.reshape(2,-1)
#apply PCA
pca = PCA()
projected = pca.fit_transform(patches_reshaped.data)
denoised_image = pca.inverse_transform(projected)
imshow(denoised_image)
[输出]:
(来源:imggmi.com)
我得到一个数组。如何查看去噪的图像?
答案 0 :(得分:1)
为了查看降噪后的图像,您需要将使用主成分以较低维度表示的数据转换回原始空间。为此,您可以使用inverse_transform()
函数。从文档here中可以看到,此函数将接受投影的数据并返回类似于原始图像的数组。所以你可以做类似的事情,
denoised_image = pca.inverse_transform(projected)
# then view denoised_image
编辑:
以下是一些需要注意的问题:
53824
个补丁,大小为(25,25)
。为了重塑数据并将其传递给PCA,如从文档here所见,您需要传递一个大小为(n_samples, n_features)
的数组。您的样本数量为53824。因此,调整形状的补丁应为:patches_reshaped = patches.reshape(patches.shape[0],-1)
# this should return a (53824, 625) shaped data
denoised_image
是一组重构的补丁。您将需要使用功能image.reconstruct_from_patches_2d
here作为文档来组合这些补丁以获取图像。所以您可以做类似的事情denoised_image = image.reconstruct_from_patches_2d(denoised_image.reshape(-1,25,25), grayscale_image.shape)
现在,您可以查看denoised_image
,它看起来应该像grayscale_image
。