QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2315|回复: 0
打印 上一主题 下一主题

图像压缩(主成分分析)

[复制链接]
字体大小: 正常 放大

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-31 16:40 |只看该作者 |正序浏览
|招呼Ta 关注Ta
数据集:任意选择一组图片。- F3 y* ^/ d  s
任务:使用PCA对图片进行压缩和重构。
. a4 Z2 m( p7 L* |6 u0 \挑战:分析压缩比例与图像质量之间的关系,并尝试使用其他降维技术。
1 l* A% h9 n, g+ F6 d5 p+ Q使用PCA进行图像压缩和重构
4 L" e" _3 F7 c* V1 w假设你已经安装了必要的Python库,如numpy, matplotlib, 和scikit-learn。如果没有,你可以通过pip安装它们。$ D1 C" e. l- F0 J! D. x
, l$ m- ]  K+ J' j% l, C6 v
以下是使用PCA对单张图片进行压缩和重构的步骤:
: a; w* t4 o, Z
) j: Q7 L2 R6 v加载图片:首先,我们需要加载一张图片并将其转换为合适的格式。
/ K; X4 l2 }( y; n
$ G( b, I9 k6 @6 A/ m应用PCA:然后,我们将应用PCA来降低图片的维度,实现压缩。8 M! T0 U* q2 c$ x" c0 c- E) x1 v

$ L0 G1 l/ g6 [, s0 F重构图片:最后,我们将使用PCA的逆变换来重构图片,尽量恢复原始图片。
  1. import numpy as np' S( B4 M% L1 h0 Y& ^# A7 ?! J% U1 @
  2. from sklearn.decomposition import PCA7 Z: o/ `! {6 F  t
  3. import matplotlib.pyplot as plt3 I. r+ _/ ]\" F' i: k+ @' B3 m
  4. from PIL import Image
    7 l0 ]! m# ]$ p7 B/ s

  5. ' ~( L. u\" I) g2 S) l
  6. # 加载图片并转换为灰度图
    - d- ?5 v* A1 J5 z. _
  7. image_path = 'path_to_your_image.jpg'
    / R6 P1 }2 t8 G( q/ ~\" g; X
  8. image = Image.open(image_path).convert('L')/ l6 q0 V1 n' _% R
  9. image_array = np.array(image)
    % l/ F% D  z3 e' U& L- V
  10. ( S1 g- ]% ^( X
  11. # 展平图像数组
    / B8 K8 q+ O' Q7 V0 `! z( a
  12. h, w = image_array.shape
    \" i6 [7 X: c4 d0 m5 Q# n: K7 K' S
  13. image_flattened = image_array.flatten().reshape(1, h * w)
    2 Z3 B6 y( Q' M; D7 z\" P
  14. * I6 d4 w9 l; g5 s
  15. # 应用PCA
    % i2 B% Q, _6 x6 x& C+ [  \
  16. n_components = 100  # 选择保留的主成分数量( `\" ]) F' o! n2 _
  17. pca = PCA(n_components=n_components)6 V( O3 }/ y7 O
  18. image_compressed = pca.fit_transform(image_flattened)
    4 F4 H9 Q$ M, Z4 G( \
  19. : s8 D& A  t: s9 G0 X/ A2 _3 \
  20. # 重构图像
    & l8 [' f1 ]- c0 @2 Q2 X. i& p
  21. image_reconstructed = pca.inverse_transform(image_compressed).reshape(h, w)  O\" |' G4 q0 _5 F# ^4 o, F9 ]

  22. * V\" p. P- u\" H+ _
  23. # 显示原始和重构的图像
    \" ^5 k$ T1 `7 t
  24. plt.figure(figsize=(10, 5))
      f% E& w- {3 L9 {5 t
  25. plt.subplot(1, 2, 1)
    # C8 b9 \/ K' n1 V
  26. plt.imshow(image_array, cmap='gray')5 g, D4 [7 {, h( x) v
  27. plt.title('Original Image')# U0 T* f! a! v
  28. plt.subplot(1, 2, 2)! {' p( D5 l  C8 g( H
  29. plt.imshow(image_reconstructed, cmap='gray')0 r) x\" g: u1 ^' z
  30. plt.title('Reconstructed Image')
    ' z& x+ ]! I/ I3 C2 X# ?
  31. plt.show()
复制代码
分析压缩比例与图像质量之间的关系
. |; d5 F) i$ M' g; x- F' m- R压缩比例与图像质量之间的关系可以通过改变n_components(PCA中保留的主成分数量)来探索。减少n_components会增加压缩比例,但可能会降低重构图像的质量。通过观察不同n_components值对应的重构图像,可以分析这种权衡关系。
& i  y6 w+ H/ F9 r% P# L
7 P( e# ?, g* O; j, G尝试其他降维技术
% D% I: ~% z9 a& M; p除了PCA之外,还有其他降维技术可以用于图像压缩,例如:
5 Y. \9 Z* M" h- k% u' t2 V: i# [% E! Z& y% Z- l
随机投影(sklearn.random_projection)
- _- i6 F4 G' G6 G9 D0 Y7 S* I非负矩阵分解(NMF,sklearn.decomposition.NMF): N; [5 h8 `$ }/ K9 x
这些方法也可以用类似的方式应用于图像压缩,通过比较不同方法的效果,你可以深入理解各种降维技术在图像压缩任务中的表现和适用性。( n% H/ [9 @3 z7 x; j! L

9 [  H  B" E, n& E  J) \7 d! t& w9 i0 M) o3 b

) q/ W; j6 A$ G6 N; M
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-7-29 08:33 , Processed in 0.418924 second(s), 51 queries .

回顶部