accessing surrounding elements in an array
Afficher commentaires plus anciens
Hi
I'm currently a complete newbie to MATLAB and I'm having trouble with a few things. I have several png files and I've counted the number of pixels that are above a certain input. I want to smooth the image/data by accessing each in the array and averaging it with its surrounding elements, excluding the boundaries of the image.
I know how to access each individual element in an array using its coordinates, and average them out using M = mean(A) - the problem I have is with accessing the neighbouring elements!
Any help would be great!
Réponse acceptée
Plus de réponses (1)
Andrei Bobrov
le 17 Mai 2011
variant
Aout = A;
Aout(2:end-1,2:end-1) = conv2(A,ones(3),'valid')/9;
% or "8" and [1 1 1;1 0 1;1 1 1]?
MORE EDIT
2 variants
1.
Aout(2:end-1,2:end-1) = conv2(A,ones(3),'valid')/9;
2.
Aout(2:end-1,2:end-1) = conv2(A,[1 1 1;1 0 1;1 1 1],'valid')/8;
4 commentaires
Gordon
le 17 Mai 2011
Andrei Bobrov
le 17 Mai 2011
typo in the line "out = A;" must be "Aout = A;"
Sean de Wolski
le 17 Mai 2011
Why don't you just run your for loop from 1:9?
for ii = 1:9
A = imread(...)
A2 = conv2(A,ones(3),'same')/9;
idx = A > 200; %simulating you're threshold
A(idx) = A2(idx);
%Do something with A now that it's smoothed
end
Gordon
le 17 Mai 2011
Catégories
En savoir plus sur Matrices and Arrays dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!