根据此文档,利用PCA,保留Top 95%信息,并依据获得的压缩版本的图片形成浮雕图。求jupyter代码
时间: 2024-10-23 19:19:43 浏览: 18
根据提供的文档内容,以下是使用PCA方法保留图像中前95%的信息并生成浮雕图的Jupyter代码示例:
```python
#importing Libraries
import numpy as np
from matplotlib.image import imread
import matplotlib.pyplot as plt
from skimage import exposure
from sklearn.decomposition import PCA, IncrementalPCA
# 设置图像路径
my_image = imread("/content/your_image_path_here.png")
print(my_image.shape)
# 显示原始图像
plt.figure(figsize=[12,8])
plt.imshow(my_image)
plt.title('Original Image')
plt.show()
# 将图像转换为灰度图像
image_sum = my_image.sum(axis=2)
new_image = image_sum / image_sum.max()
# 创建累积方差解释图以确定需要多少个主成分来解释95%的方差
pca = PCA()
pca.fit(new_image)
var_cumu = np.cumsum(pca.explained_variance_ratio_) * 100
k = np.argmax(var_cumu > 95)
print("Number of components explaining 95% variance: " + str(k))
# 使用95%方差对应的主成分数量进行图像重建
ipca = IncrementalPCA(n_components=k)
image_recon = ipca.inverse_transform(ipca.fit_transform(new_image))
# 生成浮雕图
emboss = exposure.adjust_sigmoid(image_recon, cutoff=0.5, gain=10)
# 显示重建后的图像和浮雕图
plt.figure(figsize=[15, 8])
plt.subplot(1, 2, 1)
plt.imshow(image_recon, cmap=plt.cm.gray)
plt.title('Reconstructed Image')
plt.subplot(1, 2, 2)
plt.imshow(emboss, cmap=plt.cm.gray)
plt.title('Embossed Image')
plt.show()
```
### 说明:
1. **导入必要的库**:包括NumPy、Matplotlib以及Scikit-Learn中的PCA和IncrementalPCA。
2. **读取并显示原始图像**:使用`imread`函数读取图像,并显示其形状和内容。
3. **将图像转换为灰度图像**:通过计算三个颜色通道(R、G、B)的加权和并将结果归一化到0到1之间。
4. **创建累积方差解释图**:使用PCA拟合灰度图像数据,并确定能够解释95%方差所需的主成分数量。
5. **图像重建**:使用确定的主成分数量对图像进行降维和重建。
6. **生成浮雕图**:使用`exposure.adjust_sigmoid`函数调整图像的对比度,生成浮雕效果。
7. **显示结果**:分别显示重建后的图像和浮雕图。
请将`/content/your_image_path_here.png`替换为您实际的图像路径。希望这段代码能帮助您完成任务!
阅读全文