赞
踩
项目里需要用到边缘检测相关的内容,需要对预测的病灶进行勾勒(模型识别出来是白色实心的),涉及到了边缘检测的知识点.这本该是本科图像处理课上应该掌握的知识点,但是没好好学,再次感受到出来混迟早都要还的,为了彻底搞懂,特此记录。
官网上的解释都太简单难懂了,本篇内容借鉴了一些https://zhuanlan.zhihu.com/p/42122107,这位大哥讲的特别好,反正我听懂了。
我们先来看官网怎么解释的https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_canny/py_canny.html
它说Canny边缘检测分四个阶段
1.去噪。通过一个5*5的高斯滤波器完成;
2.找图像的密度梯度。听起来有点难懂,实际上就是找“边缘”,边缘两侧图像的亮度一般会相差比较大。通过分别在图像的水平和垂直方向利用Sobel kernel得到两个方向的梯度。
3.过滤非最大值。在高斯滤波中,边缘很有可能被放大了。这个步骤使用一个规则来过滤不是边缘的点,使边缘宽度尽可能是一个像素点。
4.使用两个值域来检测边缘。一般情况下,使用一个阀值来检测边缘,但是这样做未免太武断了。如果能够使用启发式的方法确定一个上阀值和下阀值,位于下阀值之上的都可以作为边缘,这样就可能提高准确度。它设置两个阀值(threshold),分别为maxVal和minVal。其中大于maxVal的都被检测为边缘,而低于minval的都被检测为非边缘。对于中间的像素点,如果与确定为边缘的像素点邻接,则判定为边缘;否则为非边缘。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。