OpenCV - Hình ảnh Kim tự tháp
Kim tự tháp là một phép toán trên một hình ảnh trong đó,
Hình ảnh đầu vào ban đầu được làm mịn bằng cách sử dụng một bộ lọc làm mịn cụ thể (ví dụ: Gaussian, Laplacian) và sau đó hình ảnh được làm mịn được lấy mẫu con.
Quá trình này được lặp lại nhiều lần.
Trong quá trình vận hành kim tự tháp, độ mịn của hình ảnh được tăng lên và giảm độ phân giải (kích thước).
Kim tự tháp lên
Trong Pyramid Up, hình ảnh ban đầu được lấy mẫu lên và sau đó được làm mờ. Bạn có thể thực hiện thao tác Pyramid Up trên một hình ảnh bằng cách sử dụngpyrUP() phương pháp của imgproclớp học. Sau đây là cú pháp của phương thức này:
pyrUp(src, dst, dstsize, borderType)
Phương thức này chấp nhận các tham số sau:
src - Một đối tượng của lớp Mat đại diện cho hình ảnh nguồn (đầu vào).
mat - Một đối tượng của lớp Mat đại diện cho hình ảnh đích (đầu ra).
size - Một đối tượng của lớp Size đại diện cho kích thước mà hình ảnh sẽ được tăng hoặc giảm.
borderType - Một biến kiểu số nguyên đại diện cho kiểu đường viền sẽ được sử dụng.
Thí dụ
Chương trình sau đây trình bày cách thực hiện thao tác Pyramid Up trên một hình ảnh.
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Size;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class PyramidUp {
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/chap13/pyramid_input.jpg";
Mat src = Imgcodecs.imread(file);
// Creating an empty matrix to store the result
Mat dst = new Mat();
// Applying pyrUp on the Image
Imgproc.pyrUp(src, dst, new Size(src.cols()*2, src.rows()*2), Core.BORDER_DEFAULT);
// Writing the image
Imgcodecs.imwrite("E:/OpenCV/chap13/pyrUp_output.jpg", dst);
System.out.println("Image Processed");
}
}
Giả sử rằng sau đây là hình ảnh đầu vào pyramid_input.jpg được chỉ định trong chương trình trên.
Đầu ra
Khi thực hiện chương trình, bạn sẽ nhận được kết quả sau:
Image Processed
Nếu bạn mở đường dẫn được chỉ định, bạn có thể quan sát hình ảnh đầu ra như sau:
Kim tự tháp xuống
Trong Pyramid Down, hình ảnh ban đầu bị mờ và sau đó được lấy mẫu xuống. Bạn có thể thực hiện thao tác Pyramid Down trên một hình ảnh bằng cách sử dụngpyrDown() phương pháp của imgproclớp học. Sau đây là cú pháp của phương thức này:
pyrDown(src, dst, dstsize, borderType)
Phương thức này chấp nhận các tham số sau:
src - Một đối tượng của lớp Mat đại diện cho hình ảnh nguồn (đầu vào).
mat - Một đối tượng của lớp Mat đại diện cho hình ảnh đích (đầu ra).
size - Một đối tượng của lớp Size đại diện cho kích thước mà hình ảnh sẽ được tăng hoặc giảm.
borderType - Một biến kiểu số nguyên đại diện cho kiểu đường viền sẽ được sử dụng.
Thí dụ
Chương trình sau đây trình bày cách thực hiện thao tác Pyramid Down trên hình ảnh.
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Size;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class PyramidDown {
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/chap13/pyramid_input.jpg";
Mat src = Imgcodecs.imread(file);
// Creating an empty matrix to store the result
Mat dst = new Mat();
// Applying pyrDown on the Image
Imgproc.pyrDown(src, dst, new Size(src.cols()/2, src.rows()/2),
Core.BORDER_DEFAULT);
// Writing the image
Imgcodecs.imwrite("E:/OpenCV/chap13/pyrDown_output.jpg", dst);
System.out.println("Image Processed");
}
}
Giả sử rằng sau đây là hình ảnh đầu vào pyramid_input.jpg được chỉ định trong chương trình trên.
Đầu ra
Khi thực hiện chương trình, bạn sẽ nhận được kết quả sau:
Image Processed
Nếu bạn mở đường dẫn được chỉ định, bạn có thể quan sát hình ảnh đầu ra như sau:
Lọc dịch chuyển trung bình
Trong hoạt động Kim tự tháp Dịch chuyển Trung bình, bước đầu tiên của việc phân đoạn dịch chuyển trung bình của một hình ảnh được thực hiện.
Bạn có thể thực hiện thao tác Lọc Dịch chuyển Trung bình theo hình kim tự tháp trên một hình ảnh bằng cách sử dụng pyrDown() phương pháp của imgproclớp học. Sau đây là cú pháp của phương thức này.
pyrMeanShiftFiltering(src, dst, sp, sr)
Phương thức này chấp nhận các tham số sau:
src - Một đối tượng của lớp Mat đại diện cho hình ảnh nguồn (đầu vào).
mat - Một đối tượng của lớp Mat đại diện cho hình ảnh đích (đầu ra).
sp - Một biến kiểu double đại diện cho bán kính cửa sổ không gian.
sr - Một biến kiểu double đại diện cho bán kính cửa sổ màu.
Thí dụ
Chương trình sau đây trình bày cách thực hiện thao tác Lọc Dịch chuyển Trung bình trên một hình ảnh nhất định.
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class PyramidMeanShift {
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/chap13/pyramid_input.jpg";
Mat src = Imgcodecs.imread(file);
// Creating an empty matrix to store the result
Mat dst = new Mat();
// Applying meanShifting on the Image
Imgproc.pyrMeanShiftFiltering(src, dst, 200, 300);
// Writing the image
Imgcodecs.imwrite("E:/OpenCV/chap13/meanShift_output.jpg", dst);
System.out.println("Image Processed");
}
}
Giả sử rằng sau đây là hình ảnh đầu vào pyramid_input.jpg được chỉ định trong chương trình trên.
Đầu ra
Khi thực hiện chương trình, bạn sẽ nhận được kết quả sau:
Image Processed
Nếu bạn mở đường dẫn được chỉ định, bạn có thể quan sát hình ảnh đầu ra như sau: