accessing surrounding elements in an array
6 ビュー (過去 30 日間)
古いコメントを表示
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!
0 件のコメント
採用された回答
Sean de Wolski
2011 年 5 月 17 日
%Boundaries included
A2 = conv2(double(A),ones(3),'same')/9;
idx = A > 200; %simulating you're threshold
A(idx) = A2(idx);
This will yield a matrix with a windowing averaged matrix (A2) and select points in A that don't meet a criteria and replace them.
%Boundaries kept
A2 = conv2(double(A),ones(3),'valid')/9;
Apart = A(2:end-1,2:end-1);
idx = Atemp > 200; %simulating you're threshold
Atemp(idx) = A2(idx);
A(2:end-1,2:end-1) = Atemp;
3 件のコメント
Sean de Wolski
2011 年 5 月 17 日
Yes, you need to convert A to double first. See the first line of my answer.
Sean de Wolski
2011 年 5 月 17 日
Also, note: this answer is replacing border elements. It would be straightforward to change it.
その他の回答 (1 件)
Andrei Bobrov
2011 年 5 月 17 日
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 件のコメント
Sean de Wolski
2011 年 5 月 17 日
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
参考
カテゴリ
Help Center および File Exchange で Matrices and Arrays についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!