计算SVD扰动的组合图像

时间:2014-10-18 06:24:12

标签: matlab image-processing computer-vision signal-processing svd

我知道如何生成组合图像:

STEP1: I = imread('image.jpg');
STEP2: Ibw = single(im2double(I));
STEP3: [U S V] = svd(Ibw); %where  U and S are letf and right odd vectors, respectively, and D the
%diagonal matrix of particular values
% calculate derived image
STEP4:  P = U * power(S, i) * V'; % where i is between 1 and 2
%To compute the combined image of SVD perturbations:
STEP5: J = (single(I) + (alpha*P))/(1+alpha); % where alpha is between 0 and 1

因此,通过将P积分到I中,我们得到一个组合图像J,它保留了原始图像的主要信息,并且可以更好地对抗表达,光照和遮挡的微小变化。

我有一些问题:

1)我想详细了解应用Step3的动机是什么?我们在这里有什么不安?

2)在第3步中,"特定值"?

的含义是什么

3)派生的图像P也可以被称为:"被扰动的图像"?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

此方法源自this paper that can be accessed here。让我们按顺序回答你的问题。

  1. 如果您想知道为什么这一步有用,您需要了解一些关于SVD如何工作的理论。 SVD代表Singular Value Decomposition。您正在使用SVD做的是它正在以这样一种方式转换您的N维数据,即根据哪个维度展示最大量的变化来对其进行排序,并且其他维度按此递减顺序排序(SVD)专家和数学纯粹主义者......不要开枪。这就是我理解SVD的方法。这个特定上下文中的奇异值可以为您的数据的每个维度在整体分解中贡献多少加权。

    因此,通过应用该特定步骤(P = U * power(S, i) * V';),您将更加强调数据中的“变体”,以便图像中最重要的功能突出,而不重要的功能将“淡化”这真的是我可以看到为什么他们这样做的唯一理由。

  2. “特殊”值是奇异值。这些值是S矩阵的一部分,这些值出现在矩阵的对角线中。

  3. 我不会将P称为派生图像,而是定位图像的哪些部分与图像的其余部分相比更重要的图像。通过将其与原始图像混合,您应该集中注意力的那些特征更加强调,而大多数人不会注意的图像的其他部分,在整体结果中不再强调。

    < / LI>

    我建议你阅读那篇论文,你得到了这个算法,因为它很好地解释了整个过程。

    为您提供更多参考资料

    看看这个great tutorial on the SVD here。此外,this post可能会回答有关算法洞察力的更多问题。