2017-04-08 3 views
0

Hey Ich habe versucht, dieses Problem zu lösen. Wo Sie aufgefordert werden, "Zebra" aus dem Bild auszusortieren. Unten ist das gegebene Bild.Bildverarbeitung: Segmentierung "Zebra" aus dem Bild

"Zebra"

Und Ausgabe wie folgt sein sollte.

Output

Nun habe ich bei „Streifen“ von Zebra Ursache stecken sie können als separate Objekte segmentiert erhalten.

+0

Warum Sie fügen Sie nicht etwas, das Sie versucht haben? –

+0

Nun, ich bin Anfänger in IP und ich habe einige der Standard-Algorithmen in OpenCV verwendet. Sie betrachten aber auch Streifen als Objekte. – user7837687

+0

Wenn Sie ein Anfänger sind, sollten Sie andere Dinge tun. Eines Tages wirst du genug Wissen gesammelt haben, um zu verstehen, was notwendig ist. – Piglet

Antwort

0

Bei der Bildverarbeitung ist es wichtig, Ihr Bild zu betrachten und zu versuchen, den Unterschied zwischen Ihrer Region von Interesse, d. H. Dem Zebra, und dem Rest, d.

In diesem Beispiel ist ein klarer Unterschied, dass der Hintergrund eher grünlich und der Zebra schwarz und weiß ist. Daher kann der grüne Kanal des Bildes verwendet werden, um den Hintergrund zu extrahieren. Danach kann das Ergebnis (nichtlinear) mit einigen Dilatations- und Erosionsschritten aufgeräumt werden.

Eine einfache und nicht-perfekte Segmentierungstechnik ist (in Matlab):

I = imread('lA196m.jpg'); 

% plot the original image 
figure 
subplot(2,2,1) 
imshow(I) 

% calculate the green channel (relative green value) 
greenChannel = double(I(:,:, 2))./mean(I(:,:,:), 3); 
binary = greenChannel > 1; % apply a thresshold 
subplot(2,2,2) 
imshow(binary); 

% remove false positives (backgrounds) 
se1 = strel('sphere',20); 
binary2 = imdilate(imerode(binary,se1), se1); 
subplot(2,2,3) 
imshow(binary2); 

% add false negatives 
se2 = strel('sphere',10); 
binary3 = imerode(imdilate(binary2,se2), se2); 
subplot(2,2,4) 
imshow(binary3); 

% calculate & plot the boundary on the original image 
subplot(2,2,1) 
Bs = bwboundaries(~binary3); 
B = Bs{1}; 
hold on 
plot(B(:, 2), B(:, 1), 'LineWidth', 2); 

enter image description here