gpt4 book ai didi

python - 稳健且可自动化的液滴拟合

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

我正在尝试对一组灰度图像进行图像分析,如下图所示:

typical image

主要目标是能够测量椭圆形液滴的尺寸并确定它们的中心坐标。我在 openCV 和 scikit-image 中尝试过 Hough Circular Transform。与 openCV 相比,我目前看到的所有 scikit-images 示例运行速度都非常慢。

我使用这段代码取得了一定的成功(取自示例):

img = read_img[600:,:]
img = cv2.medianBlur(img,5)
cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)

circles = cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,30,
param1=45,param2=20,minRadius=1,maxRadius=45)

circles = np.uint16(np.around(circles))
for i in circles[0,:]:
# draw the outer circle
cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2)
# draw the center of the circle
cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3)

cv2.imshow('detected circles',cimg)
fig, ax = plt.subplots(ncols=1, nrows=1, figsize=(20, 20))
ax.imshow(cimg)

它检测到主要的液滴,但未能捕捉到三个较小的液滴。

我能够构建的最佳阈值是使用 openCV 的这些参数

th2 = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C,\cv2.THRESH_BINARY,15,5)

但是,我仍然无法使用上面的代码找到较小的液滴。

我有几千张图片需要处理。我需要算法能够自动找到变换或阈值化的最佳参数。到目前为止,我不知道如何实现这样的事情。

任何有关正确实现的建议将不胜感激!

最佳答案

我只是建议了一个可能的预处理步骤,而不是一个完整的解决方案。您可以执行 adaptive thresholding在图像的绿色 channel 上。

代码:

img = cv2.imread('C:/Users/Jackson/Desktop/droplet.jpg', 1)

#--- Resized the image to half of its original dimension --
img = cv2.resize(img, (0, 0), fx = 0.5, fy = 0.5)

#--- I narrowed down to these values after some rigorous trial-and-error ---
th3 = cv2.adaptiveThreshold(img[:,:,1], 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C,\
cv2.THRESH_BINARY, 63, 5)

cv2.namedWindow('Original', 0)
cv2.imshow('Original', img)
cv2.namedWindow('th3', 0)
cv2.imshow('th3', th3)
cv2.waitKey()
cv2.destroyAllWindows()

结果:

enter image description here

您可以从这里继续。

关于python - 稳健且可自动化的液滴拟合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51124738/

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