KMeans 算法应用于 RGB 图像压缩
KMeans算法可以应用于图像压缩,这种压缩实质上是一种有损压缩,实质上是将原本的色彩空间进行聚类,当所聚类的数据增长时,压缩后的质量也随之增加。
关于聚类算法的的介绍和具体处理步聚就是在这里细讲,主要是讲解关于 KMeans 应用于图像压缩的实质和实现
从下图可以看到对一张原图使用 KMeans 使用聚类算法进行压缩时,首先要将原来的图像的所有像素放置到一个相同维度的容器,例如Numpy中的Array,然后进行进聚类,最终聚类的个数需要指定,聚类个数越大,压缩后的图像质量也就越好,但压缩比就降低,即压缩后的文件大小变化并不明显。注意在保存的压缩文件,压缩的图像坐标[x,y]所对应的并不是这个像素的 RGB 值,而是一个类似于指针的 Index。如下所的例子,原图所有像素聚类后的中心点有64个,那么可以用6bit 来表示(
2
6
=
64
2^6=64
26=64),从例方向看每一列就对应一个聚类后的 RGB 颜色,压缩后的图像,图上的 K 就指向其中一列,表示取这个颜色,在恢复原图时就依据这个,把指向的具体的 RGB 值取出来。
因此,压缩只是存储的压缩,在内存中进行显示的时候,还是需要还原,占用的内存空间和原图所占用的内存空间是一样大的。

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

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

参考资料
Kmeans算法原理与应用-RGB图像压缩
Image-compression-with-Kmeans-clustering
本文探讨了KMeans算法如何用于RGB图像压缩,这是一种有损压缩方法,通过聚类色彩空间来减少图像数据。随着聚类数量增加,压缩质量提升但压缩比下降。压缩过程将图像像素映射到聚类中心,用更少的位表示图像,恢复时按映射还原RGB值。尽管压缩后文件大小减小,内存中显示时仍需还原,占用空间与原图相同。示例展示了不同聚类数量对压缩图像质量的影响。

3322

被折叠的 条评论
为什么被折叠?



