我试图在所附的图像中找到所有的圆形颗粒。这是我唯一的图像python - 从阈值掩模生成圆形粒子的分割掩模?-LMLPHP(及其反面)。
我已阅读this post,但无法将hsv值用于阈值设置。我尝试使用霍夫变换。

circles = cv2.HoughCircles(img, cv2.HOUGH_GRADIENT, dp=0.01, minDist=0.1, param1=10, param2=5, minRadius=3,maxRadius=6)
并使用以下代码进行绘制
names =[circles]
for nums in names:
  color_img = cv2.imread(path)
  blue = (211,211,211)
  for x, y, r in nums[0]:
    cv2.circle(color_img, (x,y), r, blue, 1)

  plt.figure(figsize=(15,15))
  plt.title("Hough")
  plt.imshow(color_img, cmap='gray')
以下代码用于绘制蒙版:
for masks in names:
  black = np.zeros(img_gray.shape)
  for x, y, r in masks[0]:
    cv2.circle(black, (x,y), int(r), 255, -1)  # -1 to draw filled circles
plt.imshow(black, gray)

然而,我只能得到以下面膜,如果相当差的话。
python - 从阈值掩模生成圆形粒子的分割掩模?-LMLPHP
这是什么被认为是粒子以及什么不是粒子的图像。 python - 从阈值掩模生成圆形粒子的分割掩模?-LMLPHP

最佳答案

一种简单的方法包括稍微腐 eclipse 图像,以分离触摸的圆形对象,然后进行连接的分量分析并丢弃所有大于某个选定阈值的对象,最后将图像放大回去,以使圆形对象再次具有原始大小。我们可以在标记的图像上执行此膨胀,以便保留分离的对象。
我使用DIPlib是因为我最熟悉它(我是作者)。

import diplib as dip

a = dip.ImageRead('6O0Oe.png')
a = a(0) > 127        # the PNG is a color image, but OP's image is binary,
                      # so we binarize here to simulate OP's condition.

separation = 7        # tweak these two parameters as necessary
size_threshold = 500

b = dip.Erosion(a, dip.SE(separation))
b = dip.Label(b, maxSize=size_threshold)
b = dip.Dilation(b, dip.SE(separation))
python - 从阈值掩模生成圆形粒子的分割掩模?-LMLPHP
请注意,此处使用的图像似乎是放大的屏幕抓图,而不是原始图像OP正在处理的图像。如果是这样,则必须使参数变小以识别较小图像中的较小对象。

关于python - 从阈值掩模生成圆形粒子的分割掩模?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62946356/

10-13 07:15