با سلام در این بخش می خواهیم نحوه استفاده از درخت تصمیم در متلب را آموزش دهیم

% Algorithm and Programming by: irmatlab
% ۱۶ April 2015
% special thanks to "Nicholas Howe" for his very useful junction extractor routine

clc;
clear all;
BW = imread('test.bmp');
BW3 = bwmorph(BW,'skel',Inf);
BW4 = bwmorph(BW3,'spur',10); % ۱۰=delete noise branchs Inf=Extract Main branch
BW5 = bwmorph(BW3,'spur',Inf); % 10=delete noise branchs Inf=Extract Main branch
[row,col]=size(BW);

[d_map,e_xy,j_xy] = anaskel(BW4);

% junction count
len = length (j_xy(1,:));

% Junction Removing
% j
% [ ][ ][ ]
% i[ ][0][ ]
% [ ][ ][ ]

for i=1:len % 'len' is count of junction
BW4(j_xy(2,i),j_xy(1,i))=0; % [i,j] = 0

BW4(j_xy(2,i)-1,j_xy(1,i))=0;
BW4(j_xy(2,i)+1,j_xy(1,i))=0;
BW4(j_xy(2,i),j_xy(1,i)-1)=0;
BW4(j_xy(2,i),j_xy(1,i)+1)=0;

BW4(j_xy(2,i)-1,j_xy(1,i)-1)=0;
BW4(j_xy(2,i)+1,j_xy(1,i)+1)=0;
BW4(j_xy(2,i)-1,j_xy(1,i)+1)=0;
BW4(j_xy(2,i)+1,j_xy(1,i)-1)=0;
end

% (main tree) - (main branch) = branches
branchs = BW4 - BW5;
sm = bwmorph(BW5,'dilate',3);

% Label connected components in binary image
L = bwlabel(branchs);

% adding branchs and main branch.
L = L + (BW5*20); % ۲۰ is an assumed number!

% Convert label matrix into RGB image
RGB = label2rgb(L,'Lines');
imshow(RGB);
hold on

% End of points and Junction Plot
plot(e_xy(1,:),e_xy(2,:),'go') % green dots
plot(j_xy(1,:),j_xy(2,:),'ro') % red dots

len_e = length (e_xy(1,:)) ;

for i=2:len+1

if ( abs(e_xy(2,i)-row)>20 || abs(e_xy(1,i)-col)>20 )

% selecting the i'th label
sel_color = L(e_xy(2,i),e_xy(1,i));

% splitting of selected branch
sel_label = (L==sel_color);

% if this branch is a soundly branch, then ...
if (bwarea(sel_label)>4)

% selected branch dilating, for finding collision between it and main branch.
sl = bwmorph(sel_label,'dilate',3);

% collision evaluation between selected branch and main branch by multiply function.
dif = immultiply(sm,sl); % Multiply two images or multiply image by constant

% zero result means there isn't any collision. on the other hand,
% this branch is tertiary branch. wow! otherwise, it's a secondary
% branch
if (dif==zeros(row,col))
text (e_xy(1,i)+4,e_xy(2,i)-8,'3');
else
text (e_xy(1,i)+4,e_xy(2,i)-8,'2');
end

end

end

end

% main branch will find in BW5 variable!
% set label '1' on image
hold on
flag=0;
for i=1:row
for j=1:col

if (BW5(i,j)==1)
text (j+15,i+15,'1');
flag=1;
break;
end

end

if (flag==1)
break;
end

end