7x7 arithmetic mean filter
Mostra commenti meno recenti
How can I apply 7x7 arithmetic mean filter to following image?
3 Commenti
faysal firas
il 17 Lug 2020
% Chessboard
n = 8;
v = 1:n; % 1 =w; 0=black
c = zeros(n,n); for k=1:n; c(k,:) = mod(v+k-1,2); end; c
% mean filter
h = [1 1 1 1 1 1 1; 1 1 1 1 1 1 1; 1 1 1 1 1 1 1; 1 1 1 1 1 1 1; 1 1 1 1 1 1 1; 1 1 1 1 1 1 1; 1 1 1 1 1 1 1;]/49;
cf = imfilter(c,h) % built-in matlab function
% Now we design our function for filtering.
% zero-pad c to e: (n+2)*(n+2). Note: n1=n+3-1=n+2.
e = zeros(n+2,n+2);
e(2:n+1,2:n+1)=c; % original image
e % print e on screen
% Now perform correlation filtering (not convolution):
% Move the mask across image as follows: put the center of the mask at each
% pixel of the extended (zero-padded) image. Multiply the corresponding
% elements, and add them, then put the result on the center pixel.
g = zeros(size(e));
for i=2:n+1
for j=2:n+1
m = e(i-1:i+5, j-1:j+5); % 7 by 7square, center at (i,j)
g(i,j) = sum(sum(h .* m));
end
end
cg = g(2:n+1,2:n+1)
imshow(cg);
faysal firas
il 17 Lug 2020
% Chessboard
n = 8;
v = 1:n; % 1 =w; 0=black
c = zeros(n,n); for k=1:n; c(k,:) = mod(v+k-1,2); end; c
% mean filter
h = [1 1 1; 1 1 1; 1 1 1]/9;
cf = imfilter(c,h) % built-in matlab function
% Now we design our function for filtering.
% zero-pad c to e: (n+2)*(n+2). Note: n1=n+3-1=n+2.
e = zeros(n+2,n+2);
e(2:n+1,2:n+1)=c; %original image
e % print e on screen
% Now perform correlation filtering (not convolution):
% Move the mask across image as follows: put the center of the mask at each
% pixel of the extended (zero-padded) image. Multiply the corresponding
% elements, and add them, then put the result on the center pixel.
g = zeros(size(e));
for i=2:n+1
for j=2:n+1
m = e(i-1:i+1, j-1:j+1); % 3 by 3 square, center at (i,j)
g(i,j) = sum(sum(h .* m));
end
end
cg = g(2:n+1,2:n+1)
imshow(cg);
% error = cg-cf is zero
Image Analyst
il 17 Lug 2020
faysal, are your two comments above "Answers"? If so, put them below in the official Answers area, not up here in comments. That way you can get credit (reputation points) for them. The comments section up here is where people are supposed to ask for clarification of a question, not offer solutions.
Risposta accettata
Più risposte (1)
Thiago Henrique Gomes Lobato
il 7 Giu 2020
You can colvolve the image with a filter that will perform the average. In your case it will be something like this:
I = randn(50,50); % Substitute this by your image
N = 7;
F = ones(N)/(N.^2); % Each element is scaled so the sum of all will be 1
IFiltered = conv2(I,F,'same');
1 Commento
Atalay Asa
il 9 Giu 2020
Categorie
Scopri di più su Image Filtering 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!