# IMAGE PROCESSING

Lets Learn together... Happy Reading

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

### Converting RGB image to Binary Image without using im2bw function

In the first example, image is filled with primary colors (RGB). So I am finding the sum of the values in the pixel position. If the sum is greater than zero then the value will be 1(white) otherwise zero (black).

In the second example, the following steps are needed to convert a RGB image to binary image.

1. Convert the RGB image into grayscale image.
2. Find the threshold value. If the value at the pixel position is greater than the threshold value then the value will be 1(white) else zero (black).

```
function mybinary

global GIm T1;

A=imread('shapes.bmp');

figure,imshow(A);

title('Original image');

B=zeros(size(A,1),size(A,2));

for l=1:size(A,1)

for m=1:size(A,2)

if(sum(A(l,m,:))>0)

B(l,m)=1;

end

end

end

B=logical(B);

figure,imshow(B);

```

```
Im=imread('gantrycrane.png');

figure,imshow(Im);

title('Original Image');

%0.2989 * R + 0.5870 * G + 0.1140 * B

GIm=uint8(zeros(size(Im,1),size(Im,2)));

for m=1:size(Im,1)

for n=1:size(Im,2)

GIm(m,n)=0.2989*Im(m,n,1)+0.5870*Im(m,n,2)+0.1140*Im(m,n,3);

end

end

```
we can perform the grayscale conversion without using the for loop:

%GIm=0.2989*Im(:,:,1)+0.5870*Im(:,:,2)+0.1140*Im(:,:,3);

```

ssz = get(0,'ScreenSize');

T.fg=figure('Visible','on','Name','IMAGE THRESHOLDING','NumberTitle','off','Position', ssz);

T.holder=axes('units','pixels','Position',[ssz(3)/35 ssz(4)/4 ssz(3)-(ssz(3)/3) ssz(4)-(ssz(4)/3)]);

imshow(GIm);

set(T.holder,'xtick',[],'ytick',[])

T.slid=uicontrol('Style','Slider','Visible','on','Value',1,'Max',255,'Min',0,'Sliderstep',[1 1],'Position',[ssz(3)/35 ssz(4)/5 ssz(3)-(ssz(3)/3) 20],'Callback', @tresher);

T.ent=uicontrol('Style','pushbutton','Visible','on','String','THRESHOLD VALUE','Position',[ssz(3)-(ssz(3)/4) ssz(4)-(ssz(4)/8) 105 30]);

T.ed=uicontrol('Style','edit','Visible','on','String','0','Value',1,'Position',[ssz(3)-(ssz(3)/4) ssz(4)-(ssz(4)/6) 90 20]);

function tresher(object,~)

val=get(object,'value');

in=GIm;

T1=Imthreshold1(in,val);

T.view1=imshow(T1);

set(T.holder,'xtick',[],'ytick',[])

set(T.ed,'String',val);

end

function Im=Imthreshold1(Image,Tvalue)

sz=size(Image);

mybin=zeros(size(Image));

for i=1:sz(1)

for j=1:sz(2)

if(Image(i,j)>Tvalue)

mybin(i,j)=1;

end

end

end

```

Instead of this for loop, the equivalent one line code is:

%mybin(find(Image>Tvalue))=1;

Explanation:
The output of find(Image>Tvalue) will be the values that are greater than Tvalue.

For instance,
consider a matrix,

>> A=[1,2,3,4;2,4,6,8;3,6,9,12];
>> A

A =

1     2     3     4
2     4     6     8
3     6     9    12

>> find(mod(A,2)==0)

ans =

2
4
5
6
8
10
11
12

``````
```
Im=logical(mybin);

end

end
```

Like "IMAGE PROCESSING" page

#### 2 comments:

Farhan Khwaja said...

Nice article..

join www.facebook.com/code2learn..

Yegermal Semahegn said...

@yigermal semahegn
would u help me to write a matlab programm
without using inbuilt function for image processing
a) to convert into binary image
b) to generate -ve of an image
c) to adjust gamma of an image

thank you for ur contributions !!!

#### Enjoyed Reading? Share Your Views

Google ping Hypersmash.com