OpenCV - 拉普拉斯变换



拉普拉斯算子也是一种微分算子,用于查找图像中的边缘。它是一个二阶导数掩膜。在这个掩膜中,我们还有两种进一步的分类,一种是正拉普拉斯算子,另一种是负拉普拉斯算子。

与其他算子不同,拉普拉斯算子不会以任何特定方向提取边缘,而是根据以下分类提取边缘。

  • 内边缘
  • 外边缘

您可以使用 **imgproc** 类的 **Laplacian()** 方法对图像执行 **拉普拉斯变换** 操作,以下是此方法的语法。

Laplacian(src, dst, ddepth)

此方法接受以下参数:

  • **src** - 一个表示此操作的源(输入图像)的 **Mat** 对象。

  • **dst** - 一个表示此操作的目标(输出图像)的 **Mat** 对象。

  • **ddepth** - 一个整型变量,表示目标图像的深度。

示例

以下程序演示了如何对给定图像执行拉普拉斯变换操作。

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class LaplacianTest {
   public static void main(String args[]) {
      // Loading the OpenCV core library
      System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

      //Reading the Image from the file and storing it in to a Matrix object
      String file ="E:/OpenCV/chap18/laplacian_input.jpg";
      Mat src = Imgcodecs.imread(file);

      // Creating an empty matrix to store the result
      Mat dst = new Mat();

      // Applying GaussianBlur on the Image
      Imgproc.Laplacian(src, dst, 10);

      // Writing the image
      Imgcodecs.imwrite("E:/OpenCV/chap18/laplacian.jpg", dst);

      System.out.println("Image Processed");
   }
}

假设以上程序中指定了以下输入图像 **laplacian_input.jpg**。

Laplacian Input

输出

执行程序后,您将获得以下输出:

Image Processed

如果您打开指定的路径,您可以观察到输出图像如下:

Laplacian Output
广告