You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何用Python有效检测玻璃样品孔洞图像的边缘?

玻璃半穿透孔洞的低对比度图像边缘检测问题

我在检测玻璃样品上半穿透孔洞的图像边缘时遇到了困难。每张图像包含玻璃样品上切割出的部分孔洞,肉眼可清晰区分玻璃区域与孔洞区域,但所有尝试的边缘检测方法效果都不理想。我认为核心原因是玻璃与孔洞之间对比度不足——孔洞未穿透玻璃全厚度,底部残留的玻璃会将光线散射回相机,进一步拉低了对比度。

已尝试的图像处理方法

  • 模糊处理(高斯模糊、双边模糊)
  • 图像锐化
  • 对比度调整
  • Mean Shift滤波
  • 自适应阈值化
  • Canny边缘检测
  • Sobel边缘检测
  • Watershed分割

拍摄条件限制

拍摄使用工业相机搭配LED环形光源,该光源仅支持开关操作,无法调整光照方向或亮度。尝试调整不同曝光时间与模拟增益后,对比度并未得到有效改善。

当前代码片段

import cv2
image = cv2.imread(r'path/to/images')
blurred = cv2.GaussianBlur(image, (7, 7), 9)
gray = cv2.cvtColor(blurred, cv2.COLOR_BGR2GRAY)
thresh = cv2.adaptiveThreshold(gray, 255,
                            cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 71, 5)
edges = cv2.Canny(thresh, 100, 200)

contours, _ = cv2.findContours(
    edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

output_image = image.copy()
for contour in contours:
    cv2.drawContours(output_image, [contour], -1, (0, 255, 0), 2)
cv2.imshow('Circle Edge', cv2.resize(output_image, (1000, 1000)))
cv2.waitKey(0)
cv2.destroyAllWindows()

目前检测到的边缘会以绿色绘制在原始图像上,但效果不佳。

恳请各位提供有效的边缘检测方案,无论是图像处理算法优化、编程实现思路还是拍摄条件改进建议,都非常感谢!

内容的提问来源于stack exchange,提问作者ladies

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 19:42:35