В MATLAB, как создать все возможные подматрицы из большой матрицы, сдвигая ровно одну строку и один столбец? - PullRequest
0 голосов
/ 22 января 2019

Предположим, у меня матрица 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 голосов
/ 22 января 2019

Вам нужно im2col с опцией 'sliding', затем reshape:

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