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】:thAir
和 thBone
的值是多少? 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 边缘检测改进的主要内容,如果未能解决你的问题,请参考以下文章