How to find the local mean of an image?

24 views (last 30 days)
SHILPI GUPTA
SHILPI GUPTA on 9 Apr 2019
Commented: Rik on 10 Jun 2022
img = imread('b.png');
img = rgb2gray(img);
[m,n] = size(img);
img1 = padarray(img,[1,1],'both');
m=m+2;
n=n+2;
img2 = zeros(m,n);
for i=2:m-1
for j=2:n-1
img2(i,j) = uint64(img1(i+1,j)+img1(i+1,j-1)+img1(i+1,j+1)+img1(i,j-1)+img1(i,j+1)+img1(i-1,j-1)+img1(i-1,j)+img1(i-1,j+1)+img1(i,j))/9;
end
end
disp(img2);
I'm using this code, still its not giving mw the right answer.
  4 Comments
shelan naveed
shelan naveed on 10 Jun 2022
CAN YOU EXPLAIN IT WITH AN EXAMPLE PLEASE
Rik
Rik on 10 Jun 2022
@shelan naveed what exactly do you want an explanation of?

Sign in to comment.

Accepted Answer

Rik
Rik on 9 Apr 2019
Edited: Rik on 9 Apr 2019
The fastest way to get a local average is to do a convolution with a flat structuring element:
%load example image
A=imread(['https://www.google.com/images/branding/googlelogo/',...
'1x/googlelogo_color_272x92dp.png']);
A=rgb2gray(A);
%define flat 3x3 structuring element
SE=ones(3,3);SE=SE/sum(SE(:));
B=conv2(A,SE,'same');
B=uint8(B);%cast back to uint8, this will round values
figure(1)
subplot(1,2,1)
imshow(A)
title('original')
subplot(1,2,2)
imshow(B)
title('local mean')

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!