# IMAGE PROCESSING

" Two roads diverged in a wood, and I,
I took the one less traveled by,
And that has made all the difference "-Robert Frost

### MATLAB code for Linear filtering without using imfilter function

Linear Filter :
Linear filtering technique is used for reducing random noise, sharpening the edges and correcting unequal illuminations.

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:

``````

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.

Example:

Let M=[4 5 6; 1 1 4; 7 8 8;];

M= [ 4     5     6
1     1     4
7     8     8]

%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

%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

%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

```

output=uint8(zeros(size(A)));

if(size(corr,1)==1)

m=0;

n=floor(size(corr,2)/2);

sz1=size(B,1);

elseif(size(corr,2)==1)

m=floor(size(corr,1)/2);

n=0;

sz2=size(B,2);

else

m=floor(size(corr,1)/2);

n=floor(size(corr,2)/2);

end

for i=1:size(A,1)

for j=1:size(A,2)

B(i+m,j+n)=A(i,j);

end

end

szcorr1=size(corr,1);

szcorr2=size(corr,2);

for i=1:sz1

for j=1:sz2

sum=0;

m=i;

n=j;

for x=1:szcorr1

for y=1:szcorr2

%The weighted sum of the neighborhood pixels is calculated.

sum=sum+(B(m,n)*corr(x,y));

n =n+1;

end

n=j;

m=m+1;

end

output(i,j)= sum;

end

end

figure,imshow(output);

title('After linear filtering');
```

%For the correlation kernel ones(5,5)/25;

Like "IMAGE PROCESSING" page

ios198 said...

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?

cyril auburtin said...

why not using corr2?

Robert Antony said...

Sir can u send cervix cancer images..

gomalian78 said...

It is interesting and good for students

farman Shah said...

its very usefull and amazing