Java DIP - Hình ảnh Kim tự tháp

Hình ảnh kim tự tháp không có gì khác ngoài một phương pháp để hiển thị một hình ảnh đa độ phân giải. Lớp dưới cùng là phiên bản hình ảnh có độ phân giải cao nhất và lớp trên cùng là phiên bản hình ảnh có độ phân giải thấp nhất. Kim tự tháp hình ảnh được sử dụng để xử lý hình ảnh ở các tỷ lệ khác nhau.

Trong chương này, chúng tôi thực hiện một số lấy mẫu xuống và lấy mẫu lên trên hình ảnh.

Chúng tôi sử dụng OpenCV chức năng pyrUppyrDown. Chúng có thể được tìm thấy dướiImgprocgói hàng. Cú pháp của nó được đưa ra dưới đây:

Imgproc.pyrUp(source, destination, destinationSize);
Imgproc.pyrDown(source, destination,destinationSize);

Các thông số được mô tả bên dưới:

Sr.No. Mô tả về Thông Số
1

source

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

2

destination

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

3

destinationSize

Nó là kích thước của hình ảnh đầu ra. Theo mặc định, nó được tính là Size ((src.cols * 2), (src.rows * 2)).

Ngoài các phương thức pyrUp và pyrDown, 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 để thực hiện lấy mẫu lên và lấy mẫu xuống trên 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 destination1 = new Mat(source.rows()*2, source.cols()*2,source.type());
         destination1 = source;
         
         Imgproc.pyrUp(source, destination1, new  Size(source.cols()*2   source.rows()*2));
         Highgui.imwrite("pyrUp.jpg", destination1);
         
         source = Highgui.imread("digital_image_processing.jpg", 
         Highgui.CV_LOAD_IMAGE_COLOR);
         
         Mat destination = new Mat(source.rows()/2,source.cols()/2, source.type());
         destination = source;
         Imgproc.pyrDown(source, destination, new Size(source.cols()/2,  source.rows()/2));
         Highgui.imwrite("pyrDown.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

Trên hình ảnh gốc, pyrUp (Lấy mẫu LÊN) và pyrDown (Lấy mẫu Xuống) được thực hiện. Đầu ra sau khi lấy mẫu như hình dưới đây -

Hình ảnh PyrUP

Hình ảnh pyrDown