gpt4 book ai didi

Python:使用 OpenCV 返回图像中任意/ dentry 形状的位置和大小

转载 作者:太空宇宙 更新时间:2023-11-03 23:04:49 24 4
gpt4 key购买 nike

我对图像处理和对象检测非常陌生。我想提取/识别下图中 dentry 的位置和尺寸:

Image processing

这是我迄今为止使用 OpenCV 尝试过的内容:

import cv2
import numpy as np

planets = cv2.imread('model.png', 0)
canny = cv2.Canny(planets, 70, 150)
circles = cv2.HoughCircles(canny,cv2.HOUGH_GRADIENT,1,40, param1=10,param2=16,minRadius=10,maxRadius=80)

circles = np.uint16(np.around(circles))

for i in circles[0,:]:
# draw the outer circle
cv2.circle(planets,(i[0],i[1]),i[2],(255,0,0),2)

# draw the center of the circle
cv2.circle(planets,(i[0],i[1]),2,(255,0,0),3)

cv2.imshow("HoughCirlces", planets)
cv2.waitKey()
cv2.destroyAllWindows()

这是我在应用 canny 过滤器后得到的: applied canny filter

这是最终结果: detected teeth

我不知道从这里去哪里。我想鉴定所有的 dentry 。我该怎么做?

我真的很感激任何帮助..

最佳答案

请注意, dentry 结构或多或少是一条抛物线(上下颠倒)。如果您能以某种方式猜出定义这些 Blob ( dentry )质心的抛物线形状,那么您的问题就可以简化到合理的程度。我已经显示了一条穿过 dentry 中心的红线。

enter image description here

我建议您按以下方式处理它:

  1. 二值化您的图像(背景=0,否则为 1)。你可以使用 sklearn.preprocessing.binarize .
  2. 计算所有非零像素的质心。这是图像中中央的蓝色圆圈。调用此 structure_centroid。看到这个:How to center the nonzero values within 2D numpy array? .
  3. structure_centroid 的位置为中心,制作整个图像的极切片。我已经展示了这种极地切片(三角形半透明)的卡通图像。覆盖完整的 360 度。看到这个:polarTransform library .
  4. 确定每个极切片的非零像素的质心位置。看这些:
  5. 包含这些质心的数组为您提供了 dentry 平均位置的轨迹(路径)。调用此 centroid_path
  6. 在您能够检测到的最接近 centroid_path 的圆上运行消除/选择算法。使用阈值距离来删除异常值。

这应该可以让您很好地近似于圆圈的 dentry 。

希望对您有所帮助。

关于Python:使用 OpenCV 返回图像中任意/ dentry 形状的位置和大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58704188/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com