में विभाजित पत्तियों को विभाजित करने के लिए वाटरशेड सेगमेंटेशन एल्गोरिदम मुख्य कार्य एक पत्ती की जटिल पृष्ठभूमि को खत्म करना और MATLAB में एक निर्विवाद पत्ती छवि से लक्षित पत्ते निकालना है। पृष्ठभूमि को खत्म करने के लिए मैंने के-साधन क्लस्टरिंग अलगो लागू किया है। अब मुख्य कार्य वाटरशेड सेगमेंटेशन एल्गोरिदम का उपयोग करके पत्ते को एक गुंबददार पत्ते से विभाजित करना है। मैं हर एक पत्ते के लिए सही सेगमेंट नहीं ढूंढ पा रहा हूं। क्रिप्या मेरि सहायता करे। मैंने नमूना छवियां अपलोड की हैं और वाटरशेड सेगमेंटेशन कोड भी अपलोड किया है।मैटलैब
मूल छवि
छवि कश्मीर साधन एल्गोरिथ्म क्लस्टरिंग और वाटरशेड विभाजन का उपयोग कर पृष्ठभूमि को नष्ट मूल छवि पर आरोपित
मैं मुख्य बीच पत्ती एक एकल खंड होना चाहता हूँ के बाद , ताकि मैं इसे निकाल सकूं।
मैं नीचे
function wateralgo(img)
F=imread(img);
F=im2double(F);
%Converting RGB image to Intensity Image
r=F(:,:,1);
g=F(:,:,2);
b=F(:,:,3);
I=(r+g+b)/3;
imshow(I);
%Applying Gradient
hy = fspecial('sobel');
hx = hy';
Iy = imfilter(double(I), hy, 'replicate');
Ix = imfilter(double(I), hx, 'replicate');
gradmag = sqrt(Ix.^2 + Iy.^2);
figure, imshow(gradmag,[]), title('Gradient magnitude (gradmag)');
L = watershed(gradmag);
Lrgb = label2rgb(L);
figure, imshow(Lrgb), title('Watershed transform of gradient magnitude (Lrgb)');
se = strel('disk',20);
Io = imopen(I, se);
figure, imshow(Io), title('Opening (Io)');
Ie = imerode(I, se);
Iobr = imreconstruct(Ie, I);
figure, imshow(Iobr), title('Opening-by-reconstruction (Iobr)');
Ioc = imclose(Io, se);
figure, imshow(Ioc), title('Opening-closing (Ioc)');
Iobrd = imdilate(Iobr, se);
Iobrcbr = imreconstruct(imcomplement(Iobrd), imcomplement(Iobr));
Iobrcbr = imcomplement(Iobrcbr);
figure, imshow(Iobrcbr), title('Opening-closing by reconstruction (Iobrcbr)');
fgm = imregionalmin(Iobrcbr);
figure, imshow(fgm), title('Regional maxima of opening-closing by reconstruction (fgm)');
I2 = I;
I2(fgm) = 255;
figure, imshow(I2), title('Regional maxima superimposed on original image (I2)');
se2 = strel(ones(7,7));
fgm2 = imclose(fgm, se2);
fgm3 = imerode(fgm2, se2);
fgm4 = bwareaopen(fgm3, 20);
I3 = I;
I3(fgm4) = 255;
figure, imshow(I3), title('Modified regional maxima superimposed on original image (fgm4)');
bw = im2bw(Iobrcbr, graythresh(Iobrcbr));
figure, imshow(bw), title('Thresholded opening-closing by reconstruction (bw)');
D = bwdist(bw);
DL = watershed(D);
bgm = DL == 0;
figure, imshow(bgm), title('Watershed ridge lines (bgm)');
gradmag2 = imimposemin(gradmag, bgm | fgm4);
L = watershed(gradmag2);
I4 = I;
I4(imdilate(L == 0, ones(3, 3)) | bgm | fgm4) = 255;
figure, imshow(I4), title('Markers and object boundaries superimposed on original image (I4)');
Lrgb = label2rgb(L, 'jet', 'w', 'shuffle');
figure, imshow(Lrgb), title('Colored watershed label matrix (Lrgb)');
figure, imshow(I), hold on
himage = imshow(Lrgb);
set(himage, 'AlphaData', 0.3);
title('Lrgb superimposed transparently on original image');
end
@Ponon क्षमा करें कोड खराब इंडेंट है लेकिन कृपया मुझे समाधान में मदद करें। –
आप किस पत्ते को निकालने की कोशिश कर रहे हैं? – vini
पर्यावरण की स्थितियों की किस श्रेणी के तहत आपके पत्ती विभाजन एल्गोरिदम प्रदर्शन करना चाहिए? क्या आपके पास दृश्य पर कोई नियंत्रण है? क्या इसे पूरी तरह से वाटरशेड एल्गोरिदम का उपयोग करना है? मुझे यकीन नहीं है कि ढाल जानकारी आपको मजबूत समाधान देने के लिए पर्याप्त मजबूत है। आप शायद एक एल्गोरिदम या मॉडल चाहते हैं जो आपको मजबूत priors तैनात करने की अनुमति देता है। पत्तियों का आकार काफी रूढ़िवादी है, इसलिए शायद एक विकृत मॉडल को उचित लग सकता है। यदि समय कम है, तो क्षेत्र-बढ़ते आधार पर शायद एक उदारवादी दृष्टिकोण आपको कुछ त्वरित परिणाम दे सकता है? –