0% found this document useful (1 vote)
3K views4 pages

Uniform Noise &amp All Filters (Matlab Code)

The document describes applying various filtering techniques to an input image with added uniform noise, including arithmetic mean, geometric mean, harmonic mean, contraharmonic mean, median, max, min, midpoint, and alpha-trimmed filtering. Filtered output images are displayed in subplots for comparison.

Uploaded by

Sharath Kumar N
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (1 vote)
3K views4 pages

Uniform Noise &amp All Filters (Matlab Code)

The document describes applying various filtering techniques to an input image with added uniform noise, including arithmetic mean, geometric mean, harmonic mean, contraharmonic mean, median, max, min, midpoint, and alpha-trimmed filtering. Filtered output images are displayed in subplots for comparison.

Uploaded by

Sharath Kumar N
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 4

K=imread('C:\lena.

bmp');
subplot(2,5,1),imshow(K),title('Input Image');
[M N] = size(K);
uni = imnoise2('uniform',M,N);
c_uniform = find((uni >= 0.4) & (uni <= 0.43));
I = K;
I(c_uniform) = 255;
subplot(2,5,6), imshow(I); title('Image with Uniform Noise');

%arithmetic mean filter


h = ones(5,5) / 25;
I2 = imfilter(I,h);
subplot(3,5,2),imshow(I2),title('arithmetic mean filtered image');
%geometric mean filter
x=double(I);
y(1,: )=x(1,: );
y(1:512,1)=x(1:512,1);
y(512,: )=x(512,: );
y(1:512,512)=x(1:512,512);
for k=2:511
for j=2:511
y(k,j)=(x(k-1,j-1)*x(k,j-1)*....
x(k-1,j)*x(k+1,j)*x(k,j)*....
x(k,j-1)*x(k-1,j)*x(k+1,j+1)*....
x(k,j+1))^(1/9);
end
end
W=uint8(y);
subplot(3,5,3),imshow(W),title('geometric mean filtered image');
%harmonic mean filter
x=double(I);
y(1,: )=x(1,: );
y(1:512,1)=x(1:512,1);
y(512,: )=x(512,: );
y(1:512,512)=x(1:512,512);
for k=2:511
for j=2:511
y(k,j)=9/(1/(x(k-1,j-1))+1/(x(k,j-1))+....
1/(x(k-1,j))+1/(x(k+1,j))+1/(x(k,j))+....
1/(x(k,j-1))+1/(x(k-1,j))+1/(x(k+1,j+1))+....
1/(x(k,j+1)));
end
end
Z=uint8(y);
subplot(3,5,4),imshow(Z),title('harmonic mean filtered image');
%contrahormonic filter
data=im2double(I);
Q=-2;
sumn=[];
sumd=[];
pixln=0;
pixld=0;
ro=512;
col=512;
for i=1:ro;
for j=1:col;
for m=-1:1;
for n=-1:1;
if (i+m>0 && i+m<ro && j+n>0 && j+n<col && ... % To keep in
dices in limit
1+m>0 && 1+m<ro && ...
1+n>0 && 1+n<col)
pixl1=(data(i+m,j+n)).^(Q+1); % Applicatio
n of Formula
pixl2= (data(i+m,j+n)).^Q;
pixln=pixln+pixl1; % Applicatio
n of Summation
pixld=pixld+pixl2;
end
end
end
reformedimage(i,j)=(pixln/pixld);
pixln=0;
pixld=0;
end
end
subplot(3,5,5),imshow(reformedimage),title('contra-harmonic mean (Q=-ve)');

data=im2double(I);
Q=2;
sumn=[];
sumd=[];
pixln=0;
pixld=0;
ro=512;
col=512;
for i=1:ro;
for j=1:col;
for m=-1:1;
for n=-1:1;
if (i+m>0 && i+m<ro && j+n>0 && j+n<col && ... % To keep in
dices in limit
1+m>0 && 1+m<ro && ...
1+n>0 && 1+n<col)
pixl1=(data(i+m,j+n)).^(Q+1); % Applicatio
n of Formula
pixl2= (data(i+m,j+n)).^Q;
pixln=pixln+pixl1; % Applicatio
n of Summation
pixld=pixld+pixl2;
end
end
end
reformedimage(i,j)=(pixln/pixld);
pixln=0;
pixld=0;
end
end
subplot(3,5,7),imshow(reformedimage),title('contra-harmonic mean (Q=+ve)');
%median filter
A = medfilt2(I,[3 3]);
subplot(3,5,8),imshow(A),title('median filtered image');
%max filter
[m n]=size(I);
c=ones(3,3)/9;
[p q]=size(c);
p=(p-1)/2;
q=(q-1)/2;
z=I;
for i=p+1:m-p
for j=q+1:n-q
mask1=zeros(3,3);
for k=-p: p
for l=-q:q
mask1(p+1-k,q+1-l)=I(i-k,j-l);
end
end
max1=mask1( : );
max1=max(max1);
z(i,j)=max1;
end
end
subplot(3,5,9),imshow(uint8(z)),title('max filtered image');
%min filter
[m n]=size(I);
c=ones(3,3)/9;
[p q]=size(c);
p=(p-1)/2;
q=(q-1)/2;
v=I;
for i=p+1:m-p
for j=q+1:n-q
mask1=zeros(3,3);
for k=-p: p
for l=-q:q
mask1(p+1-k,q+1-l)=I(i-k,j-l);
end
end
min1=mask1( : );
min1=min(min1);
v(i,j)=min1;
end
end
subplot(3,5,10),imshow(uint8(v)),title('min filtered image');

[m n]=size(I);
c=ones(3,3)/9;
[p q]=size(c);
p=(p-1)/2;
q=(q-1)/2;
z=I;
for i=p+1:m-p
for j=q+1:n-q
mask1=zeros(3,3);
for k=-p: p
for l=-q: q
mask1(p+1-k,q+1-l)=I(i-k,j-l);
end
end
mid1=mask1(: );
mid1=(min(mid1)+max(mid1))/2;
z(i,j)=mid1;
end
end
subplot(3,5,12),imshow(uint8(z)),title('mid point filtered image');

%alpha-trimmed filter
m = 3; n = 3; d = 2;
if (d <= 0) | (d/2 ~= round(d/2))
error('d must be a positive, even integer.')
end
inclass = class(I);
g = im2double(I);
f = imfilter(I, ones(m, n), 'symmetric');
for k = 1:d/2
f = imsubtract(f, ordfilt2(I, k, ones(m, n), 'symmetric'));
end
for k = (m*n - (d/2) + 1):m*n
f = imsubtract(f, ordfilt2(I, k, ones(m, n), 'symmetric'));
end
f = f / (m*n - d);

subplot(3,5,13),imshow(f),title('alpha-trimmed filtered image');

You might also like