上一章我们介绍了奇异值分解的理论原理,这一章我们使用奇异值分解来压缩图片
- 一、RGB模式
- (1) 灰色图片与彩色图片
- 二、matlab进行图片压缩
- 1.参数分析
- 2.读取图像文件并进行转换
- 3.进行奇异值分解
- 4.将压缩后的图片保存
- 5.实例演示
- (1)原图:
- (2)进行处理
- (3)处理后————保留60%信息
一、RGB模式
RGB色彩就是常说的三原色,R代表Red(红色),G代表Green(绿色),B代表Blue(蓝色)。自然界中肉眼所能看到的任何色彩都可以由这三种色彩混合叠加而成。
计算机定义颜色时R、G、B三种成分的取值范围是0-255
R、G、B均为255时就合成了白光,R、G、B均为0时就形成了黑色。
(1) 灰色图片与彩色图片
如果一张图片的R、G、B三原色完全相同,那么这张图片我们就称为灰色图片;否则我们称这张图片为彩色图片
如图所示,第一行数字代表着图片的像素点,而第二行数字则是代表着RGB的取值,此处我们鼠标落在了纯白区域,因此三者取值为255
二、matlab进行图片压缩
function []= photo_compress(photo_address, save_address, ratio, greycompress)
此函数是我们所定义的一个进行图片压缩的函数,第一个参数为图片的名称;第二个为压缩后保存图片的名称;第三个为保留信息的比例;第四个为一个0-1变量,1代表将图片转化为灰色,0则不进行此操作
下面我们来介绍一个这个函数
1.参数分析
nargin表示用户输入的参数个数,如果用户没有输入第四个参数,则默认不进行此操作,但mtalab仍然需要将其初始化为0
if nargin == 3 % 判断用户输入的参数,如果只输入了前三个参数,则默认最后的参数greycompress=0greycompress = 0;end
2.读取图像文件并进行转换
imread
函数可以读取图片文件,读取后保存下来的变量是uint8类型的,但是要进行奇异值分解需要将其转换成double类型储存在img变量中
之后就是利用rgb2gray函数将彩色图片转化成灰色图片的过程
3.进行奇异值分解
我们将分类讨论图片的情况,如果是彩色图片,保存的图片变量是三维的(RGB的数值均不同),而灰色图片是一维的。
分情况来进行奇异值分解,最后用cat函数将R、G、B三个维度连接起来保存到compress_img变量
4.将压缩后的图片保存
imwrite(uint8(compress_img), save_address)
imwrite可以将压缩后的图片变量保存为图片文件,第一个参数为图片变量(需要转化成“uint8”类型),第二个参数为保存文件的名称