2016-04-08 7 views
2

Ich habe ein binäres Bild wie folgt aus:ein Tal mit Matlab in einem binären Bild zu finden

example of binary image

Ich kenne die Position eines Punktes in dem schwarzen Bereich (zum Beispiel die X-Punkt) und I müssen das Tal (der Punkt mit der niedrigsten Y-Koordinate) in der gleichen schwarzen Region (in diesem Beispiel der O-Punkt) finden.

Es gibt andere schwarze Bereiche im Bild.

Wie kann ich dies mit Matlab tun?

+1

Sie meine die niedrigste Y-Koordinate? Bitte zeigen Sie uns, was Sie bisher haben. – GameOfThrows

+0

ja, ich meine am niedrigsten. Es tut uns leid. Ich habe keinen Code, ich bin neu in der Bildverarbeitung und ich weiß nicht, wie ich anfangen soll. –

Antwort

3

Mit einem Startpunkt P = (x, y) können Sie imfill verwenden, um die entsprechende verbundene Komponente und die Kombination von max und imfind zu finden, um den niedrigsten Punkt darin zu finden.

%reads the image 
I = imread('<your path>'); 

%sets an input point. For example: (250,100) 
x = 100; y=250; 

%Find the connected component of the given input point 
BW2 = imfill(I,[y x]); 
diffMat = BW2~=I; 

%finds the minimal x and y indices of this connected component 
[Y, X] = ind2sub(size(diffMat),find(diffMat)); 
maxInd = find(Y==max(Y),1,'first'); 

%prints the result 
Y(maxInd) 
X(maxInd) 

die folgende Eingabe gegeben:

enter image description here

das Ergebnis:

Y=313, X=304 

Beachten Sie, dass dieser Code nur einen Punkt als Tal findet. Wenn Sie mehr Punkte finden möchten, können Sie diesen Parameter aus der Suchfunktion auslassen und alle Talpunkte erhalten.

+0

Sie müssen keinen Startpunkt haben, wenn Sie ['bwlabel'] verwenden (https://uk.mathworks.com/help/images/ref/bwlabel.html) – kkuilla