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.
 image to binary image.
- Convert the RGB image into grayscale image.
- 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 mybinaryglobal 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;endendendB=logical(B);figure,imshow(B);Im=imread('gantrycrane.png');figure,imshow(Im);title('Original Image');%0.2989 * R + 0.5870 * G + 0.1140 * BGIm=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);endendwe 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;endendend
 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];>> AA =1 2 3 42 4 6 83 6 9 12>> find(mod(A,2)==0)ans =24568101112Im=logical(mybin);endend
 
 


 
 :)
:)
 :(
:(
 :))
:))
 :((
:((
 =))
=))
 =D>
=D>
 :D
:D
 :P
:P
 :-O
:-O
 :-?
:-?
 :-SS
:-SS
 :-f
:-f
 d(
d(
 :-*
:-*
 b-(
b-(
 h-(
h-(
 g-)
g-)
 5-p
5-p
 y-)
y-)
 c-)
c-)
 s-)
s-)
 d-)
d-)
 w-)
w-)
 :-h
:-h
 :X
:X



2 comments:
Nice article..
join www.facebook.com/code2learn..
@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