如何在二进制图像中找到特定点?

2024-09-30 07:33:58 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

enter image description here

OpenCV是一个可以帮助我的库吗?这是我第一次处理这种问题,所以谢谢你的建议和指导


Tags: 方法标记区域利用距离主题net像素
1条回答
网友
1楼 · 发布于 2024-09-30 07:33:58

使用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的每个像素都用相同的值进行标记。这将帮助您找到边距的坐标

相关问题 更多 >

    热门问题