how to break an image into sub images
Show older comments
i have an image having pixels 512*512 . i want to break it in equal sub images (for eg like into images of 8*8) and want to apply a function (can be any) on each sub image ??
Answers (3)
José-Luis
on 4 Sep 2012
0 votes
Google, as well as Matlab answers are your friends:
Zainab Ishfaq
on 29 May 2018
Edited: Walter Roberson
on 13 Feb 2020
Height=8; width=8;
currentimage = imread('Image.png');
[r,c,~]=size( currentimage );
count=0;
for i=0:Height:r
count=count+1;
for j=0:width:c
if((i+Height)<r && (j+width)<c)
Image=imcrop( currentimage ,[(i+1) (j+1) Height width]);
imwrite(Image,horzcat(currentfilename, num2str(count),'.tif'));
end
end
end
9 Comments
ahmad Al sarairah
on 9 Oct 2019
I have an image with (643x643) dimensions , and i need to split it horizontally and vertically into 100 sub images,so that each sub image is (64x64)pixels using matlab code .
The sub images are blocks with (64x64) pixels ,so the height and the width of each block is equal 64 .
i used this code , but i get only 10 sub images .
shital shinde
on 13 Feb 2020
anyone please send me above code but using parallel concept. Means using parfor loop. Actually I am working for image denoising, I want to divide the image into blocks and then try to perofrm denoisinng it. Please help me.
Walter Roberson
on 13 Feb 2020
Change
for i=0:Height:r
count=count+1;
to
parfor i=0:Height:r
count=i+1;
shital shinde
on 14 Feb 2020
error- Undefined function or variable 'currentfilename'.
I got this error when I am trying to run it,
Walter Roberson
on 14 Feb 2020
infilename = 'Image.png';
Height=8; width=8;
currentimage = imread(infilename);
[r,c,~]=size( currentimage );
[~, currentfilename, ~] = fileparts(infilename);
for i=0:Height:r
ridx = floor(i/Height) + 1;
for j=0:width:c
cidx = floor(j/width) + 1;
if((i+Height)<r && (j+width)<c)
Image=imcrop( currentimage ,[(i+1) (j+1) Height width]);
outfilename = sprintf('%s_%03d_%03d.tif', ridx, cidx)
imwrite(Image, outfilename);
end
end
end
shital shinde
on 18 Feb 2020
Edited: shital shinde
on 18 Feb 2020
It again gives the error sir. I attached screenshot. I make some modifications, but it didn't work. please tell me .
Walter Roberson
on 18 Feb 2020
outfilename = sprintf('%s_%03d_%03d.tif', currentfilename, ridx, cidx)
shital shinde
on 21 Feb 2020
Edited: shital shinde
on 21 Feb 2020
Thanks sir. It work now. I have one question. Can we parallelize the above example using parallel computing toolbox.
Walter Roberson
on 21 Feb 2020
Edited: Walter Roberson
on 21 Feb 2020
Yes. Just change for i to parfor i
As we have advised you before, the result will almost certainly be notably slower than your current code. But I know from your previous questions that you feel inclined to do that testing yourself.
image-pro
on 19 Oct 2021
0 votes
i have an error please help
Error in p8 (line 11)
Image=imcrop(currentimage ,[(i+1) (j+1) Height width]);
1 Comment
Walter Roberson
on 19 Oct 2021
what is the error message?
Categories
Find more on Images in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!