1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| I=512;
M=rand(I);
% Ligne utilisée pour construire les indices de tous les centres
[jj ii]=meshgrid(3:I-2);
% Redimensionnement pour n'avoir qu'une colonne
ii=reshape(ii,numel(ii),1);
% Redimensionnement pour n'avoir qu'une colonne
jj=reshape(jj,numel(jj),1);
% Indexation linéaire de tous les centres (un seul indice)
kk=sub2ind([I I],ii,jj);
% Répétition des indices dans le but de construire
% les indices des colonnes centrales de chaque matrice
kk=repmat(kk,[1 5]);
% Indices des lignes de chaque matrice
kk=kk+repmat(-2:2,[size(kk,1) 1]);
% Répétition des indices dans le but de construire les indices des éléments de chaque matrice
kk=repmat(kk,[1 5]);
% Indices des éléments de chaque matrice
a=reshape(repmat(I*(-2:2),[5 1]),[1 25]);
kk=kk+repmat(a,[size(kk,1) 1]);
kk=reshape(kk.',[numel(kk) 1]);
% En prenant M de chaque indices
% on obtient toutes petites matrices 5x5
% pour tous les pixels, elles se suivent toutes
% dans une seule colonne
% les 25 éléments de chaque colonne
% les uns à la suite des autres
MM=reshape(M(kk),[5 5 I-4 I-4]); |
Partager