Linear Filter :
Linear filtering
technique is used for reducing random noise, sharpening the edges and correcting unequal illuminations.
Linear filtering
The procedure is carried out by filtering the image by correlation
with an appropriate filter kernel. The value of output pixel is calculated as a weighted sum of neighboring pixels.
MATLAB CODE:
A=imread('eight.tif');
figure,imshow(A);
title('Original Image');
corr=[0 0.5 0.5;-1 0.5 0.2; 0.4 0.2 0;];%corr=[0.5% 0.4% 0.1];%corr=ones(5,5)/25;
%To pad the input image with zeros based on the kernel size.
Array padding can also be done using matlab built_in function padarray.
Example:
Let M=[4 5 6; 1 1 4; 7 8 8;];
M= [ 4 5 6
1 1 4
7 8 8]
M1=padarray(M,[1 1])
%Pad with zeros on all sides
M1 =
0 0 0 0 0
0 4 5 6 0
0 1 1 4 0
0 7 8 8 0
0 0 0 0 0
>> M2=padarray(M,[2 2])
%pad with two rows and columns of zeros on all sides
M2 =
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 4 5 6 0 0
0 0 1 1 4 0 0
0 0 7 8 8 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
>> M3=padarray(M,[1 2])
%Pad 1 row and 2 columns with zeros on all sides
M3 =
0 0 0 0 0 0 0
0 0 4 5 6 0 0
0 0 1 1 4 0 0
0 0 7 8 8 0 0
0 0 0 0 0 0 0
Array padding can also be done using matlab built_in function padarray.
Example:
Let M=[4 5 6; 1 1 4; 7 8 8;];
M= [ 4 5 6
1 1 4
7 8 8]
M1=padarray(M,[1 1])
%Pad with zeros on all sides
M1 =
0 0 0 0 0
0 4 5 6 0
0 1 1 4 0
0 7 8 8 0
0 0 0 0 0
>> M2=padarray(M,[2 2])
%pad with two rows and columns of zeros on all sides
M2 =
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 4 5 6 0 0
0 0 1 1 4 0 0
0 0 7 8 8 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
>> M3=padarray(M,[1 2])
%Pad 1 row and 2 columns with zeros on all sides
M3 =
0 0 0 0 0 0 0
0 0 4 5 6 0 0
0 0 1 1 4 0 0
0 0 7 8 8 0 0
0 0 0 0 0 0 0
pad1=size(corr,1)-1;pad2=size(corr,2)-1;output=uint8(zeros(size(A)));if(size(corr,1)==1)B=zeros(size(A,1),size(A,2)+pad2);m=0;n=floor(size(corr,2)/2);sz1=size(B,1);sz2=size(B,2)-pad2;elseif(size(corr,2)==1)B=zeros(size(A,1)+pad1,size(A,2));m=floor(size(corr,1)/2);n=0;sz1=size(B,1)-pad1;sz2=size(B,2);elseB=zeros(size(A,1)+pad1,size(A,2)+pad2);m=floor(size(corr,1)/2);n=floor(size(corr,2)/2);sz1=size(B,1)-pad1;sz2=size(B,2)-pad2;endfor i=1:size(A,1)for j=1:size(A,2)B(i+m,j+n)=A(i,j);endendszcorr1=size(corr,1);szcorr2=size(corr,2);for i=1:sz1for j=1:sz2sum=0;m=i;n=j;for x=1:szcorr1for y=1:szcorr2%The weighted sum of the neighborhood pixels is calculated.sum=sum+(B(m,n)*corr(x,y));n =n+1;endn=j;m=m+1;endoutput(i,j)= sum;endendfigure,imshow(output);title('After linear filtering');
%For the correlation kernel ones(5,5)/25;
6 comments:
Your blog is so amazing! I followed this tutorial for Linear filtering. But the results of original imfilter in matlab and your method are not the same. Could you explain for me about that?
why not using corr2?
Sir can u send cervix cancer images..
It is interesting and good for students
its very usefull and amazing
no neeed of test bench?
Enjoyed Reading? Share Your Views