here でいくつかの葉の例を見つけました。
これが問題を解決するための私の試みです。私が見つけた画像では、背景は完全に黒です。画像がそうでない場合は、大津のしきい値法を使用する必要があります。
あなたのイメージによると、葉は3種類しかないと思いました:
アイデアは、ブロブ分析を行うことです。葉を分離するために、開口部のモルフォロジー操作を使用します。開口部の後にブロブが1つしかない場合は、複合ではないと思います. 葉が複葉でない場合は、塊の固さを分析します。十分に固体でないということは、それらが裂けていることを意味します。
ここではいくつかの例を示します。
function IdentifyLeaf(dirName,fileName)
figure();
im = imread(fullfile(dirName,fileName));
subplot(1,3,1); imshow(im);
% thresh = graythresh( im(:,:,2));
imBw = im(:,:,2) > 0;
subplot(1,3,2);imshow(imBw);
radiusOfStrel = round( size(im,1)/20 ) ;
imBwOpened = imopen(imBw,strel('disk',radiusOfStrel));
subplot(1,3,3);imshow(imBwOpened);
rpOpened = regionprops(imBwOpened,'Area');
if numel(rpOpened)>1
title('Pinnately Compound');
else
rp = regionprops(imBw,'Area','Solidity');
%Leave only largest blob
area = [rp.Area];
[~,maxIndex] = max(area);
rp = rp(maxIndex);
if rp.Solidity < 0.9
title('Pinnately Lobed');
else
title('Pinnately Veined');
end
end
end