تبدیل تصاویر RGB به تصاویر باینری بدون استفاده از تابع im2bw در متلب

, , پیغام بگذارید

در این مثال ابتدا تصویر با استفاده از رنگ های اصلی 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

 

 

پاسخ دادن

anti spam *