Java DIP - Áp dụng bộ lọc Gaussian

Trong chương này, chúng tôi áp dụng bộ lọc Gaussian cho một hình ảnh làm mờ một hình ảnh. Chúng ta sẽ sử dụng hàm GaussianBlur của OpenCV để áp dụng bộ lọc Gaussian cho hình ảnh. Nó có thể được tìm thấy trong gói Imgproc. Cú pháp của nó được đưa ra dưới đây:

Imgproc.GaussianBlur(source, destination,Size,SigmaX);

Các đối số của hàm được mô tả bên dưới:

Sr.No. Lập luận & Mô tả
1

source

Nó là hình ảnh nguồn.

2

destination

Nó là hình ảnh đích.

3

Size

Đó là kích thước hạt nhân Gaussian.

4

SigmaX

Nó là độ lệch chuẩn của hạt nhân Gaussian theo hướng X.

Ngoài phương thức GaussianBlur, còn có các phương thức khác được cung cấp bởi lớp Imgproc. Chúng được mô tả ngắn gọn -

Sr.No. Phương pháp & Mô tả
1

cvtColor(Mat src, Mat dst, int code, int dstCn)

Nó chuyển đổi một hình ảnh từ không gian màu này sang không gian màu khác.

2

dilate(Mat src, Mat dst, Mat kernel)

Nó làm giãn hình ảnh bằng cách sử dụng một phần tử có cấu trúc cụ thể.

3

equalizeHist(Mat src, Mat dst)

Nó cân bằng biểu đồ của một hình ảnh thang độ xám.

4

filter2D(Mat src, Mat dst, int depth, Mat kernel, Point anchor, double delta)

Nó biến đổi một hình ảnh với hạt nhân.

5

GaussianBlur(Mat src, Mat dst, Size ksize, double sigmaX)

Nó làm mờ hình ảnh bằng cách sử dụng bộ lọc Gaussian.

6

integral(Mat src, Mat sum)

Nó tính tích phân của một hình ảnh.

Thí dụ

Ví dụ sau minh họa việc sử dụng lớp Imgproc để áp dụng bộ lọc Gaussian cho một hình ảnh.

import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.core.Size;

import org.opencv.highgui.Highgui;
import org.opencv.imgproc.Imgproc;


public class Main {
   public static void main( String[] args ) {
   
      try {
         System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
         
         Mat source = Highgui.imread("digital_image_processing.jpg",
         Highgui.CV_LOAD_IMAGE_COLOR);
         
         Mat destination = new Mat(source.rows(),source.cols(),source.type());
         Imgproc.GaussianBlur(source, destination,new Size(45,45), 0);
         Highgui.imwrite("Gaussian45.jpg", destination);
      
      } catch (Exception e) {
         System.out.println("Error:" + e.getMessage());
      }
   }
}

Đầu ra

Khi bạn thực thi mã đã cho, kết quả sau sẽ được nhìn thấy:

Ảnh gốc

Khi hình ảnh gốc này được đối chiếu với bộ lọc Gaussian có kích thước 11 và 45, kết quả sau sẽ được nhìn thấy.

Bộ lọc Gaussian cỡ 11

Bộ lọc Gaussian cỡ 45