could you fix these codes?
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
I=imread('filename');
a1=I(1:8,1:8);
a2=I(1:8,9:16);
a3=I(1:8,17:24);
a4=I(1:8,25:32);
b1=I(9:16,1:8);
b2=I(9:16,9:16);
b3=I(9:16,17:24);
b4=I(9:16,25:32);
c1=I(17:24,1:8);
c2=I(17:24,9:16);
c3=I(17:24,17:24);
c4=I(17:24,25:32);
d1=I(25:32,1:8);
d2=I(25:32,9:16);
d3=I(25:32,17:24);
d4=I(25:32,25:32);
could you tell me how to make it short? Thank you
0 Commenti
Risposta accettata
Jan
il 14 Mag 2013
Modificato: Jan
il 14 Mag 2013
Don't do this.
Hiding the index in the name of a variable is a bad programming pattern. It is much more efficient to use indices as indices:
img = reshape(a(1:32, 1:32), 8, 4, 8, 4);
img = permute(img, [1,3,2,4]);
Now you have img(:, :, 1, 1) instead of a1.
This is much faster, needs less memory, and allows to expand the method for millions of tiles easily.
3 Commenti
Image Analyst
il 16 Mag 2013
You may not even need to do that. It's possible that you do not need to even store the tiles at all. Do you? Why do these tiles need to be stored rather than just operated on and thrown away (reused)? Just operate on one tile at a time if you can - why store forever?
Più risposte (2)
Iman Ansari
il 14 Mag 2013
Modificato: Iman Ansari
il 14 Mag 2013
Hi. Use cell array:
I=imread('moon.tif');
C=mat2cell(I(1:32,1:32),8*ones(1,4),8*ones(1,4));
imshow(C{5},'InitialMagnification','fit')
C{5} or C{1,2} is a2 in your code.
3 Commenti
Iman Ansari
il 14 Mag 2013
It's not good having variable named a1,a2,..., see this:
I=imread('moon.tif');
C=mat2cell(I(1:32,1:32),8*ones(1,4),8*ones(1,4));
imshow(C{5},'InitialMagnification','fit')
C in this code is:
C={a1,a2,a3,a4;b1,b2,b3,b4;c1,c2,c3,c4;d1,d2,d3,d4}
and for s:
s=[C{1,1} C{2,1} C{3,2} C{4,3};C{1,3} C{2,2} C{3,3} C{4,4};...]
David Sanchez
il 14 Mag 2013
You can try as well something like this
I=imread(your_32x32_image_name);
division = 8; % set according to yuor needs
L = size(I,1)/division;
subI = cell( L,L );
for row=1:L
for col=1:L
subI{row,col} = I( (row:row*division),(col:(col*division)) );
end
end
Vedere anche
Categorie
Scopri di più su Matrix Indexing in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!