如何找到二值图像中的特定点?

How can I find specific points in binary images?

我正在大学里开始一项研究,主题是启用 AI 来计算视网膜区域。我们规定的第一部分是使用 u-net 分割视网膜的两个重要部分。第二种是利用分割的结果找到重要的点并进行计算。

因此,在下图中,我显示了使用 u-net 分割每个区域的输出(红色注释不是分割的一部分)。我试着代表我想在第一和第二块中找到的区域。一旦这样做,我可以计算这些点之间的距离,当合并它们时。 所以,我的问题是:我可以使用什么样的技术来读取像素,以便找到我标记的坐标?

OpenCV 是一个可以帮助我的库吗?第一次遇到这种问题,多谢指教。

使用 OpenCV: 可以使用 connectedComponentsWithStats() 方法检测边距。

connectivity = 8  
output = cv2.connectedComponentsWithStats(binary_img, connectivity, cv2.CV_32S)

stats = output[2]         # stat matrix

first_blob_left = stats[0,cv2.CC_STAT_LEFT]
first_blob_right = stats[0,cv2.CC_STAT_RIGHT]
second_blob_left = stats[1,cv2.CC_STAT_LEFT]
second_blob_right = stats[1,cv2.CC_STAT_RIGHT]

if first_blob_left < second_blob_left:
    dist = second_blob_left - first_blob_right
else:
    dist = first_blob_left - second_blob_right

用同样的方法检测最深点:

connectivity = 8  
output = cv2.connectedComponentsWithStats(binary_img, connectivity, cv2.CV_32S)

stats = output[2]         # stat matrix

blob_top = stats[0,cv2.CC_STAT_TOP]
blob_height = stats[0,cv2.CC_STAT_HEIGHT]

deepest_point_y_position = blob_top + blob_height

注意:此代码未经测试,可能包含一些拼写错误。但是,想法还是一样的,应该不费吹灰之力。

看看

labels = output[1]

“labels”是输入图像位置的数组,其中 blob 的每个像素都标有相同的值。这应该可以帮助您找到边距的坐标