只用不到二十个数字就能在某种失真度上记录一张图片,你信不信?
1、方法原理
……首先要了解,图片的保存原理是利用像素点,所有颜色都是由三原色(红黄蓝)按不同比例混合而成的,所以每一张彩色图片的每一个像素点就包含着这三种颜色的权重。
……一张彩色图片的像素信息由三张二维矩阵构成,每一个二维矩阵代表三原色其中一种颜色的权重,可以简单地这样理解:
将一张彩色图片很细密地横竖切割成MXN个小块块,当小块足够小以至于这个小块的颜色基本不变,每一个小块都能用一个像素点构成。像素点矩阵的二维矩阵就是对应图片上的小块的位子,矩阵维数也是MXN
比如一个小块(a,b)上全是黑色,它的三原色组成权重为(x,y,z),那么这三张二维矩阵的(a,b)上对应的数值就是(x,y,z)
……一张拍摄出来的照片,比如很纯净的蓝天照片,肉眼看出来感觉都是差不多的颜色,但实际上照片的颜色是有很细微差别的,图片的像素点数据也会有细微差别的。基本上,每一个像素点的数据都可能会有一点点不同,那么一张MXN维的图片就需要 MXNX3 个数字来保存这张图片信息。当然,如果图片越清晰,像素越高,MXN越大。
2、颜色降维思维
……一般的方法,为了压缩图片就是为了降低MXN的大小,而聚类的方法有所不同。方法思维是将相近颜色的所有像素点只用一个像素点代替。比如一张纯净的蓝天照片,可以夸张地压缩到只有一种颜色,那么保存这张图片就只需要一个三维像素点(x,y,z),照片上所有像素点都是(x,y,z);