我在大学里开始了一项研究,主题是使用人工智能来计算视网膜的一个区域。我们规定的第一部分是使用u-net分割视网膜的两个重要部分。第二种方法是利用分割结果找出关键点并进行计算。
因此,在下图中,我使用u-net显示了分割每个区域的输出(红色注释不是分割的一部分)。我试着在第一个和第二个块中表示我想要查找的区域。一旦这样做了,我就可以在合并它们时计算这些点之间的距离。所以,我的问题是:我可以使用哪种技术来读取像素,以便找到我标记的坐标?
OpenCV是一个可以帮助我的lib吗?这是我第一次处理这样的问题,所以感谢您的建议或指导。
发布于 2021-10-27 01:36:21
使用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“是输入图像位置的数组,其中斑点的每个像素都标有相同的值。这将帮助您找到页边距的坐标。
https://stackoverflow.com/questions/69716516
复制