图像储存
考虑一个灰度图像,假设它的分辨率为 512 ? 512 512 * 512 512?512像素,其中每一个像素记录了所处位置的灰度值( 0 ~ 255 0 \sim 255 0~255, 0 0 0为黑, 255 255 255为白,占用 1 1 1个字节),这样整个图像可以被视为一个 512 512 512阶方阵,或者是一个 512 ? 512 512 * 512 512?512维的向量。如果图像是彩色的,那么采用 R G B RGB RGB储存,大小会变为灰度图像的 3 3 3倍
图像压缩
图像常常会占据大量的储存空间,若不进行压缩则会影响系统加载和网络传输效率,一种标准的有损图像压缩方式是 J P E G JPEG JPEG,它的文件拓展名为 . j p g .jpg .jpg或 . j p e g .jpeg .jpeg
压缩前的图像是以标准正交基为坐标系的向量,而压缩图像相当于改变基,并且压缩图像的有许多种思路(以下以灰度图片举例):
以上三种思路都用一个值表示某一段的颜色从而达到了压缩的目的
不同的行业选择不同的基对图像进行压缩,比如电影行业基于信号扫描选择基
J P E G JPEG JPEG压缩
J P E G JPEG JPEG选择了傅里叶基,傅里叶基即由傅里叶矩阵的列向量(准确来说应该是乘上了 n n n之后的)组成的一组基,即: [ 1 1 1 ? 1 ] , [ 1 w w 2 ? w n ? 1 ] , ? ? , [ 1 w n ? 1 w 2 ( n ? 1 ) ? w ( n ? 1 ) 2 ] \begin{bmatrix} 1 \\ 1 \\ 1 \\ \vdots \\ 1 \end{bmatrix} , \begin{bmatrix} 1 \\ w \\ w^2 \\ \vdots \\ w^{n - 1} \end{bmatrix} , \cdots , \begin{bmatrix} 1 \\ w^{n - 1} \\ w^{2(n - 1)} \\ \vdots \\ w^{(n - 1)^2} \end{bmatrix} ?111?1? ?, ?1ww2?wn?1? ?,?, ?1wn?1w2(n?1)?w(n?1)2? ?
J P E G JPEG JPEG的做法是把一个图像分成多个 8 ? 8 8 * 8 8?8的小块单独处理,首先把小块的基变换为 64 64 64维傅里叶基,这将带来基向量系数的改变,即坐标的改变,这一步是无损操作;接着是有损操作,先设定阈值,阈值的选择取决于肉眼是否可以分辨出区别,再通过阈值去掉一些基向量,即把它们的系数定为 0 0 0,然后储存那些非零数值,这样就完成了压缩
压缩后的块可能只有 3 3 3个系数,相较于刚开始的 64 64 64个,压缩比大概为为 21 : 1 21:1 21:1
视频压缩
可以把视频视为大量静态图像,挨个储存所有图像将会占用很多空间,这明显不是一个合适的方法,考虑到相邻的图像实际上会十分相似,所以只需要把相邻的图像认为是同一个图像,然后加以修正,这样只需要储存修正所用的数据并对这些数据进行压缩即可
以一个 8 8 8维空间的小波基为例: [ 1 1 1 1 1 1 1 1 ] , [ 1 1 1 1 ? 1 ? 1 ? 1 ? 1 ] , [ 1 1 ? 1 ? 1 0 0 0 0 ] , [ 0 0 0 0 1 1 ? 1 ? 1 ] , [ 1 ? 1 0 0 0 0 0 0 ] , [ 0 0 1 ? 1 0 0 0 0 ] , [ 0 0 0 0 1 ? 1 0 0 ] , [ 0 0 0 0 0 0 1 ? 1 ] \begin{bmatrix} 1 \\ 1 \\ 1 \\ 1 \\ 1 \\ 1 \\ 1 \\ 1 \end{bmatrix} , \begin{bmatrix} 1 \\ 1 \\ 1 \\ 1 \\ -1 \\ -1 \\ -1 \\ -1 \end{bmatrix} , \begin{bmatrix} 1 \\ 1 \\ -1 \\ -1 \\ 0 \\ 0 \\ 0 \\ 0 \end{bmatrix} , \begin{bmatrix} 0 \\ 0 \\ 0 \\ 0 \\ 1 \\ 1 \\ -1 \\ -1 \end{bmatrix} , \begin{bmatrix} 1 \\ -1 \\ 0 \\ 0 \\ 0 \\ 0 \\ 0 \\ 0 \end{bmatrix} , \begin{bmatrix} 0 \\ 0 \\ 1 \\ -1 \\ 0 \\ 0 \\ 0 \\ 0 \end{bmatrix} , \begin{bmatrix} 0 \\ 0 \\ 0 \\ 0 \\ 1 \\ -1 \\ 0 \\ 0 \end{bmatrix} , \begin{bmatrix} 0 \\ 0 \\ 0 \\ 0 \\ 0 \\ 0 \\ 1 \\ -1 \end{bmatrix} ?11111111? ?, ?1111?1?1?1?1? ?, ?11?1?10000? ?, ?000011?1?1? ?, ?1?1000000? ?, ?001?10000? ?, ?00001?100? ?, ?0000001?1? ?,其中的每个基向量都可以被称为小波,记作 w ? \vec{w} w,而且小波中有很多从 1 1 1到 ? 1 -1 ?1的跳跃
这只是一个比较简单的小波选择,还有很多更精细的选择,在更精细的选择中,变化不会这么剧烈,即跳跃较少
变换基即求出变换后基向量的系数,设变换前向量为 p ? \vec{p} p?,变换后向量为 c ? \vec{c} c,有 p ? = c 1 w ? 1 + ? + c n w ? n \vec{p} = c_1 \vec{w}_1 + \cdots + c_n \vec{w}_n p?=c1?w1?+?+cn?wn?,把以小波为列向量的矩阵称作小波矩阵,记作 W W W,则有 p ? = W c ? \vec{p} = W \vec{c} p?=Wc,所以 c ? = W ? 1 p ? \vec{c} = W^{-1} \vec{p} c=W?1p?
怎样说明用作变换的基性质很好呢?一般需要满足两个条件,首先是计算迅速,即用对应矩阵及其逆左乘向量均非常迅速,对于傅里叶基,有快速傅里叶变换,对于小波基,其实也有快速小波变换( F W T FWT FWT);其次是丢弃某些基向量不会对图像产生过大影响,比如刚才那个 8 8 8维空间的小波基如果丢去了 w ? 5 \vec{w}_5 w5?,不会对图像产生过多影响
设两组不同基下同一向量分别表示为 p ? , c ? \vec{p} , \vec{c} p?,c,并且这两组基对应矩阵分别为 V , W V , W V,W,有 V p ? = W c ? V \vec{p} = W \vec{c} Vp?=Wc,则 p ? = V ? 1 W c ? \vec{p} = V^{-1} W \vec{c} p?=V?1Wc,令 M = V ? 1 W M = V^{-1} W M=V?1W,则 M ? 1 = W ? 1 V M^{-1} = W^{-1} V M?1=W?1V
对于一个 T : R n → R n T:R^n \to R^n T:Rn→Rn,设在两组不同基下对应的矩阵分别为 A , B A , B A,B,用两组基表示同一向量分别得到 p ? , c ? \vec{p} , \vec{c} p?,c,令 p ? = M c ? \vec{p} = M \vec{c} p?=Mc,有 A p ? = M B c ? = M B M ? 1 p ? A \vec{p} = M B \vec{c} = M B M^{-1} \vec{p} Ap?=MBc=MBM?1p?,所以 A = M B M ? 1 A = M B M^{-1} A=MBM?1,因而在基不同的情况下描述同一不变换维度的线性变换使用的矩阵互为相似矩阵
因为正交矩阵满足 Q ? 1 = Q T Q^{-1} = Q^T Q?1=QT,所以用正交矩阵左乘一个由单位矩阵各列组成的基下的向量可视为将那个向量的基变换为由 Q T Q^T QT的各列组成,考虑这种变换的相对性,即考虑基不变,那么该变换可视为向量的旋转,所以正交矩阵可视为旋转矩阵
制作不易,若有帮助,欢迎打赏!