KMeans 算法应用于 RGB 图像压缩

KMeans算法可以应用于图像压缩,这种压缩实质上是一种有损压缩,实质上是将原本的色彩空间进行聚类,当所聚类的数据增长时,压缩后的质量也随之增加。

关于聚类算法的的介绍和具体处理步聚就是在这里细讲,主要是讲解关于 KMeans 应用于图像压缩的实质和实现

从下图可以看到对一张原图使用 KMeans 使用聚类算法进行压缩时,首先要将原来的图像的所有像素放置到一个相同维度的容器,例如Numpy中的Array,然后进行进聚类,最终聚类的个数需要指定,聚类个数越大,压缩后的图像质量也就越好,但压缩比就降低,即压缩后的文件大小变化并不明显。注意在保存的压缩文件,压缩的图像坐标[x,y]所对应的并不是这个像素的 RGB 值,而是一个类似于指针的 Index。如下所的例子,原图所有像素聚类后的中心点有64个,那么可以用6bit 来表示(\(2^6=64\)),从例方向看每一列就对应一个聚类后的 RGB 颜色,压缩后的图像,图上的 K 就指向其中一列,表示取这个颜色,在恢复原图时就依据这个,把指向的具体的 RGB 值取出来。

因此,压缩只是存储的压缩,在内存中进行显示的时候,还是需要还原,占用的内存空间和原图所占用的内存空间是一样大的。

基本原理图

下图是一张不同聚类个数后所得到的不同质量的图像
不同聚类值

像下图这一张老虎图,是一张压缩后的图,一黑白图,注意这个位图不是彩色是因为像素代表的聚类后的颜色对应的指针
compressed_tige


参考资料

Kmeans算法原理与应用-RGB图像压缩
Image-compression-with-Kmeans-clustering

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇