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 件のコメント

Jason
Jason 2011 年 6 月 22 日
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 2011 年 6 月 22 日
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 2011 年 6 月 22 日
Thank you, that is why the floor function comes into picture.
Sean de Wolski
Sean de Wolski 2011 年 6 月 22 日
yes, you could also use ceil.

サインインしてコメントする。

 採用された回答

Sean de Wolski
Sean de Wolski 2011 年 6 月 22 日

2 投票

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 件のコメント

Jason
Jason 2011 年 6 月 22 日
That was fast, and it was exactly what I needed, thank you, Sean!

サインインしてコメントする。

その他の回答 (0 件)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by