购买域名后如何建设网站企业公示信息查询系统 江苏
web/
2025/10/3 18:19:43/
文章来源:
购买域名后如何建设网站,企业公示信息查询系统 江苏,广东网站建设十大品牌,公司做网站费用入什么科目打印一个图片可以做出一个函数#xff1a;
def cv_show(img,name):cv2.imshow(name,img)cv2.waitKey()cv2.destroyAllWindows()
1、Canny边缘检测流程
Canny是一个科学家在1986年写了一篇论文#xff0c;所以用自己的名字来命名这个检测算法#xff0c;Canny边缘检测算法…打印一个图片可以做出一个函数
def cv_show(img,name):cv2.imshow(name,img)cv2.waitKey()cv2.destroyAllWindows()
1、Canny边缘检测流程
Canny是一个科学家在1986年写了一篇论文所以用自己的名字来命名这个检测算法Canny边缘检测算法这里写了5步流程会用到之前《openCV实战-系列教程》的内容。
使用高斯滤波器以平滑图像滤除噪声。计算图像中每个像素点的梯度强度和方向。应用非极大值Non-Maximum Suppression抑制以消除边缘检测带来的杂散响应。应用双阈值Double-Threshold检测来确定真实的和潜在的边缘。通过抑制孤立的弱边缘最终完成边缘检测。
滤波Canny检测算法使用的滤波器是高斯滤波器通过滤波器可以对图像进行平滑处理。所以第一步需要过滤噪声当进行检测的时候肯定需要计算梯度当遇到噪音点也会发生梯度的变化所以为了更好的做到边缘检测第一步需要去噪。
梯度之前我们计算梯度的时候只需要计算大小就行了但是现在需要计算一下方向所以梯度计算包括强度和方向。
非极大值抑制计算的梯度大小有不同比如在一个3*3的卷积核中有些梯度比较小相对大的就会保留下来小的梯度就不会保留只留下最明显的。 比如在人脸检测中需要把人脸部分打出一个框的标识计算的时候会计算出多个框每个框都有一个概率值最后只保留概率最大的那个框而其他的框就会被抑制掉。
双阈值计算边界的时候会计算出多个候选值在候选值中会再进行计算只保留最接近真实的那个候选值边界。
完成边缘检测将前面的结果都组合起来完成边缘检测。
2、高斯滤波器 在前面的内容中已经讲解过中间点比较大越边缘的点越小图中的H对高斯滤波器的滤波核进行归一化处理然后再将滤波核H框住的区域A对应位置相乘再求和得到一个结果e。
3、梯度方向 Canny计算梯度使用的是Sobel算子前面已经讲过这个内容 Sobel算子中需要分别计算水平和竖直两个方向的Gx和GyGx和Gy的计算如上图将这个结果融合到一起G计算方法如上图
梯度方向就是θ值通过Gx和Gy计算得到计算方法如上图。
4、非极大值抑制
4.1 方法A
如图所示C点是目标像素点需要判断C是不是一个极大值点然后红色方框是它的周围的8个像素蓝色线是C点的梯度方向梯度方向和边界方向应该是垂直的关系。 如图所示g1、g2、g3、g4、c都是一个像素点而Q、Z是梯度方向与方框的交点Q和Z不是一个像素是一个亚像素使用线性插值法计算这个亚像素。
首先g1、g2、g3、g4的梯度梯度幅值上一节讲到的梯度计算都能够计算出来 Q就是g1和g2之间的用M(dtmp1)表示Q点梯度梯度幅值它的计算方法在上图的公式已经给出w和(1-w)都是代表的是一个权重是Q点到g1、g2点的距离比上g1到g2的距离。得到权重乘上g1和g2的梯度就得到了Q点的梯度。
通过比较C、Q、Z的梯度值如果C比Q、Z都要大则说明C点是一个极大值就可以将C点保留下来。
4.2 方法B 由于方法A太复杂了将它简化成方法B将一个像素周围的8个像素分解成8个方向。在方法1中如果过了g1和g4就不需要做插值了。方法B就是判断当前的方向和这8个方向那个最近就是哪个方向。然后这个方向上除了目标像素值之外还有两个点如图所示假如分别是A、B、C如果目标点A比B、C的梯度都要小那么A点就是极大值点。
5、双阈值检测 maxVal即max value意思是如果算出来的梯度值比maxVal假如是100大那就是边界。
所以A点是边界如果红色线下方还有一个D点那么就舍弃这个点这个点的梯度值比minVal小。
如果是在minval和maxval之间就要分开讨论了比如C点和边界点A连接在了一起那么C点就可以判断为一个边界点否则比如B点就不是了
6、边缘检测效果实现
这里的80和150就是minVal和maxVal
imgcv2.imread(lena.jpg,cv2.IMREAD_GRAYSCALE)v1cv2.Canny(img,80,150)
v2cv2.Canny(img,50,100)res np.hstack((v1,v2))
cv_show(res,res)
打印结果 所以minVal和maxVal的设定是比较重要的第5节中如果对minval进行调整那么提到的D点就有可能判定为边界点因此会提取出更多的细节。
再导入一张图片将两个参数设置的更大一些来对比
imgcv2.imread(car.png,cv2.IMREAD_GRAYSCALE)v1cv2.Canny(img,120,250)
v2cv2.Canny(img,50,100)res np.hstack((v1,v2))
cv_show(res,res)
打印结果
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86350.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!