我有一个像这样的二进制图像:
我知道黑色区域中一个点的位置(例如,X点),我需要在相同的黑色区域中找到谷(具有最低Y坐标的点)(在此示例中,O点) )。
图像中还有其他黑色区域。
我怎样才能使用Matlab做到这一点?
答案 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)
给出以下输入:
结果是:
Y=313, X=304
请注意,此代码只找到一个点作为山谷。如果你想找到更多的点,你可以从find函数中省略这个参数并接收所有的谷点。