Splitting Images?

Hi, I have a question here.
Take for example an image of size n by m. What I want is to split the images into 4 similar quadrants as follows: http://www.flickr.com/photos/jokerzy89/5859808219/ Next, I want to swap the following. (1)A and C (2) B and D, then display the final result as a new image.
Can someone please help? Thank you!

4 Comments

Jason
Jason on 22 Jun 2011
My guess is that first you need to read the size of the image, then proceed to define the four quadrants. Something like this:
A = image(1:n/2, 1:m/2);
B = image(1:n/2, m/2:m);
C = image(n/2:n, 1:m/2);
D = image(n/2:n, m/2:m);
Am I right?
Sean de Wolski
Sean de Wolski on 22 Jun 2011
A is B in the above. It's not right because row/cols: n/2 , m/2 will each appear twice and what would happen if you had an off image say: 255x255
255/2 = ? - a non-integer index.
Jason
Jason on 22 Jun 2011
Thank you, that is why the floor function comes into picture.
Sean de Wolski
Sean de Wolski on 22 Jun 2011
yes, you could also use ceil.

Sign in to comment.

 Accepted Answer

Sean de Wolski
Sean de Wolski on 22 Jun 2011
swap1324 = @(x)([x((floor(size(x,1)/2)+1):end,(floor(size(x,2)/2)+1):end) x((floor(size(x,1)/2)+1):end,1:floor(size(x,2)/2)); x(1:floor(size(x,1)/2),(floor(size(x,1)/2)+1):end) x(1:floor(size(x,1)/2),1:floor(size(x,2)/2))]);
I = imread('cameraman.tif'); %sample image
I2 = swap1324(I);
imtool(I2)
Obviously the above should be broken down into it's own function that doesn't have to repeat the function floor(size(stuff))) over and over again.

1 Comment

Jason
Jason on 22 Jun 2011
That was fast, and it was exactly what I needed, thank you, Sean!

Sign in to comment.

More Answers (0)

Categories

Find more on Convert Image Type 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!