在MATLAB中,如何通过仅移动一行和一列来从一个大型矩阵创建所有可能的子矩阵?

时间:2019-01-22 18:05:01

标签: matlab image-processing matrix matlab-figure submatrix

假设我有一个256 * 256的矩阵(图像像素值)。我想通过仅移动一行和一列来创建滑动窗口1到滑动窗口n。所有滑动窗口矩阵的大小均应为5 * 5。

我尝试使用以下代码。通过这种方式,我可以得到子矩阵,但不能通过仅移动一行和一列来获得子矩阵。

I = imread('D:\Study Material\project\Finger Print Database\1_2.png');

J = imresize(I, [128 128]);

C=mat2tiles(J,[5,5]);
  • 假设原始矩阵有10行和10列。
  • 我得到的是(column1-column5&row1-row5)然后是(column6-column10&row6-row10)的子矩阵。
  • 但是我需要这样-(column1-column5&row1-row5)然后(column2-column6&row1-row5)像这样,第一列将移至10。之后,该行将移至10。

1 个答案:

答案 0 :(得分:1)

您需要使用'sliding'选项的im2col,然后是reshape

blockSize = [5 5];
C = reshape(im2col(J, blockSize, 'sliding'), blockSize(1), blockSize(2), []);