
我们将在本文中介绍以下高级图像处理操作:
Canny 边缘检测
轮廓和形状识别
Canny 边缘检测:Canny 边缘检测是一种流行的边缘检测算法。它是由 John F. Canny 在 1986 年开发的。它是一个多阶段算法,我们将按如下方式经历每个阶段:
噪声抑制:第一步是使用高斯平滑从图像中去除噪声,这涉及使用高斯核,其中靠近核中心的像素被赋予比远处像素更多的权重。
梯度计算:应用Sobel 滤波器计算图像的梯度以计算边缘强度和方向,该滤波器突出显示 x 和 y 轴上的强度变化。
Non-Maximum Suppression: Non-Maximum Suppression通过遍历上一步生成的梯度矩阵中的所有值来寻找边缘方向强度更大的像素,从而减少边缘的厚度。
双阈值滞后:最后一步使用输入参数下阈值和上限阈值来过滤掉潜在边缘,根据以下标准丢弃不相关的边缘:
如果像素梯度值高于上限阈值,则像素被接受为边缘。
如果像素梯度值低于下限阈值,则像素被拒绝。
如果像素梯度值介于两个阈值之间,则仅当它连接到高于阈值上限的像素时才会被接受。
ImgProc类为 Canny 边缘检测提供了一个Canny方法,该方法采用以下参数:
Source Image: Mat
Output edges: Mat
Lower Threshold: double
Upper Threshold: double
public static Mat cannyEdges(Mat img){
Mat canny = new Mat();
Imgproc.Canny(img,canny,30,100);
return canny;
}
Canny 边缘检测
原始图像

本文介绍了如何使用Java和OpenCV进行图像处理,特别是Canny边缘检测算法的详细步骤,包括噪声抑制、梯度计算、非极大值抑制和双阈值滞后。此外,还讲解了如何查找和分析图像轮廓,用于形状检测。通过二值化图像和findContours方法,可以有效地提取和绘制轮廓,并进行形状分析。
最低0.47元/天 解锁文章

2665

被折叠的 条评论
为什么被折叠?



