2016-04-08 3 views
2

У меня есть бинарное изображение так:найти долину с Matlab в бинарном изображении

example of binary image

Я знаю позицию одной точки в области черной (например, точка Х) и я нужно найти долину (точку с наименьшей координатой Y) в той же черной области (в этом примере точка O).

В изображении есть другие черные области.

Как это сделать с помощью Matlab?

+1

Вы имеете в виду самую низкую координату Y? Пожалуйста, покажите нам, что у вас есть. – GameOfThrows

+0

Да, я имею в виду самый низкий. Прости. У меня нет кода, я новичок в обработке изображений, и я не знаю, как начать. –

ответ

3

Учитывая начальную точку P = (x, y), вы можете использовать imfill, чтобы найти соответствующий подключенный компонент и комбинацию max и imfind, чтобы найти самую низкую точку внутри него.

%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) 

дал следующий вход:

enter image description here

результат:

Y=313, X=304 

Обратите внимание, что этот код находит только одну точку в качестве долины. если вы хотите найти больше очков, вы можете опустить этот параметр из функции поиска и получить все точки долины.

+0

Вам не обязательно иметь отправную точку, если вы используете ['bwlabel'] (https://uk.mathworks.com/help/images/ref/bwlabel.html) – kkuilla

Смежные вопросы