【问题标题】:how to reconstruct the original Image after modification using SVD使用SVD修改后如何重建原始图像
【发布时间】:2014-08-17 09:36:09
【问题描述】:

我已经使用svd 分解了我的图像,并通过添加矩阵来修改奇异值,比如说A。我怎样才能找回这个矩阵A

例如:

 m=[1 2 3; 4 5 6; 7 8 9];
 [u s v]= svd(m);
 A=[0 2 1; 3 5 6; 8 9 4];
 sw= s+A;
 new= u*sw*v;

现在我怎样才能从矩阵new 取回我的矩阵A

【问题讨论】:

    标签: matlab svd decomposition data-hiding


    【解决方案1】:

    要从 usv 给出的 SVD 重构 A,您将使用

    m_rec = u*s*v';
    

    因此,在您的情况下,只需将 s 替换为 sw

    m_rec = u*sw*v';
    

    也就是说,您的矩阵 new 中只缺少一个共轭转置 (')。

    但是,您对s 应用的修改似乎太大,甚至不是对角线,因此您无法正确重构m。如果修改很小,您会这样做。例如:

    >> sw = s + diag(.1*randn(1,3));
    >> m_rec = u*sw*v'
    m_rec =
        0.9987    1.9977    3.0348
        4.0070    5.0543    6.0256
        7.0533    8.0348    9.0543
    

    【讨论】:

    • 感谢 Luis Mendo,感谢您的热情回复,其实我想从矩阵“新”中获取矩阵“A”。
    • @user3327980 在您的矩阵“新”中,您需要将v 替换为v'
    • 好的 new=uswv';现在我怎样才能得到矩阵A..?请重读我的例子.. m=[1 2 3; 4 5 6; 7 8 9]; [u s v]= svd(m); A=[0 2 1; 3 5 6; 8 9 4]; sw=s+A;新= uswv';现在我想从矩阵“新”中获取矩阵“A”......请帮助我
    【解决方案2】:

    这是一个误会。秩为 rho 的矩阵的奇异值矩阵具有以下性质:(1) 它是对角线的;(2) 奇异值的排序使得 s1 >= s2 >= s3 >= ... s rho > 0。你描述的矩阵加法违反了这两个原则。

    为了放大,如果您扰动奇异值矩阵,则不得包含非对角项,并且必须保留阿基米德排序。当第三行中的矩阵 A 被添加到矩阵 s 时,得到的矩阵不是奇异值矩阵。

    【讨论】:

      猜你喜欢
      • 2017-04-10
      • 1970-01-01
      • 2012-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-31
      • 2022-01-01
      • 1970-01-01
      相关资源
      最近更新 更多