sliding window
Mostra commenti meno recenti
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.
Risposte (3)
Ben Mitch
il 22 Mag 2011
I think you're after filter2(). Try
mn = filter2(ones(3), im);
5 Commenti
Gova ReDDy
il 22 Mag 2011
Jan
il 23 Mag 2011
Read "doc filter2". I assume you need a further normalization: "filter2(ones(3)/9, im)".
Ben Mitch
il 25 Mag 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
il 11 Giu 2011
Image Analyst
il 12 Giu 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.
Jan
il 11 Giu 2011
1 voto
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 Commenti
Gova ReDDy
il 12 Giu 2011
Image Analyst
il 12 Giu 2011
Patan, how many times do we have to say it. CONV2 AND IMFILTER WILL DO WHAT YOU'RE ASKING!!!!
Sean de Wolski
il 25 Mag 2011
Imean_window = conv2(double(I),ones(3)/9,'valid');
Categorie
Scopri di più su Image Processing Toolbox in Centro assistenza e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!