唯一标识形状大致相同但大小不同的群集椭圆

2024-06-26 02:08:54 发布

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

我在拍寄生虫卵的照片。我需要识别尽可能多的卵子,我已经设法用分水岭算法在卵子周围画好了边界,但是我想把卵子看作一个整体,而不仅仅是卵黄部分,这通常是分水岭算法挑选出来的。我尝试过椭圆检测,但它只得到了水泡(圆形黑色位中间有一个白点),我实际上想忽略(但计划稍后实现)。你知道吗

实现这一点的最佳方法是什么,我研究过图像映射,但它只返回最佳匹配,我也考虑过形状识别,但它显然没有在OpenCV中实现。你知道吗

下面是我使用分水岭算法得到的结果: http://imgur.com/7ptyIOL

下面是我想要得到的一个想法:http://imgur.com/XPLUixa


Tags: com算法http圆形照片边界椭圆整体
1条回答
网友
1楼 · 发布于 2024-06-26 02:08:54

好吧,我今天一直在努力,这就是我找到的解决办法。我对图像设置阈值,然后找到轮廓。当我找到了轮廓,我会画一个椭圆周围的每一个,如果它通过了一个小检查功能,我做了。这目前工作得很好,但我需要改进我的阈值图像的方法之前,我可以期待任何真正的进展。你知道吗

此代码生成轮廓并绘制它们

_, contours, hierarchy = cv2.findContours(opening.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
for c in contours:
  #will give an error if there are less than 5 points
  if len(c) > 4:
    elip = cv2.fitEllipse(c)
    if check_ellipse(elip):                                                    
      cv2.ellipse(img, elip, (255, 0, 0))

这是用于检查正确性的函数

def check_ellipse(ellipse):
  h = ellipse[1][0]
  w = ellipse[1][1]
  #make sure it's not too large, or too circular
  if abs(h-w) < 2 or h > 30 or w > 30:
    return False                                                                              
  return True

稍后,我可能会改变这个,所以它首先摆脱了所有的椭圆不通过测试,这样我就可以有一个他们的坐标,这是我真正需要的,如果我想继续这个程序。你知道吗

相关问题 更多 >