Учитывая начальную точку 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)
дал следующий вход:
результат:
Y=313, X=304
Обратите внимание, что этот код находит только одну точку в качестве долины. если вы хотите найти больше очков, вы можете опустить этот параметр из функции поиска и получить все точки долины.
Вы имеете в виду самую низкую координату Y? Пожалуйста, покажите нам, что у вас есть. – GameOfThrows
Да, я имею в виду самый низкий. Прости. У меня нет кода, я новичок в обработке изображений, и я не знаю, как начать. –