QQ登录

只需要一步,快速开始

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

图像压缩(主成分分析)

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

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-31 16:40 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
数据集:任意选择一组图片。3 c3 h2 \$ s! z$ I
任务:使用PCA对图片进行压缩和重构。9 m7 N' d% {/ _0 [" [1 k
挑战:分析压缩比例与图像质量之间的关系,并尝试使用其他降维技术。+ \6 P6 @" B2 k* x' ?
使用PCA进行图像压缩和重构! Q/ {! [8 B3 C7 N7 \
假设你已经安装了必要的Python库,如numpy, matplotlib, 和scikit-learn。如果没有,你可以通过pip安装它们。
: U7 ]- N! M* L, q  s1 s8 K+ S* ^+ K9 W
以下是使用PCA对单张图片进行压缩和重构的步骤:
/ p  Z9 |" p8 w% w0 b% {8 V9 S% O' j$ E& K' t6 k4 y
加载图片:首先,我们需要加载一张图片并将其转换为合适的格式。; D) A6 h# [. B" V
! i1 \# h7 r7 |# }
应用PCA:然后,我们将应用PCA来降低图片的维度,实现压缩。
2 n2 [3 I( s8 p1 B4 g. {
8 J/ \, g$ Z+ b! l; Y( A2 Y# r重构图片:最后,我们将使用PCA的逆变换来重构图片,尽量恢复原始图片。
  1. import numpy as np
    2 j5 B  ^) L. h
  2. from sklearn.decomposition import PCA3 i9 B8 p; R0 A) p5 X
  3. import matplotlib.pyplot as plt7 h  N4 s: B\" j/ ?* |* J
  4. from PIL import Image& k8 y8 @& x# X  n) x1 q4 h; z$ l
  5. : E9 j$ Y) Z. ~# m4 s  `
  6. # 加载图片并转换为灰度图  u& ?0 e& M4 x5 Z2 l4 |; G
  7. image_path = 'path_to_your_image.jpg'
    5 P% W0 Z# F! e! n  U
  8. image = Image.open(image_path).convert('L')9 t* `% `# D6 [. B) ^
  9. image_array = np.array(image)
    6 w+ x0 o' x. f5 {

  10. ; F4 T( E( d  V; t8 Q7 Q, }4 ]
  11. # 展平图像数组/ q9 `# S# k6 K* h& u
  12. h, w = image_array.shape
    \" I- }) P5 Q0 K  O$ g
  13. image_flattened = image_array.flatten().reshape(1, h * w)( e+ Y+ B; J, i\" ?\" r
  14. % Z, T/ l# d9 e4 {$ |4 F
  15. # 应用PCA/ E\" g  t7 V$ F0 P4 o
  16. n_components = 100  # 选择保留的主成分数量
    4 _& N4 R: B: {, l6 ~9 \* }
  17. pca = PCA(n_components=n_components)+ J+ X# b8 v2 [\" n& G8 D! p
  18. image_compressed = pca.fit_transform(image_flattened)0 S) A6 ^  p% d5 |' I% ?
  19. & c- r7 N' r( C4 Y, Q* f8 c
  20. # 重构图像( I: O: E3 w9 a' D) S) y! Y
  21. image_reconstructed = pca.inverse_transform(image_compressed).reshape(h, w)* {4 Y# {+ Z) ~9 Q; X

  22. , v  U; x( b2 Y# O
  23. # 显示原始和重构的图像2 i3 A$ S. J& c
  24. plt.figure(figsize=(10, 5))* U1 {6 a* S( j9 o( s9 z6 E
  25. plt.subplot(1, 2, 1)
    9 g+ a4 ^$ R3 [! ?
  26. plt.imshow(image_array, cmap='gray')8 g9 C% C' ~$ G4 H
  27. plt.title('Original Image'): }! ~- Z# L( V3 f
  28. plt.subplot(1, 2, 2)
    / ]; y# C# [/ _* h5 X- d$ w  [* t* ]
  29. plt.imshow(image_reconstructed, cmap='gray'), M7 a5 E0 {9 U' @  Q\" L1 w/ V
  30. plt.title('Reconstructed Image')2 p- V# P% t% X
  31. plt.show()
复制代码
分析压缩比例与图像质量之间的关系
  S# o- r4 `1 q压缩比例与图像质量之间的关系可以通过改变n_components(PCA中保留的主成分数量)来探索。减少n_components会增加压缩比例,但可能会降低重构图像的质量。通过观察不同n_components值对应的重构图像,可以分析这种权衡关系。$ `0 k. ]- @/ v: ?

" _* ]' O# d- c' @尝试其他降维技术; J! i+ s; {  h
除了PCA之外,还有其他降维技术可以用于图像压缩,例如:* J$ Q9 l% b0 X1 U

, V  ^: {  x5 Q3 m, c  ^+ }随机投影(sklearn.random_projection)
) h) K( o. }! P; u7 d  ^: G# D非负矩阵分解(NMF,sklearn.decomposition.NMF)
4 k/ D, U+ @. x; s这些方法也可以用类似的方式应用于图像压缩,通过比较不同方法的效果,你可以深入理解各种降维技术在图像压缩任务中的表现和适用性。
3 M' ~! @6 G3 [& Z8 U, h9 p+ v: a# G. }! Q- O

( H+ H% g. ^; G: _- T9 I! V( F' u  |; {8 N" f6 @( n7 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-28 01:13 , Processed in 0.362115 second(s), 51 queries .

回顶部