图像处理&xFF1A;如何利用opencv提取不同圆间的胶结矩阵

图像处理&xFF1A;如何利用opencv提取不同圆间的胶结矩阵,opencv,Opencv,CT扫描图像,其中圆圈由水泥基质连接。我想提取水泥基质的体积。然而,使用分水岭算法无法找到分割圆和水泥矩阵的完美阈值。 我还尝试使用OpenCV HoughCircles和FindContentours来检测圆。但结果已经足够完美了。也许我只是对OpenCV不够熟悉。附件是我的图片,我需要提取不同圆之间的胶结矩阵。你应该能用眼睛清楚地看到它。然而,所有的圆检测算法似乎都不起作用 注意,我甚至在这里查看并尝试了该解决方案,因此它不是该问题的重复:Opencv将接触的圆划分为单个圆 另一种解决方案:

CT扫描图像,其中圆圈由水泥基质连接。我想提取水泥基质的体积。然而,使用分水岭算法无法找到分割圆和水泥矩阵的完美阈值。 我还尝试使用OpenCV HoughCircles和FindContentours来检测圆。但结果已经足够完美了。也许我只是对OpenCV不够熟悉。附件是我的图片,我需要提取不同圆之间的胶结矩阵。你应该能用眼睛清楚地看到它。然而,所有的圆检测算法似乎都不起作用

注意,我甚至在这里查看并尝试了该解决方案,因此它不是该问题的重复:Opencv将接触的圆划分为单个圆

另一种解决方案:OpenCV检测带有噪声的部分圆

这是我需要使用的源图像

原始图像:

HoughCircles图像:

守则:

enter code here
import cv2
import numpy as np

def houghdetect(image,img):
    circles = cv2.HoughCircles(image, cv2.HOUGH_GRADIENT, 1, 50, param1 = 20, param2 = 27, minRadius = 25, maxRadius = 50)
    circles = np.uint16(np.around(circles))

    for i in circles[0, 1:]:
        cv2.circle(img, (i[0], i[1]), i[2], (0, 0, 255), 2)

    cv2.namedWindow('detect_circle', 0)
    cv2.resizeWindow('detect_circle', 699, 575)
    cv2.imshow('detect_circle', img)     


img = cv2.imread('C:\THU\python\learn\outputtif\\5.jpg')
dst = cv2.GaussianBlur(img, (3,3), 0)
gray = cv2.cvtColor(dst, cv2.COLOR_BGR2GRAY)
ret, threshold = cv2.threshold(gray, 135, 255, cv2.THRESH_TOZERO)

Gthreshold = cv2.GaussianBlur(threshold, (5,5), 0)
cv2.namedWindow('Gthreshold', 0)
cv2.resizeWindow('Gthreshold', 699, 575)
cv2.imshow("Gthreshold", Gthreshold)
houghdetect(Gthreshold, img)

cv2.waitKey()
cv2.destroyAllWindows()

@米卡,你有什么好主意来解决这个问题吗?你能发布你的代码吗?@Christoff代码附在附件中。@米卡,你有什么好主意来解决这个问题吗?你能发布你的代码吗?@Christoff代码附在附件中。