در این مثال ابتدا تصویر با استفاده از رنگ های اصلی RGB تشکیل می دهیم .بعد از اینکه مجموع ارزش های پیکسل را پیدا کردیم .اگر مجموع ارزش های پیکسل بیشتر ازصفر بود می توان بجای آن یک گذاشت در غیر اینصورت صفر خواهد بود .
در قسمت دوم مثال با سه مرحله که در زیر شرح خواهیم داد تصویر RGB را به
BINARY تبدیل خواهیم کرد .
1-ابتدا تصویر RGB را به تصویر خاکستری تبدیل خواهیم کرد .
2-حد آستانه را پیدا کنیم .اگر ارزش موقعیت پیکسل ها بیشتر از صفر باشد یک (رنگ
سفید)در غیر اینصورت صفر (سیاه) خواهد بود.
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:
میتوان تصویر به خاکستری بدون استفاده از حلقه loop استفاه کرد .
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
پاسخ دادن