Java中的OpenCV-图像处理

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

7c20c3b44b53ceb6527f364764e0f907.jpeg

我们将在本文中介绍以下高级图像处理操作:

  • Canny 边缘检测

  • 轮廓和形状识别

Canny 边缘检测:Canny 边缘检测是一种流行的边缘检测算法。它是由 John F. Canny 在 1986 年开发的。它是一个多阶段算法,我们将按如下方式经历每个阶段:

  1. 噪声抑制:第一步是使用高斯平滑从图像中去除噪声,这涉及使用高斯核,其中靠近核中心的像素被赋予比远处像素更多的权重。

  2. 梯度计算:应用Sobel 滤波器计算图像的梯度以计算边缘强度和方向,该滤波器突出显示 x 和 y 轴上的强度变化。

  3. Non-Maximum Suppression: Non-Maximum Suppression通过遍历上一步生成的梯度矩阵中的所有值来寻找边缘方向强度更大的像素,从而减少边缘的厚度。

  4. 双阈值滞后:最后一步使用输入参数下阈值和上限阈值来过滤掉潜在边缘,根据以下标准丢弃不相关的边缘:

    如果像素梯度值高于上限阈值,则像素被接受为边缘。

    如果像素梯度值低于下限阈值,则像素被拒绝。

    如果像素梯度值介于两个阈值之间,则仅当它连接到高于阈值上限的像素时才会被接受。

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);
       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值