openCV Canny 边缘检测改进

Posted

技术标签:

【中文标题】openCV Canny 边缘检测改进【英文标题】:openCV Canny edge detection improvement 【发布时间】:2019-11-13 23:49:20 【问题描述】:

我正在尝试在我的 python 代码中使用 openCV Canny 边缘检测器。我想沿着对象的边缘进行边缘检测,对应于皮肤。

我做到了:

**im = img[0]
bw = im > thAir
eg1 = cv2.Canny(np.uint8(im),thAir,thBone)
eg2 = cv2.Canny(np.uint8(bw), 0,1)
fig,ax = plt.subplots(1,4)
ax[0].imshow(im)
ax[1].imshow(bw)
ax[2].imshow(eg1)
ax[3].imshow(eg2)
plt.show()**

thBone 是最大值,thAir 是最小值

但是,显然,检测不起作用......有什么改进的想法吗?

imshow results

【问题讨论】:

我建议您使用 cv2.inRange 进行颜色阈值处理。然后对阈值结果进行边缘检测。 我认为由于该图的颜色图存在混淆。其实是灰度图…… 【参考方案1】:

thAirthBone 的值是多少? Canny 边缘检测器的准确性很大程度上取决于这些阈值的选择。

考虑使用形态学。您可以使用形态梯度检测此类对象(连接,内部没有孔)的边缘,这不依赖于阈值。 形态转换的文档: https://docs.opencv.org/2.4.13.7/modules/imgproc/doc/filtering.html?highlight=morphologyex#cv2.morphologyEx

【讨论】:

感谢您的建议。目前我只使用skimage,因为opencv不支持dicom图像导入..你知道skimage库中哪个函数与opencv的形态梯度参数兼容吗?

以上是关于openCV Canny 边缘检测改进的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV入门指南第三篇Canny边缘检测

Python,Opencv cv2.Canny()边缘检测

OpenCV——Canny边缘检测

opencv 检测图像边缘 Canny算法应用

从 OpenCV Canny 边缘检测器获取角度

OpenCV中的图像处理 —— 图像梯度+Canny边缘检测+图像金字塔