主要内容

图像压缩与低级圣言

这个例子展示了如何使用svdsketch压缩图像。svdsketch使用一个低秩矩阵近似保留图像的重要特征,而过滤掉不太重要的功能。公差使用svdsketch增加的幅度,过滤掉更多的特性,改变图像中细节的水平。

加载图片

加载图片street1.jpg,这是一幅城市街道的野花。这个图像是三维矩阵形式uint8,因此将图像转换为灰度矩阵。查看图像与原始矩阵秩的注释。

一个= imread (“street1.jpg”);= rgb2gray ();imshow (A)标题([“原始(”sprintf (“等级% d)”、等级(双(A)))))

图包含一个坐标轴对象。坐标轴对象标题原创(排名480)包含一个类型的对象的形象。

压缩图像

使用svdsketch计算一个接近的低秩矩阵一个在一个宽容的1)依照。形式返回的低秩矩阵乘以计算因素svdsketch,转换结果uint8,并查看生成的图像。

[U1, S1, V1] = svdsketch(1双(A),依照);Anew1 = uint8 (U1 * S1 * V1’);imshow (uint8 (Anew1)标题(sprintf (% d级近似的、大小(S1, 1)))

图包含一个坐标轴对象。坐标轴对象标题等级288近似包含一个类型的对象的形象。

svdsketch产生一个排名288近似,这导致一些小粒状的边界线的形象。

现在,第二次压缩图像使用的宽容1 e 1。随着公差的大小增加,产生的近似svdsketch普遍降低。

(U2, S2, V2) = svdsketch(双(A), 1 e 1);Anew2 = uint8 (U2 * S2 * V2’);imshow (Anew2)标题(sprintf (% d级近似的、大小(S2, 1)))

图包含一个坐标轴对象。坐标轴对象与标题排名48近似包含一个类型的对象的形象。

这一次,svdsketch产生一个排名48近似。最主要的方面的形象仍然可见,但额外的压缩增加了模糊强度。

子空间大小限制

svdsketch自适应地确定使用哪个等级的矩阵素描根据指定的公差。然而,您可以使用MaxSubspaceDimension名称-值对将指定最大子空间大小应该用于形成矩阵草图。这个选项可以产生矩阵不满足宽容,因为您所指定的子空间可能是太小了。在这些情况下,svdsketch返回一个矩阵与最大允许子空间大小草图。

使用svdsketch宽容的1 e 1和最大的子空间大小的15。指定一个第四输出返回相对近似误差。

[U3, S3, V3, apxErr] = svdsketch(双(A), 1 e 1,“MaxSubspaceDimension”15);

比较结果的相对近似误差和指定的公差。apxErr包含一个元素自svdsketch只需要一个迭代计算的答案。

apxErr < = 1 e 1
ans =逻辑0

结果表明,矩阵草图不满足指定的公差。

查看严重压缩排名15的形象。

Anew3 = uint8 (U3 * S3 * V3的);imshow (Anew3)标题(sprintf (% d级近似的、大小(S3, 1)))

图包含一个坐标轴对象。坐标轴对象与标题等级15近似包含一个类型的对象的形象。

比较结果

最后,视图的所有图片并排比较。

tiledlayout (2, 2,“TileSpacing”,“紧凑”)nexttile imshow (A)标题(“原始”)nexttile imshow (Anew1)标题(sprintf (% d级近似的、大小(S1, 1))) nexttile imshow (Anew2)标题(sprintf (% d级近似的、大小(S2, 1))) nexttile imshow (Anew3)标题(sprintf (% d级近似的、大小(S3, 1)))

图包含4轴对象。坐标轴对象1与原有标题包含一个类型的对象的形象。坐标轴对象2标题等级288近似包含一个类型的对象的形象。坐标轴对象3标题排名48近似包含一个类型的对象的形象。坐标轴对象4标题等级15近似包含一个类型的对象的形象。

另请参阅

||

相关的话题