sliding window

How to apply a 3x3 sliding window for an image while the pixel in the center of the window should have the mean value of the window.

Réponses (3)

Ben Mitch
Ben Mitch le 22 Mai 2011

1 vote

I think you're after filter2(). Try
mn = filter2(ones(3), im);

5 commentaires

Gova ReDDy
Gova ReDDy le 22 Mai 2011
sorry..i didnt get you can xplain it clearly
Jan
Jan le 23 Mai 2011
Read "doc filter2". I assume you need a further normalization: "filter2(ones(3)/9, im)".
Ben Mitch
Ben Mitch le 25 Mai 2011
assuming your image comes from a file (if not, the process is much the same)...
im = imread('my_image.png');
im = double(im);
im = mean(im, 3); % convert to greyscale, if is RGB
b = ones(3)/9;
im = filter2(b, im);
imshow(im);
if you need to work in RGB rather than greyscale, you could use something like...
for d = 1:3
im(:, :, d) = filter2(b, im(:, :, d));
end
Gova ReDDy
Gova ReDDy le 11 Juin 2011
danx..bt i want to store the mean value of the 3x3 sliding window in the centre pixel and the window should slide to the next 3x3 position
Image Analyst
Image Analyst le 12 Juin 2011
But that's exactly what Ben, Jan, and Sean de's code does! Did you look up the help for filter2()? It is basically conv2() (which is highly optimized) with the 'same' option. (I always use conv2 rather than filter2.) Write a test with a small image to convince yourself.

Connectez-vous pour commenter.

Jan
Jan le 11 Juin 2011

1 vote

What is "the next 3x3 position"? Will the resulting picture have a width and size reduced by 3? If so, this can achieve the calculation efficiently: FEX: BlockMean

2 commentaires

Gova ReDDy
Gova ReDDy le 12 Juin 2011
Not the same actually image size is 256*256 pixels and the sliding window size is 3*3 each centre pixel value of window should have the window mean value,"the next 3*3 window " means the window should slide along all the pixels of the image.
Image Analyst
Image Analyst le 12 Juin 2011
Patan, how many times do we have to say it. CONV2 AND IMFILTER WILL DO WHAT YOU'RE ASKING!!!!

Connectez-vous pour commenter.

Sean de Wolski
Sean de Wolski le 25 Mai 2011

0 votes

Imean_window = conv2(double(I),ones(3)/9,'valid');

Catégories

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by