通过 PCA 对 2D 图像进行降维
Dimension reduction of a 2D-Image via PCA
我想缩小 2D 图像的尺寸。我有大小为 100x50
的图像块,我想减少这些块的尺寸。
是否需要先将patch(100x50)
转为vector(5000x1)
然后应用PCA降维还是直接应用PCA对patch进行降维(100x50)
并缩小维度,让我们说 2x50
?
PCA 将向量 space 中的一个点作为输入并将其投影到子 space 上。以这种方式表达,那么很容易记住您需要将补丁调整为矢量。
使用 Matlab,调用您的补丁 X
,您可以通过调用 X(:)
轻松完成此操作,而不必弄乱 reshape
。
降维是 R^n -> R^m
,其中 n>m
所以根据你的文字,我的印象是你的意思是:
分辨率调整
- 更改目标分辨率
数据缩减
- 消除无关紧要的数据
要调整图像大小或减少数据,有很多方法可以做到,例如:
linear/bilinear/cubic/...过滤
- 适用于视觉数据大小调整(不适用于数据缩减)
基于频域DFFT/DCT/DST的数据缩减
- 可用于更改分辨率而不会丢失大量数据
- 通过转换为频域
- (可选)去除噪音或无关紧要的数据(如 JPEG 压缩)
- 以所需的分辨率转换回空间域
- 当你停留在频域时,也可以用于数据缩减
- 并仅使用有效频率(高振幅..)
PCA
- 不能用于预定的目标分辨率,因为
- 它提取重要数据,其大小取决于内容
所以答案实际上取决于您究竟需要实现什么以及出于什么目的
您可以直接应用2D-PCA。至少它存在并且应该比 1D-PCA 表现更好(减少方面)。
2004 年的一篇被高度引用的研究论文:
Yang, J. 等人,2004 年。二维 PCA:一种基于外观的人脸表示和识别的新方法。 IEEE 模式分析和机器智能汇刊,26(1),第 131–137 页。
Source
遗憾的是我不知道 Matlab 实现。
我想缩小 2D 图像的尺寸。我有大小为 100x50
的图像块,我想减少这些块的尺寸。
是否需要先将patch(100x50)
转为vector(5000x1)
然后应用PCA降维还是直接应用PCA对patch进行降维(100x50)
并缩小维度,让我们说 2x50
?
PCA 将向量 space 中的一个点作为输入并将其投影到子 space 上。以这种方式表达,那么很容易记住您需要将补丁调整为矢量。
使用 Matlab,调用您的补丁 X
,您可以通过调用 X(:)
轻松完成此操作,而不必弄乱 reshape
。
降维是 R^n -> R^m
,其中 n>m
所以根据你的文字,我的印象是你的意思是:
分辨率调整
- 更改目标分辨率
数据缩减
- 消除无关紧要的数据
要调整图像大小或减少数据,有很多方法可以做到,例如:
linear/bilinear/cubic/...过滤
- 适用于视觉数据大小调整(不适用于数据缩减)
基于频域DFFT/DCT/DST的数据缩减
- 可用于更改分辨率而不会丢失大量数据
- 通过转换为频域
- (可选)去除噪音或无关紧要的数据(如 JPEG 压缩)
- 以所需的分辨率转换回空间域
- 当你停留在频域时,也可以用于数据缩减
- 并仅使用有效频率(高振幅..)
PCA
- 不能用于预定的目标分辨率,因为
- 它提取重要数据,其大小取决于内容
所以答案实际上取决于您究竟需要实现什么以及出于什么目的
您可以直接应用2D-PCA。至少它存在并且应该比 1D-PCA 表现更好(减少方面)。
2004 年的一篇被高度引用的研究论文: Yang, J. 等人,2004 年。二维 PCA:一种基于外观的人脸表示和识别的新方法。 IEEE 模式分析和机器智能汇刊,26(1),第 131–137 页。 Source
遗憾的是我不知道 Matlab 实现。